@ -5,7 +5,7 @@
i2t_ASN1_OBJECT,
OBJ_length, OBJ_get0_data, OBJ_nid2obj, OBJ_nid2ln,
OBJ_nid2sn, OBJ_obj2nid, OBJ_txt2nid, OBJ_ln2nid, OBJ_sn2nid, OBJ_cmp,
OBJ_dup, OBJ_txt2obj, OBJ_obj2txt, OBJ_create, OBJ_cleanup
OBJ_dup, OBJ_txt2obj, OBJ_obj2txt, OBJ_create, OBJ_cleanup, OBJ_add_sigid
- ASN1 object utility functions
=head1 SYNOPSIS
@ -35,6 +35,8 @@ OBJ_dup, OBJ_txt2obj, OBJ_obj2txt, OBJ_create, OBJ_cleanup
size_t OBJ_length(const ASN1_OBJECT *obj);
const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj);
int OBJ_add_sigid(int signid, int dig_id, int pkey_id);
Deprecated since OpenSSL 1.1.0, can be hidden entirely by defining
B<OPENSSL_API_COMPAT> with a suitable version value, see
L<openssl_user_macros(7)>:
@ -52,46 +54,53 @@ are available as defined constants. For the functions below, application
code should treat all returned values -- OIDs, NIDs, or names -- as
constants.
OBJ_nid2obj(), OBJ_nid2ln() and OBJ_nid2sn() convert the NID B <n> to
OBJ_nid2obj(), OBJ_nid2ln() and OBJ_nid2sn() convert the NID I <n> to
an ASN1_OBJECT structure, its long name and its short name respectively,
or B<NULL> if an error occurred.
OBJ_obj2nid(), OBJ_ln2nid(), OBJ_sn2nid() return the corresponding NID
for the object B<o>, the long name <ln> or the short name <sn> respectively
for the object I<o>, the long name I<ln> or the short name I <sn> respectively
or NID_undef if an error occurred.
OBJ_txt2nid() returns NID corresponding to text string <s>. B <s> can be
OBJ_txt2nid() returns NID corresponding to text string I<s>. I <s> can be
a long name, a short name or the numerical representation of an object.
OBJ_txt2obj() converts the text string B <s> into an ASN1_OBJECT structure.
If B <no_name> is 0 then long names and short names will be interpreted
as well as numerical forms. If B <no_name> is 1 only the numerical form
OBJ_txt2obj() converts the text string I <s> into an ASN1_OBJECT structure.
If I <no_name> is 0 then long names and short names will be interpreted
as well as numerical forms. If I <no_name> is 1 only the numerical form
is acceptable.
OBJ_obj2txt() converts the B<ASN1_OBJECT> B <a> into a textual representation.
The representation is written as a null terminated string to B <buf>
at most B <buf_len> bytes are written, truncating the result if necessary.
The total amount of space required is returned. If B <no_name> is 0 then
OBJ_obj2txt() converts the B<ASN1_OBJECT> I <a> into a textual representation.
The representation is written as a null terminated string to I <buf>
at most I <buf_len> bytes are written, truncating the result if necessary.
The total amount of space required is returned. If I <no_name> is 0 then
if the object has a long or short name then that will be used, otherwise
the numerical form will be used. If B <no_name> is 1 then the numerical
the numerical form will be used. If I <no_name> is 1 then the numerical
form will always be used.
i2t_ASN1_OBJECT() is the same as OBJ_obj2txt() with the B <no_name> set to zero.
i2t_ASN1_OBJECT() is the same as OBJ_obj2txt() with the I <no_name> set to zero.
OBJ_cmp() compares B<a> to B <b>. If the two are identical 0 is returned.
OBJ_cmp() compares I<a> to I <b>. If the two are identical 0 is returned.
OBJ_dup() returns a copy of B <o>.
OBJ_dup() returns a copy of I <o>.
OBJ_create() adds a new object to the internal table. B <oid> is the
numerical form of the object, B<sn> the short name and B <ln> the
OBJ_create() adds a new object to the internal table. I <oid> is the
numerical form of the object, I<sn> the short name and I <ln> the
long name. A new NID is returned for the created object in case of
success and NID_undef in case of failure.
OBJ_length() returns the size of the content octets of B <obj>.
OBJ_length() returns the size of the content octets of I <obj>.
OBJ_get0_data() returns a pointer to the content octets of B <obj>.
OBJ_get0_data() returns a pointer to the content octets of I <obj>.
The returned pointer is an internal pointer which B<must not> be freed.
OBJ_add_sigid() creates a new composite "Signature Algorithm" that associates a
given NID with two other NIDs - one representing the underlying signature
algorithm and the other representing a digest algorithm to be used in
conjunction with it. I<signid> represents the NID for the composite "Signature
Algorithm", I<dig_id> is the NID for the digest algorithm and I<pkey_id> is the
NID for the underlying signature algorithm.
OBJ_cleanup() releases any resources allocated by creating new objects.
=head1 NOTES
@ -141,6 +150,8 @@ on error.
OBJ_obj2nid(), OBJ_ln2nid(), OBJ_sn2nid() and OBJ_txt2nid() return
a NID or B<NID_undef> on error.
OBJ_add_sigid() returns 1 on success or 0 on error.
=head1 EXAMPLES
Create an object for B<commonName>:
@ -166,7 +177,7 @@ Create a new object directly:
OBJ_obj2txt() is awkward and messy to use: it doesn't follow the
convention of other OpenSSL functions where the buffer can be set
to B<NULL> to determine the amount of data that should be written.
Instead B<buf> must point to a valid buffer and B <buf_len> should
Instead I<buf> must point to a valid buffer and I <buf_len> should
be set to a positive value. A buffer length of 80 should be more
than enough to handle any OID encountered in practice.