C_CreateObject,C_GenerateKey和C_GenerateKeyPair有何不同

2019-09-27 23:58发布

我们的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 KeyPrivate Key对象(无论是公共密钥和私有密钥相结合将构成密钥对)。

当你说C_GenerateKey的PKCS#11知道它必须生成一个密钥对象,并预计密钥对象模板。 而同样的C_GenerateKeyPair ,它知道它必须创建一个公钥对象和一个私钥对象,并期望他们各自的对象模板。

但是,当你说C_CreateObject ,你必须指定要创建的对象类型,并在正确的对象模板传递也是如此。 考虑这个像一个抽象的版本C_GenerateXXX方法。



文章来源: how C_CreateObject , C_GenerateKey and C_GenerateKeyPair are different ?
标签: pkcs#11