From 8c4b69d3ab47f5a1c3cc96c9260b3ef5e9b1b00c Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Wed, 9 Oct 2002 17:05:05 +0000 Subject: [PATCH] Update docs. --- doc/crypto/PKCS12_create.pod | 4 + doc/crypto/X509_NAME_get_index_by_NID.pod | 106 ++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 doc/crypto/X509_NAME_get_index_by_NID.pod diff --git a/doc/crypto/PKCS12_create.pod b/doc/crypto/PKCS12_create.pod index 495a2b8c40..439dd4339d 100644 --- a/doc/crypto/PKCS12_create.pod +++ b/doc/crypto/PKCS12_create.pod @@ -51,6 +51,10 @@ encryption. Some additional functionality was added to PKCS12_create() in OpenSSL 0.9.8. These extensions are detailed below. +If a certificate contains an B or B then this will be +used for the corresponding B or B in the +PKCS12 structure. + Either B, B or both can be B to indicate that no key or certficate is required. In previous versions both hasves to be present or a fatal error is returned. diff --git a/doc/crypto/X509_NAME_get_index_by_NID.pod b/doc/crypto/X509_NAME_get_index_by_NID.pod new file mode 100644 index 0000000000..4a2da85908 --- /dev/null +++ b/doc/crypto/X509_NAME_get_index_by_NID.pod @@ -0,0 +1,106 @@ +=pod + +X509_NAME_get_index_by_NID, X509_NAME_get_index_by_OBJ, X509_NAME_get_entry, +X509_NAME_entry_count, X509_NAME_get_text_by_NID, X509_NAME_get_text_by_OBJ - +X509_NAME lookup and enumeration functions + +=head1 NAME + +=head1 SYNOPSIS + +int X509_NAME_get_index_by_NID(X509_NAME *name,int nid,int lastpos); +int X509_NAME_get_index_by_OBJ(X509_NAME *name,ASN1_OBJECT *obj, int lastpos); + +int X509_NAME_entry_count(X509_NAME *name); +X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc); + +int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf,int len); +int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, char *buf,int len); + +=head1 DESCRIPTION + +These functions allow an B structure to be examined. The +B structure is the same as the B type defined in +RFC2459 (and elsewhere) and used for example in certificate subject +and issuer names. + +X509_NAME_get_index_by_NID() and X509_NAME_get_index_by_OBJ() retrieve +the next index matching B or B after B. B +should initially be set to -1. If there are no more entries -1 is returned. + +X509_NAME_entry_count() returns the total number of entries in B. + +X509_NAME_get_entry() retrieves the B from B +corresponding to index B. Acceptable values for B run from +0 to (X509_NAME_entry_count(name) - 1). The value returned is an +internal pointer which must not be freed. + +X509_NAME_get_text_by_NID(), X509_NAME_get_text_by_OBJ() retrieve +the "text" from the first entry in B which matches B or +B, if no such entry exists -1 is returned. At most B bytes +will be written and the text written to B will be null +terminated. The length of the output string written is returned +excluding the terminating null. If B is then the amount +of space needed in B (excluding the final null) is returned. + +=head1 NOTES + +X509_NAME_get_text_by_NID() and X509_NAME_get_text_by_OBJ() are +legacy functions which have various limitations which make them +of minimal use in practice. They can only find the first matching +entry and will copy the contents of the field verbatim: this can +be highly confusing if the target is a muticharacter string type +like a BMPString or a UTF8String. + +For a more general solution X509_NAME_get_index_by_NID() or +X509_NAME_get_index_by_OBJ() should be used followed by +X509_NAME_get_entry() on any matching indices and then the +various B utility functions on the result. + +=head1 EXAMPLES + +Process all entries: + + int i; + X509_NAME_ENTRY *e; + + for (i = 0; i < X509_NAME_entry_count(nm); i++) + { + e = X509_NAME_get_entry(nm, i); + /* Do something with e */ + } + +Process all commonName entries: + + int loc; + X509_NAME_ENTRY *e; + + loc = -1; + for (;;) + { + lastpos = X509_NAME_get_index_by_NID(nm, NID_commonName, lastpos); + if (lastpos == -1) + break; + e = X509_NAME_get_entry(nm, lastpos); + /* Do something with e */ + } + +=head1 RETURN VALUES + +X509_NAME_get_index_by_NID() and X509_NAME_get_index_by_OBJ() +return the index of the next matching entry or -1 if not found. + +X509_NAME_entry_count() returns the total number of entries. + +X509_NAME_get_entry() returns an B pointer to the +requested entry or B if the index is invalid. + +=head1 SEE ALSO + +L, L + +=head1 HISTORY + +TBA + +=cut -- GitLab