如何从C中的公钥创建AuthorityKeyIdentifier?

时间:2013-11-29 12:55:43

标签: c openssl authoritykeyidentifier

我正在使用openssl创建自签名证书。

我使用openssl函数RSA_generate_key()创建了一个密钥对:

key = RSA_generate_key(1024, 65537, null, 0);

现在,我想为自签名证书生成Authority Key Identifier

RFC说:

  

keyIdentifier字段的值应该从中派生出来      用于验证证书签名的公钥或生成唯一值的方法。生成密钥的两种常用方法      公共密钥中的标识符在第4.2.1.2节中描述。​​

好。我们来看一下。在上面提到的4.2.1.2节中,描述说:

  

(1)keyIdentifier由160位SHA-1哈希组成              BIT STRING subjectPublicKey的值(不包括标签,              长度和未使用的位数)。

     

(2)keyIdentifier由一个四位类型字段组成              值0100后跟最低有效60位              BIT STRING值的SHA-1哈希值              subjectPublicKey(不包括标签,长度和数量              未使用的比特)。

如果我想使用版本(1):如何获取要散列的数据以创建有效的授权密钥标识符?

1 个答案:

答案 0 :(得分:1)

首先,您需要创建证书。 然后添加权限密钥标识符扩展具有以下内容:

add_ext(YourX509SelfSignedCert, NID_authority_key_identifier, "keyid,issuer");

你也可以只使用keyid, 有一篇关于使用here

的文章