Tôi đang sử dụng openssl để phân tích chứng chỉ X509. Tôi quản lý để nhận tiện ích, nhưng tôi không biết cách trích xuất giá trị tiện ích.openssl nhận tiện ích mở rộng chứng chỉ
Mã Tôi đang sử dụng là:
X509_EXTENSION *extension = sk_X509_EXTENSION_pop(exts);
int critical = X509_EXTENSION_get_critical(extension);
ASN1_OBJECT *obj = extension-> object;
ln = OBJ_nid2ln(OBJ_obj2nid(obj));
if(!ln) ln = "";
OBJ_obj2txt(objbuf,sizeof(objbuf),obj,1);
int nid = OBJ_txt2nid(ln);
Mã này nói với tôi cho dù phần mở rộng là rất quan trọng hay không và mang lại cho tôi nid của phần mở rộng.
Tôi cho rằng giá trị có thể thu được bằng cách:
ASN1_OCTET_STRING * data = X509_EXTENSION_get_data (phần mở rộng);
nhưng tôi không chắc chắn cách xử lý đối tượng data
đã truy lục. Đối tượng dữ liệu được cho là được mã hóa. Bất kỳ ý tưởng nào về cách lấy dữ liệu tiện ích?
EDIT: Như đã đề cập here, tôi đã cố gắng để làm:
ASN1_OCTET_STRING* octet_str = X509_EXTENSION_get_data(extension);
const unsigned char* octet_str_data = octet_str->data;
long xlen;
int tag, xclass;
int ret = ASN1_get_object(&octet_str_data, &xlen, &tag, &xclass, octet_str->length);
printf(@"value: %s\n", octet_str_data);
nhưng chuỗi tôi nhận được sau khi giải mã là giống như trước khi nó - cái gì đó như: 4Á˃◊∫NsΣäP∂ W ≠% £ A
Tôi nghĩ rằng một số (các) chứng chỉ mẫu và mã biên dịch tốt, chỉ cần không có hiển thị thích hợp các giá trị tiện ích, sẽ cực kỳ hữu ích. – ThiefMaster
Tôi đang làm một dự án iOS và openssl được biên dịch cho iOS. Tuy nhiên, nếu nó giúp, tôi sẽ thêm một liên kết đến nó. – Maggie
iOS? Bạn có thực sự sử dụng C hay đúng hơn là ObjC? – ThiefMaster