=pod =head1 NAME X509_NAME_add_entry_by_txt, X509_NAME_add_entry_by_OBJ, X509_NAME_add_entry_by_NID, X509_NAME_add_entry, X509_NAME_delete_entry - X509_NAME modification functions =head1 SYNOPSIS #include int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, const unsigned char *bytes, int len, int loc, int set); int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len, int loc, int set); int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, const unsigned char *bytes, int len, int loc, int set); int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, int loc, int set); X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); =head1 DESCRIPTION X509_NAME_add_entry_by_txt(), X509_NAME_add_entry_by_OBJ() and X509_NAME_add_entry_by_NID() add a field whose name is defined by a string B, an object B or a NID B respectively. The field value to be added is in B of length B. If B is -1 then the field length is calculated internally using strlen(bytes). The type of field is determined by B which can either be a definition of the type of B (such as B) or a standard ASN1 type (such as B). The new entry is added to a position determined by B and B. X509_NAME_add_entry() adds a copy of B structure B to B. The new entry is added to a position determined by B and B. Since a copy of B is added B must be freed up after the call. X509_NAME_delete_entry() deletes an entry from B at position B. The deleted entry is returned and must be freed up. =head1 NOTES The use of string types such as B or B is strongly recommended for the B parameter. This allows the internal code to correctly determine the type of the field and to apply length checks according to the relevant standards. This is done using ASN1_STRING_set_by_NID(). If instead an ASN1 type is used no checks are performed and the supplied data in B is used directly. In X509_NAME_add_entry_by_txt() the B string represents the field name using OBJ_txt2obj(field, 0). The B and B parameters determine where a new entry should be added. For almost all applications B can be set to -1 and B to 0. This adds a new entry to the end of B as a single valued RelativeDistinguishedName (RDN). B actually determines the index where the new entry is inserted: if it is -1 it is appended. B determines how the new type is added. If it is zero a new RDN is created. If B is -1 or 1 it is added to the previous or next RDN structure respectively. This will then be a multivalued RDN: since multivalues RDNs are very seldom used B is almost always set to zero. =head1 EXAMPLES Create an B structure: "C=UK, O=Disorganized Organization, CN=Joe Bloggs" X509_NAME *nm; nm = X509_NAME_new(); if (nm == NULL) /* Some error */ if (!X509_NAME_add_entry_by_txt(nm, "C", MBSTRING_ASC, "UK", -1, -1, 0)) /* Error */ if (!X509_NAME_add_entry_by_txt(nm, "O", MBSTRING_ASC, "Disorganized Organization", -1, -1, 0)) /* Error */ if (!X509_NAME_add_entry_by_txt(nm, "CN", MBSTRING_ASC, "Joe Bloggs", -1, -1, 0)) /* Error */ =head1 RETURN VALUES X509_NAME_add_entry_by_txt(), X509_NAME_add_entry_by_OBJ(), X509_NAME_add_entry_by_NID() and X509_NAME_add_entry() return 1 for success of 0 if an error occurred. X509_NAME_delete_entry() returns either the deleted B structure of B if an error occurred. =head1 BUGS B can still be set to B to use a different algorithm to determine field types. Since this form does not understand multicharacter types, performs no length checks and can result in invalid field types its use is strongly discouraged. =head1 SEE ALSO L, L =head1 COPYRIGHT Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at L. =cut