对于PKI证书生成和设置序列号,我使用RAND_bytes获取20个字节的随机序列号,现在我希望将这个char *设置为证书的序列号,这似乎是ASN1_INTEGER *类型的。
尝试过ASN1_TYPE_set_octetstring(ASN1_TYPE *, unsigned char *, len),但是由于它需要ASN1_TYPE *而不是ASN1_INTEGER*,所以它崩溃了
如何在未签名的char * to ASN1_INTEGER之间进行转换?
谢谢,
发布于 2014-04-24 08:21:51
我很确定这就是你要找的,但我可能错了。如果您想要一个20字节的ASN1_INTEGER,一种方法是首先通过BIGNUM库发送它。
unsigned char data[20] = {0};
RAND_bytes(data, sizeof(data));
data[0] &= 0x7F;
// build big number from our bytes
BIGNUM* bn = BN_new();
BN_bin2bn(data, sizeof(data), bn);
// build the ASN1_INTEGER from our BIGNUM
ASN1_INTEGER* asnInt = ASN1_INTEGER_new();
BN_to_ASN1_INTEGER(bn, asnInt);
// TODO: use your ASN1_INTEGER
// cleanup
ASN1_INTEGER_free(asnInt);
BN_free(bn);https://stackoverflow.com/questions/23262771
复制相似问题