关于USBKEY的CSP学习

   CSP的框架已经定型,网上以及MSDN中也有很多关于CSP的详细资料简介。下面说一下自己学习CSP的经历,仅供参考……

      首先,要先了解一下CSP各个函数的作用、使用流程和怎么搭配使用,这些例子在网上跟MSDN中有很多。建议不要只看代码,亲自动手写一下,效果比较好。

      熟悉了CSP体系的框架,那就要实现自己的CSP的内容了。一般是关联硬件使用的。我所接触的是USBKEY。所以,我硬件是USBKEY为主的。具体的,我想每一个公司应该都有自己的一套的东西了,就不细说了。我说要说的是怎么去理解CSP使用的内容。

     一般来说,CSP的一些HASH算法、是由我们来决定的,我们定义了那一些HASH算法,那么在使用CSP的时候,就会有那些HASH 算法。一般MD5的摘要结果为16个字节,SHA1的摘要结果为20个字节,SM3的摘要结果为20个字节。通常我们会定义一个结构体来保存这些算法的的ALG_ID、默认密钥长度、最小密钥长度、最大密钥长度等内容。从这里我们可以知道CSP支持那一些HASH算法,当然如果是跟硬件打通信,硬件也必须的支持这些HASH算法的。配合相应的COS指令来进行通信。

    CSP的里一个重要的概念应该是容器跟算法对象吧。一般来说,下载证书 CSP会先判断容器是否存在,如果存在就先删除,然后再重新创建容器(创建容器 一般需要用户权限),生成密钥对,证书导入(一般设计都是密钥对和证书放在同一个容器里)……当然下载证书 走的是软算法,所以一般需要验签的过程。验签一般需要对HASH的结果补码跟硬件签完名的结果比较,如果一样,则说明数据是对的。至于HASH的结果补码的内容:一般是硬件里面的补码加验签结果。我们需要在程序里,保存硬件里面补码的数据,然后对签名的结果进行然算法解密,对解密的结果进行补码(硬件里面的补码),来有效验证数据的真实性。

      未完待续……

原文地址:https://www.cnblogs.com/whbCNW/p/3636108.html