をやっている場合は、私が最も簡単な方法は、メモリBIO使用することだと思う:精巣の証明のために、私の場合は
...
X509 *lcert = NULL;
BUF_MEM *bptr = NULL;
char *buf = NULL;
int loc;
FILE *f = fopen("your cert goes here", "rb");
if((lcert = PEM_read_X509(f, &lcert, NULL, NULL)) == NULL){
// error handling...
}
loc = X509_get_ext_by_NID(lcert, NID_key_usage, -1);
X509_EXTENSION *ex = X509_get_ext(lcert, loc);
BIO *bio = BIO_new(BIO_s_mem());
if(!X509V3_EXT_print(bio, ex, 0, 0)){
// error handling...
}
BIO_flush(bio);
BIO_get_mem_ptr(bio, &bptr);
// now bptr contains the strings of the key_usage, take
// care that bptr->data is NOT NULL terminated, so
// to print it well, let's do something..
buf = (char *)malloc((bptr->length + 1)*sizeof(char));
memcpy(buf, bptr->data, bptr->length);
buf[bptr->length] = '\0';
// Now you can printf it or parse it, the way you want...
printf ("%s\n", buf);
...
を、それが"デジタル署名、否認防止、鍵の暗号化"を印刷しました
他にも、ASN1_BIT_STRING *のような使い方があります。上記があなたのニーズに合わない場合は、私はあなたを見せてくれるでしょう。
よろしくお願いいたします。
私はこのスレッドで可能な解決策を提案します:http://stackoverflow.com/questions/9991147/how-to-read-the-keyusage-of-a-x509-v3-certificate/24714773#24714773 –