我们的PKCS#11库错过C_CreateObject的实施。 跳进其实施之前,我想知道在哪里C_CreateObject应该用来代替C_GenerateKey / C_GenerateKeyPair实例。
Answer 1:
C_CreateObject
进口现有数据对象,证书和/或密钥生成外部到器件中。 C_GenerateKey
生成装置内新的对称密钥(DES / AES / ...)。 C_GenerateKeyPair
生成新的非对称密钥对(RSA / ECC / ...)在装置内部。
Answer 2:
该PKCS#11对待密钥对(公钥和私钥),证书和密钥作为记号对象。 而且也有刚刚拥有一些数据的数据对象。
该C_GenerateKey
将创建一个Secret Key
对象。
该C_GenerateKeyPair
将创建一个Public Key
和Private Key
对象(无论是公共密钥和私有密钥相结合将构成密钥对)。
当你说C_GenerateKey
的PKCS#11知道它必须生成一个密钥对象,并预计密钥对象模板。 而同样的C_GenerateKeyPair
,它知道它必须创建一个公钥对象和一个私钥对象,并期望他们各自的对象模板。
但是,当你说C_CreateObject
,你必须指定要创建的对象类型,并在正确的对象模板传递也是如此。 考虑这个像一个抽象的版本C_GenerateXXX
方法。
文章来源: how C_CreateObject , C_GenerateKey and C_GenerateKeyPair are different ?