Commit 7ab50749 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Add function to return internal enoding of X509_NAME.



PR#4280

Reviewed-by: default avatarTim Hudson <tjh@openssl.org>
parent 33254e1c
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -567,3 +567,16 @@ int X509_NAME_print(BIO *bp, X509_NAME *name, int obase)
    OPENSSL_free(b);
    return 0;
}

int X509_NAME_get0_der(const unsigned char **pder, size_t *pderlen,
                       X509_NAME *nm)
{
    /* Make sure encoding is valid */
    if (i2d_X509_NAME(nm, NULL) <= 0)
        return 0;
    if (pder != NULL)
        *pder = (unsigned char *)nm->bytes->data;
    if (pderlen != NULL)
        *pderlen = nm->bytes->length;
    return 1;
}
+20 −6
Original line number Diff line number Diff line
@@ -11,21 +11,35 @@ d2i_X509_NAME, i2d_X509_NAME - X509_NAME encoding functions
 X509_NAME *d2i_X509_NAME(X509_NAME **a, unsigned char **pp, long length);
 int i2d_X509_NAME(X509_NAME *a, unsigned char **pp);

 int X509_NAME_get0_der(const unsigned char **pder, size_t *pderlen,
                        X509_NAME *nm)


=head1 DESCRIPTION

These functions decode and encode an B<X509_NAME> structure which is the
same as the B<Name> type defined in RFC2459 (and elsewhere) and used
for example in certificate subject and issuer names.
The functions d2i_X509_NAME() and i2d_X509_NAME() decode and encode an
B<X509_NAME> structure which is the same as the B<Name> type defined in
RFC3280 (and elsewhere) and used for example in certificate subject and
issuer names.

Otherwise the functions behave in a similar way to d2i_X509() and i2d_X509()
described in the L<d2i_X509(3)> manual page.

The function X509_NAME_get0_der() returns an internal pointer to the
encoding of an B<X509_NAME> structure in B<*pder> and consisting of
B<*pderlen> bytes. It is useful for applications that wish to examine
the encoding of an B<X509_NAME> structure without copying it.

=head1 RETURN VALUES

=head1 SEE ALSO

L<d2i_X509(3)>
The meanings of the return values of d2i_X509_NAME() and i2d_X509_NAME()
are similar to those for d2i_X509() and i2d_X509().

=head1 HISTORY
The function X509_NAME_get0_der() returns 1 for success and 0 if an error
occurred.

TBA
L<d2i_X509(3)>

=cut
+3 −0
Original line number Diff line number Diff line
@@ -873,6 +873,9 @@ ASN1_OBJECT *X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne);
ASN1_STRING *X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne);
int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne);

int X509_NAME_get0_der(const unsigned char **pder, size_t *pderlen,
                       X509_NAME *nm);

int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x);
int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x,
                          int nid, int lastpos);
+1 −0
Original line number Diff line number Diff line
@@ -4765,3 +4765,4 @@ OCSP_resp_get0_produced_at 5159 1_1_0 EXIST::FUNCTION:
TS_STATUS_INFO_get0_failure_info        5160	1_1_0	EXIST::FUNCTION:
TS_STATUS_INFO_get0_text                5161	1_1_0	EXIST::FUNCTION:
CRYPTO_secure_zalloc                    5162	1_1_0	EXIST::FUNCTION:
X509_NAME_get0_der                      5163	1_1_0	EXIST::FUNCTION: