/** * gnutls_x509_rdn_get_oid: * @idn: should contain a DER encoded RDN sequence * @indx: Indicates which OID to return. Use 0 for the first one. * @buf: a pointer to a structure to hold the peer's name OID * @buf_size: holds the size of @buf * * This function will return the specified Object identifier, of the * RDN sequence. * * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, or * %GNUTLS_E_SHORT_MEMORY_BUFFER is returned and *@buf_size is * updated if the provided buffer is not long enough, otherwise a * negative error value. * * Since: 2.4.0 **/ int gnutls_x509_rdn_get_oid(const gnutls_datum_t * idn, int indx, void *buf, size_t * buf_size) { int result; ASN1_TYPE dn = ASN1_TYPE_EMPTY; if (buf_size == 0) { return GNUTLS_E_INVALID_REQUEST; } if ((result = asn1_create_element(_gnutls_get_pkix(), "PKIX1.Name", &dn)) != ASN1_SUCCESS) { gnutls_assert(); return _gnutls_asn2err(result); } result = _asn1_strict_der_decode(&dn, idn->data, idn->size, NULL); if (result != ASN1_SUCCESS) { /* couldn't decode DER */ gnutls_assert(); asn1_delete_structure(&dn); return _gnutls_asn2err(result); } result = _gnutls_x509_get_dn_oid(dn, "rdnSequence", indx, buf, buf_size); asn1_delete_structure(&dn); return result; }
/** * gnutls_x509_crl_get_dn_oid: * @crl: should contain a gnutls_x509_crl_t structure * @indx: Specifies which DN OID to send. Use (0) to get the first one. * @oid: a pointer to a structure to hold the name (may be null) * @sizeof_oid: initially holds the size of 'oid' * * This function will extract the requested OID of the name of the CRL * issuer, specified by the given index. * * If oid is null then only the size will be filled. * * Returns: %GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is * not long enough, and in that case the sizeof_oid will be updated * with the required size. On success 0 is returned. **/ int gnutls_x509_crl_get_dn_oid(gnutls_x509_crl_t crl, int indx, void *oid, size_t * sizeof_oid) { if (crl == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } return _gnutls_x509_get_dn_oid(crl->crl, "tbsCertList.issuer.rdnSequence", indx, oid, sizeof_oid); }
/** * gnutls_x509_crq_get_dn_oid - This function returns the Certificate request subject's distinguished name OIDs * @crq: should contain a gnutls_x509_crq_t structure * @indx: Specifies which DN OID to send. Use zero to get the first one. * @oid: a pointer to a structure to hold the name (may be null) * @sizeof_oid: initially holds the size of @oid * * This function will extract the requested OID of the name of the * Certificate request subject, specified by the given index. * * If oid is null then only the size will be filled. * * Returns GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not * long enough, and in that case the *sizeof_oid will be updated with * the required size. On success 0 is returned. * **/ int gnutls_x509_crq_get_dn_oid (gnutls_x509_crq_t crq, int indx, void *oid, size_t * sizeof_oid) { if (crq == NULL) { gnutls_assert (); return GNUTLS_E_INVALID_REQUEST; } return _gnutls_x509_get_dn_oid (crq->crq, "certificationRequestInfo.subject.rdnSequence", indx, oid, sizeof_oid); }