18 #include <openssl/x509.h>
19 #include <openssl/asn1.h>
107 X509 *peer = port->peer;
108 ASN1_INTEGER *serial =
NULL;
114 serial = X509_get_serialNumber(peer);
115 b = ASN1_INTEGER_to_BN(serial,
NULL);
116 decimal = BN_bn2dec(b);
123 OPENSSL_free(decimal);
151 membuf = BIO_new(BIO_s_mem());
152 (void) BIO_set_close(membuf, BIO_CLOSE);
153 ASN1_STRING_print_ex(membuf, str,
154 ((ASN1_STRFLGS_RFC2253 & ~ASN1_STRFLGS_ESC_MSB)
155 | ASN1_STRFLGS_UTF8_CONVERT));
158 BIO_write(membuf, &nullterm, 1);
159 size = BIO_get_mem_data(membuf, &sp);
188 char *string_fieldname;
194 nid = OBJ_txt2nid(string_fieldname);
195 if (nid == NID_undef)
197 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
198 errmsg(
"invalid X.509 field name: \"%s\"",
200 pfree(string_fieldname);
201 index = X509_NAME_get_index_by_NID(name, nid, -1);
204 data = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(name, index));
293 BIO *membuf = BIO_new(BIO_s_mem());
296 count = X509_NAME_entry_count(name);
299 const char *field_name;
306 (void) BIO_set_close(membuf, BIO_CLOSE);
307 for (i = 0; i < count; i++)
309 e = X509_NAME_get_entry(name, i);
310 nid = OBJ_obj2nid(X509_NAME_ENTRY_get_object(e));
311 v = X509_NAME_ENTRY_get_data(e);
312 field_name = OBJ_nid2sn(nid);
314 field_name = OBJ_nid2ln(nid);
315 BIO_printf(membuf,
"/%s=", field_name);
316 ASN1_STRING_print_ex(membuf, v,
317 ((ASN1_STRFLGS_RFC2253 & ~ASN1_STRFLGS_ESC_MSB)
318 | ASN1_STRFLGS_UTF8_CONVERT));
323 BIO_write(membuf, &nullterm, 1);
324 size = BIO_get_mem_data(membuf, &sp);