对于 PKI 证书生成和设置序列号,我使用了RAND_bytes
获取 20 个字节的随机序列号,现在我希望将此 char *
设置为证书序列号,似乎是 ASN1_INTEGER *
类型
尝试过 ASN1_TYPE_set_octetstring(ASN1_TYPE *, unsigned char *, len)
但由于它采用 ASN1_TYPE *
而不是 ASN1_INTEGER*
它导致崩溃
如何在 unsigned char * 和 ASN1_INTEGER
之间转换?
谢谢,
我很确定这就是您要查找的内容,但我可能是错的。如果您想要一个 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);
我是一名优秀的程序员,十分优秀!