Cryptography and SSL/TLS Toolkit



d2i_X509_ALGOR, i2d_X509_ALGOR, X509_ALGOR_dup, X509_ALGOR_set0, X509_ALGOR_get0, X509_ALGOR_set_md, X509_ALGOR_cmp - AlgorithmIdentifier functions.


 #include <openssl/x509.h>

 X509_ALGOR *d2i_X509_ALGOR(X509_ALGOR **a, unsigned char **pp, long length);
 int i2d_X509_ALGOR(X509_ALGOR *a, unsigned char **pp);
 X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *alg);
 int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, void *pval);
 void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval,
                      X509_ALGOR *alg);
 void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md);
 int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b);


The functions d2i_X509() and i2d_X509() decode and encode an X509_ALGOR structure which is equivalent to the AlgorithmIdentifier structure.

Otherwise they behave in a similar way to d2i_X509() and i2d_X509() described in the d2i_X509 manual page.

X509_ALGOR_dup() returns a copy of alg.

X509_ALGOR_set0() sets the algorithm OID of alg to aobj and the associated parameter type to ptype with value pval. If ptype is V_ASN1_UNDEF the parameter is omitted, otherwise ptype and pval have the same meaning as the type and value parameters to ASN1_TYPE_set(). All the supplied parameters are used internally so must NOT be freed after this call.

X509_ALGOR_get0() is the inverse of X509_ALGOR_set0(): it returns the algorithm OID in *paobj and the associated parameter in *pptype and *ppval from the AlgorithmIdentifier alg.

X509_ALGOR_set_md() sets the AlgorithmIdentifier alg to appropriate values for the message digest md.

X509_ALGOR_cmp() compares a and b and returns 0 if they have identical encodings and non-zero otherwise.