67 #include <openssl/e_os2.h>
68 #include <openssl/symhacks.h>
69 #ifndef OPENSSL_NO_BUFFER
70 #include <openssl/buffer.h>
72 #ifndef OPENSSL_NO_EVP
73 #include <openssl/evp.h>
75 #ifndef OPENSSL_NO_BIO
76 #include <openssl/bio.h>
78 #include <openssl/stack.h>
79 #include <openssl/asn1.h>
80 #include <openssl/safestack.h>
83 #include <openssl/ec.h>
86 #ifndef OPENSSL_NO_ECDSA
87 #include <openssl/ecdsa.h>
90 #ifndef OPENSSL_NO_ECDH
91 #include <openssl/ecdh.h>
94 #ifndef OPENSSL_NO_DEPRECATED
95 #ifndef OPENSSL_NO_RSA
96 #include <openssl/rsa.h>
98 #ifndef OPENSSL_NO_DSA
99 #include <openssl/dsa.h>
101 #ifndef OPENSSL_NO_DH
102 #include <openssl/dh.h>
106 #ifndef OPENSSL_NO_SHA
107 #include <openssl/sha.h>
109 #include <openssl/ossl_typ.h>
115 #ifdef OPENSSL_SYS_WIN32
118 #undef X509_CERT_PAIR
121 #define X509_FILETYPE_PEM 1
122 #define X509_FILETYPE_ASN1 2
123 #define X509_FILETYPE_DEFAULT 3
125 #define X509v3_KU_DIGITAL_SIGNATURE 0x0080
126 #define X509v3_KU_NON_REPUDIATION 0x0040
127 #define X509v3_KU_KEY_ENCIPHERMENT 0x0020
128 #define X509v3_KU_DATA_ENCIPHERMENT 0x0010
129 #define X509v3_KU_KEY_AGREEMENT 0x0008
130 #define X509v3_KU_KEY_CERT_SIGN 0x0004
131 #define X509v3_KU_CRL_SIGN 0x0002
132 #define X509v3_KU_ENCIPHER_ONLY 0x0001
133 #define X509v3_KU_DECIPHER_ONLY 0x8000
134 #define X509v3_KU_UNDEF 0xffff
187 #ifndef OPENSSL_NO_BUFFER
197 #define X509_EX_V_NETSCAPE_HACK 0x8000
198 #define X509_EX_V_INIT 0x0001
202 ASN1_BOOLEAN critical;
284 unsigned long ex_flags;
285 unsigned long ex_kusage;
286 unsigned long ex_xkusage;
287 unsigned long ex_nscert;
291 #ifndef OPENSSL_NO_RFC3779
295 #ifndef OPENSSL_NO_SHA
296 unsigned char sha1_hash[SHA_DIGEST_LENGTH];
301 DECLARE_STACK_OF(
X509)
302 DECLARE_ASN1_SET_OF(
X509)
309 int (*check_trust)(
struct x509_trust_st *,
X509 *, int);
324 #define X509_TRUST_DEFAULT -1
326 #define X509_TRUST_COMPAT 1
327 #define X509_TRUST_SSL_CLIENT 2
328 #define X509_TRUST_SSL_SERVER 3
329 #define X509_TRUST_EMAIL 4
330 #define X509_TRUST_OBJECT_SIGN 5
331 #define X509_TRUST_OCSP_SIGN 6
332 #define X509_TRUST_OCSP_REQUEST 7
335 #define X509_TRUST_MIN 1
336 #define X509_TRUST_MAX 7
340 #define X509_TRUST_DYNAMIC 1
341 #define X509_TRUST_DYNAMIC_NAME 2
345 #define X509_TRUST_TRUSTED 1
346 #define X509_TRUST_REJECTED 2
347 #define X509_TRUST_UNTRUSTED 3
351 #define X509_FLAG_COMPAT 0
352 #define X509_FLAG_NO_HEADER 1L
353 #define X509_FLAG_NO_VERSION (1L << 1)
354 #define X509_FLAG_NO_SERIAL (1L << 2)
355 #define X509_FLAG_NO_SIGNAME (1L << 3)
356 #define X509_FLAG_NO_ISSUER (1L << 4)
357 #define X509_FLAG_NO_VALIDITY (1L << 5)
358 #define X509_FLAG_NO_SUBJECT (1L << 6)
359 #define X509_FLAG_NO_PUBKEY (1L << 7)
360 #define X509_FLAG_NO_EXTENSIONS (1L << 8)
361 #define X509_FLAG_NO_SIGDUMP (1L << 9)
362 #define X509_FLAG_NO_AUX (1L << 10)
363 #define X509_FLAG_NO_ATTRIBUTES (1L << 11)
369 #define XN_FLAG_SEP_MASK (0xf << 16)
371 #define XN_FLAG_COMPAT 0
372 #define XN_FLAG_SEP_COMMA_PLUS (1 << 16)
373 #define XN_FLAG_SEP_CPLUS_SPC (2 << 16)
374 #define XN_FLAG_SEP_SPLUS_SPC (3 << 16)
375 #define XN_FLAG_SEP_MULTILINE (4 << 16)
377 #define XN_FLAG_DN_REV (1 << 20)
381 #define XN_FLAG_FN_MASK (0x3 << 21)
383 #define XN_FLAG_FN_SN 0
384 #define XN_FLAG_FN_LN (1 << 21)
385 #define XN_FLAG_FN_OID (2 << 21)
386 #define XN_FLAG_FN_NONE (3 << 21)
388 #define XN_FLAG_SPC_EQ (1 << 23)
394 #define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24)
396 #define XN_FLAG_FN_ALIGN (1 << 25)
400 #define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \
401 XN_FLAG_SEP_COMMA_PLUS | \
404 XN_FLAG_DUMP_UNKNOWN_FIELDS)
408 #define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \
409 ASN1_STRFLGS_ESC_QUOTE | \
410 XN_FLAG_SEP_CPLUS_SPC | \
416 #define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \
417 ASN1_STRFLGS_ESC_MSB | \
418 XN_FLAG_SEP_MULTILINE | \
479 #ifndef OPENSSL_NO_EVP
517 STACK_OF(
X509) *certs;
555 #define PKCS8_NO_OCTET 1
556 #define PKCS8_EMBEDDED_PARAM 2
557 #define PKCS8_NS_DB 3
568 #include <openssl/x509_vfy.h>
569 #include <openssl/pkcs7.h>
576 #define X509_verify(a,r) ASN1_verify((int (*)())i2d_X509_CINF,a->sig_alg,\
577 a->signature,(char *)a->cert_info,r)
578 #define X509_REQ_verify(a,r) ASN1_verify((int (*)())i2d_X509_REQ_INFO, \
579 a->sig_alg,a->signature,(char *)a->req_info,r)
580 #define X509_CRL_verify(a,r) ASN1_verify((int (*)())i2d_X509_CRL_INFO, \
581 a->sig_alg, a->signature,(char *)a->crl,r)
583 #define X509_sign(x,pkey,md) \
584 ASN1_sign((int (*)())i2d_X509_CINF, x->cert_info->signature, \
585 x->sig_alg, x->signature, (char *)x->cert_info,pkey,md)
586 #define X509_REQ_sign(x,pkey,md) \
587 ASN1_sign((int (*)())i2d_X509_REQ_INFO,x->sig_alg, NULL, \
588 x->signature, (char *)x->req_info,pkey,md)
589 #define X509_CRL_sign(x,pkey,md) \
590 ASN1_sign((int (*)())i2d_X509_CRL_INFO,x->crl->sig_alg,x->sig_alg, \
591 x->signature, (char *)x->crl,pkey,md)
592 #define NETSCAPE_SPKI_sign(x,pkey,md) \
593 ASN1_sign((int (*)())i2d_NETSCAPE_SPKAC, x->sig_algor,NULL, \
594 x->signature, (char *)x->spkac,pkey,md)
596 #define X509_dup(x509) (X509 *)ASN1_dup((int (*)())i2d_X509, \
597 (char *(*)())d2i_X509,(char *)x509)
598 #define X509_ATTRIBUTE_dup(xa) (X509_ATTRIBUTE *)ASN1_dup(\
599 (int (*)())i2d_X509_ATTRIBUTE, \
600 (char *(*)())d2i_X509_ATTRIBUTE,(char *)xa)
601 #define X509_EXTENSION_dup(ex) (X509_EXTENSION *)ASN1_dup( \
602 (int (*)())i2d_X509_EXTENSION, \
603 (char *(*)())d2i_X509_EXTENSION,(char *)ex)
604 #define d2i_X509_fp(fp,x509) (X509 *)ASN1_d2i_fp((char *(*)())X509_new, \
605 (char *(*)())d2i_X509, (fp),(unsigned char **)(x509))
606 #define i2d_X509_fp(fp,x509) ASN1_i2d_fp(i2d_X509,fp,(unsigned char *)x509)
607 #define d2i_X509_bio(bp,x509) (X509 *)ASN1_d2i_bio((char *(*)())X509_new, \
608 (char *(*)())d2i_X509, (bp),(unsigned char **)(x509))
609 #define i2d_X509_bio(bp,x509) ASN1_i2d_bio(i2d_X509,bp,(unsigned char *)x509)
611 #define X509_CRL_dup(crl) (X509_CRL *)ASN1_dup((int (*)())i2d_X509_CRL, \
612 (char *(*)())d2i_X509_CRL,(char *)crl)
613 #define d2i_X509_CRL_fp(fp,crl) (X509_CRL *)ASN1_d2i_fp((char *(*)()) \
614 X509_CRL_new,(char *(*)())d2i_X509_CRL, (fp),\
615 (unsigned char **)(crl))
616 #define i2d_X509_CRL_fp(fp,crl) ASN1_i2d_fp(i2d_X509_CRL,fp,\
617 (unsigned char *)crl)
618 #define d2i_X509_CRL_bio(bp,crl) (X509_CRL *)ASN1_d2i_bio((char *(*)()) \
619 X509_CRL_new,(char *(*)())d2i_X509_CRL, (bp),\
620 (unsigned char **)(crl))
621 #define i2d_X509_CRL_bio(bp,crl) ASN1_i2d_bio(i2d_X509_CRL,bp,\
622 (unsigned char *)crl)
624 #define PKCS7_dup(p7) (PKCS7 *)ASN1_dup((int (*)())i2d_PKCS7, \
625 (char *(*)())d2i_PKCS7,(char *)p7)
626 #define d2i_PKCS7_fp(fp,p7) (PKCS7 *)ASN1_d2i_fp((char *(*)()) \
627 PKCS7_new,(char *(*)())d2i_PKCS7, (fp),\
628 (unsigned char **)(p7))
629 #define i2d_PKCS7_fp(fp,p7) ASN1_i2d_fp(i2d_PKCS7,fp,\
631 #define d2i_PKCS7_bio(bp,p7) (PKCS7 *)ASN1_d2i_bio((char *(*)()) \
632 PKCS7_new,(char *(*)())d2i_PKCS7, (bp),\
633 (unsigned char **)(p7))
634 #define i2d_PKCS7_bio(bp,p7) ASN1_i2d_bio(i2d_PKCS7,bp,\
637 #define X509_REQ_dup(req) (X509_REQ *)ASN1_dup((int (*)())i2d_X509_REQ, \
638 (char *(*)())d2i_X509_REQ,(char *)req)
639 #define d2i_X509_REQ_fp(fp,req) (X509_REQ *)ASN1_d2i_fp((char *(*)())\
640 X509_REQ_new, (char *(*)())d2i_X509_REQ, (fp),\
641 (unsigned char **)(req))
642 #define i2d_X509_REQ_fp(fp,req) ASN1_i2d_fp(i2d_X509_REQ,fp,\
643 (unsigned char *)req)
644 #define d2i_X509_REQ_bio(bp,req) (X509_REQ *)ASN1_d2i_bio((char *(*)())\
645 X509_REQ_new, (char *(*)())d2i_X509_REQ, (bp),\
646 (unsigned char **)(req))
647 #define i2d_X509_REQ_bio(bp,req) ASN1_i2d_bio(i2d_X509_REQ,bp,\
648 (unsigned char *)req)
650 #define RSAPublicKey_dup(rsa) (RSA *)ASN1_dup((int (*)())i2d_RSAPublicKey, \
651 (char *(*)())d2i_RSAPublicKey,(char *)rsa)
652 #define RSAPrivateKey_dup(rsa) (RSA *)ASN1_dup((int (*)())i2d_RSAPrivateKey, \
653 (char *(*)())d2i_RSAPrivateKey,(char *)rsa)
655 #define d2i_RSAPrivateKey_fp(fp,rsa) (RSA *)ASN1_d2i_fp((char *(*)())\
656 RSA_new,(char *(*)())d2i_RSAPrivateKey, (fp), \
657 (unsigned char **)(rsa))
658 #define i2d_RSAPrivateKey_fp(fp,rsa) ASN1_i2d_fp(i2d_RSAPrivateKey,fp, \
659 (unsigned char *)rsa)
660 #define d2i_RSAPrivateKey_bio(bp,rsa) (RSA *)ASN1_d2i_bio((char *(*)())\
661 RSA_new,(char *(*)())d2i_RSAPrivateKey, (bp), \
662 (unsigned char **)(rsa))
663 #define i2d_RSAPrivateKey_bio(bp,rsa) ASN1_i2d_bio(i2d_RSAPrivateKey,bp, \
664 (unsigned char *)rsa)
666 #define d2i_RSAPublicKey_fp(fp,rsa) (RSA *)ASN1_d2i_fp((char *(*)())\
667 RSA_new,(char *(*)())d2i_RSAPublicKey, (fp), \
668 (unsigned char **)(rsa))
669 #define i2d_RSAPublicKey_fp(fp,rsa) ASN1_i2d_fp(i2d_RSAPublicKey,fp, \
670 (unsigned char *)rsa)
671 #define d2i_RSAPublicKey_bio(bp,rsa) (RSA *)ASN1_d2i_bio((char *(*)())\
672 RSA_new,(char *(*)())d2i_RSAPublicKey, (bp), \
673 (unsigned char **)(rsa))
674 #define i2d_RSAPublicKey_bio(bp,rsa) ASN1_i2d_bio(i2d_RSAPublicKey,bp, \
675 (unsigned char *)rsa)
677 #define d2i_DSAPrivateKey_fp(fp,dsa) (DSA *)ASN1_d2i_fp((char *(*)())\
678 DSA_new,(char *(*)())d2i_DSAPrivateKey, (fp), \
679 (unsigned char **)(dsa))
680 #define i2d_DSAPrivateKey_fp(fp,dsa) ASN1_i2d_fp(i2d_DSAPrivateKey,fp, \
681 (unsigned char *)dsa)
682 #define d2i_DSAPrivateKey_bio(bp,dsa) (DSA *)ASN1_d2i_bio((char *(*)())\
683 DSA_new,(char *(*)())d2i_DSAPrivateKey, (bp), \
684 (unsigned char **)(dsa))
685 #define i2d_DSAPrivateKey_bio(bp,dsa) ASN1_i2d_bio(i2d_DSAPrivateKey,bp, \
686 (unsigned char *)dsa)
688 #define d2i_ECPrivateKey_fp(fp,ecdsa) (EC_KEY *)ASN1_d2i_fp((char *(*)())\
689 EC_KEY_new,(char *(*)())d2i_ECPrivateKey, (fp), \
690 (unsigned char **)(ecdsa))
691 #define i2d_ECPrivateKey_fp(fp,ecdsa) ASN1_i2d_fp(i2d_ECPrivateKey,fp, \
692 (unsigned char *)ecdsa)
693 #define d2i_ECPrivateKey_bio(bp,ecdsa) (EC_KEY *)ASN1_d2i_bio((char *(*)())\
694 EC_KEY_new,(char *(*)())d2i_ECPrivateKey, (bp), \
695 (unsigned char **)(ecdsa))
696 #define i2d_ECPrivateKey_bio(bp,ecdsa) ASN1_i2d_bio(i2d_ECPrivateKey,bp, \
697 (unsigned char *)ecdsa)
699 #define X509_ALGOR_dup(xn) (X509_ALGOR *)ASN1_dup((int (*)())i2d_X509_ALGOR,\
700 (char *(*)())d2i_X509_ALGOR,(char *)xn)
702 #define X509_NAME_dup(xn) (X509_NAME *)ASN1_dup((int (*)())i2d_X509_NAME, \
703 (char *(*)())d2i_X509_NAME,(char *)xn)
704 #define X509_NAME_ENTRY_dup(ne) (X509_NAME_ENTRY *)ASN1_dup( \
705 (int (*)())i2d_X509_NAME_ENTRY, \
706 (char *(*)())d2i_X509_NAME_ENTRY,\
709 #define X509_digest(data,type,md,len) \
710 ASN1_digest((int (*)())i2d_X509,type,(char *)data,md,len)
711 #define X509_NAME_digest(data,type,md,len) \
712 ASN1_digest((int (*)())i2d_X509_NAME,type,(char *)data,md,len)
713 #ifndef PKCS7_ISSUER_AND_SERIAL_digest
714 #define PKCS7_ISSUER_AND_SERIAL_digest(data,type,md,len) \
715 ASN1_digest((int (*)())i2d_PKCS7_ISSUER_AND_SERIAL,type,\
720 #define X509_EXT_PACK_UNKNOWN 1
721 #define X509_EXT_PACK_STRING 2
723 #define X509_get_version(x) ASN1_INTEGER_get((x)->cert_info->version)
725 #define X509_get_notBefore(x) ((x)->cert_info->validity->notBefore)
726 #define X509_get_notAfter(x) ((x)->cert_info->validity->notAfter)
727 #define X509_extract_key(x) X509_get_pubkey(x)
728 #define X509_REQ_get_version(x) ASN1_INTEGER_get((x)->req_info->version)
729 #define X509_REQ_get_subject_name(x) ((x)->req_info->subject)
730 #define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a)
731 #define X509_name_cmp(a,b) X509_NAME_cmp((a),(b))
732 #define X509_get_signature_type(x) EVP_PKEY_type(OBJ_obj2nid((x)->sig_alg->algorithm))
734 #define X509_CRL_get_version(x) ASN1_INTEGER_get((x)->crl->version)
735 #define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate)
736 #define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate)
737 #define X509_CRL_get_issuer(x) ((x)->crl->issuer)
738 #define X509_CRL_get_REVOKED(x) ((x)->crl->revoked)
742 #define X509_get_X509_PUBKEY(x) ((x)->cert_info->key)
745 const char *X509_verify_cert_error_string(
long n);
747 #ifndef SSLEAY_MACROS
748 #ifndef OPENSSL_NO_EVP
755 NETSCAPE_SPKI * NETSCAPE_SPKI_b64_decode(
const char *str,
int len);
769 int X509_pubkey_digest(
const X509 *data,
const EVP_MD *type,
770 unsigned char *md,
unsigned int *len);
771 int X509_digest(
const X509 *data,
const EVP_MD *type,
772 unsigned char *md,
unsigned int *len);
774 unsigned char *md,
unsigned int *len);
776 unsigned char *md,
unsigned int *len);
778 unsigned char *md,
unsigned int *len);
781 #ifndef OPENSSL_NO_FP_API
782 X509 *d2i_X509_fp(FILE *fp,
X509 **x509);
783 int i2d_X509_fp(FILE *fp,
X509 *x509);
785 int i2d_X509_CRL_fp(FILE *fp,
X509_CRL *crl);
787 int i2d_X509_REQ_fp(FILE *fp,
X509_REQ *req);
788 #ifndef OPENSSL_NO_RSA
789 RSA *d2i_RSAPrivateKey_fp(FILE *fp,
RSA **rsa);
790 int i2d_RSAPrivateKey_fp(FILE *fp,
RSA *rsa);
791 RSA *d2i_RSAPublicKey_fp(FILE *fp,
RSA **rsa);
792 int i2d_RSAPublicKey_fp(FILE *fp,
RSA *rsa);
793 RSA *d2i_RSA_PUBKEY_fp(FILE *fp,
RSA **rsa);
794 int i2d_RSA_PUBKEY_fp(FILE *fp,
RSA *rsa);
796 #ifndef OPENSSL_NO_DSA
797 DSA *d2i_DSA_PUBKEY_fp(FILE *fp,
DSA **dsa);
798 int i2d_DSA_PUBKEY_fp(FILE *fp,
DSA *dsa);
799 DSA *d2i_DSAPrivateKey_fp(FILE *fp,
DSA **dsa);
800 int i2d_DSAPrivateKey_fp(FILE *fp,
DSA *dsa);
802 #ifndef OPENSSL_NO_EC
804 int i2d_EC_PUBKEY_fp(FILE *fp,
EC_KEY *eckey);
806 int i2d_ECPrivateKey_fp(FILE *fp,
EC_KEY *eckey);
809 int i2d_PKCS8_fp(FILE *fp,
X509_SIG *p8);
813 int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp,
EVP_PKEY *key);
814 int i2d_PrivateKey_fp(FILE *fp,
EVP_PKEY *pkey);
816 int i2d_PUBKEY_fp(FILE *fp,
EVP_PKEY *pkey);
820 #ifndef OPENSSL_NO_BIO
822 int i2d_X509_bio(
BIO *bp,
X509 *x509);
827 #ifndef OPENSSL_NO_RSA
828 RSA *d2i_RSAPrivateKey_bio(
BIO *bp,
RSA **rsa);
829 int i2d_RSAPrivateKey_bio(
BIO *bp,
RSA *rsa);
830 RSA *d2i_RSAPublicKey_bio(
BIO *bp,
RSA **rsa);
831 int i2d_RSAPublicKey_bio(
BIO *bp,
RSA *rsa);
832 RSA *d2i_RSA_PUBKEY_bio(
BIO *bp,
RSA **rsa);
833 int i2d_RSA_PUBKEY_bio(
BIO *bp,
RSA *rsa);
835 #ifndef OPENSSL_NO_DSA
836 DSA *d2i_DSA_PUBKEY_bio(
BIO *bp,
DSA **dsa);
837 int i2d_DSA_PUBKEY_bio(
BIO *bp,
DSA *dsa);
838 DSA *d2i_DSAPrivateKey_bio(
BIO *bp,
DSA **dsa);
839 int i2d_DSAPrivateKey_bio(
BIO *bp,
DSA *dsa);
841 #ifndef OPENSSL_NO_EC
843 int i2d_EC_PUBKEY_bio(
BIO *bp,
EC_KEY *eckey);
845 int i2d_ECPrivateKey_bio(
BIO *bp,
EC_KEY *eckey);
852 int i2d_PKCS8PrivateKeyInfo_bio(
BIO *bp,
EVP_PKEY *key);
870 int X509_cmp_time(
ASN1_TIME *s, time_t *t);
875 const char * X509_get_default_cert_area(
void );
876 const char * X509_get_default_cert_dir(
void );
877 const char * X509_get_default_cert_file(
void );
878 const char * X509_get_default_cert_dir_env(
void );
879 const char * X509_get_default_cert_file_env(
void );
880 const char * X509_get_default_private_dir(
void );
892 int X509_get_pubkey_parameters(
EVP_PKEY *pkey,
894 int i2d_PUBKEY(
EVP_PKEY *a,
unsigned char **pp);
897 #ifndef OPENSSL_NO_RSA
898 int i2d_RSA_PUBKEY(
RSA *a,
unsigned char **pp);
899 RSA * d2i_RSA_PUBKEY(
RSA **a,
const unsigned char **pp,
902 #ifndef OPENSSL_NO_DSA
903 int i2d_DSA_PUBKEY(
DSA *a,
unsigned char **pp);
904 DSA * d2i_DSA_PUBKEY(
DSA **a,
const unsigned char **pp,
907 #ifndef OPENSSL_NO_EC
908 int i2d_EC_PUBKEY(
EC_KEY *a,
unsigned char **pp);
909 EC_KEY *d2i_EC_PUBKEY(
EC_KEY **a,
const unsigned char **pp,
918 X509_ATTRIBUTE *X509_ATTRIBUTE_create(
int nid,
int atrtype,
void *value);
930 DECLARE_ASN1_FUNCTIONS(
X509)
935 int X509_get_ex_new_index(
long argl,
void *argp, CRYPTO_EX_new *new_func,
936 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
937 int X509_set_ex_data(
X509 *r,
int idx,
void *arg);
938 void *X509_get_ex_data(
X509 *r,
int idx);
939 int i2d_X509_AUX(
X509 *a,
unsigned char **pp);
940 X509 * d2i_X509_AUX(
X509 **a,const
unsigned char **pp,
long length);
942 int X509_alias_set1(
X509 *x,
unsigned char *name,
int len);
943 int X509_keyid_set1(
X509 *x,
unsigned char *
id,
int len);
944 unsigned char * X509_alias_get0(
X509 *x,
int *len);
945 unsigned char * X509_keyid_get0(
X509 *x,
int *len);
946 int (*X509_TRUST_set_default(
int (*trust)(
int ,
X509 *,
int)))(
int, X509 *,
int);
947 int X509_TRUST_set(
int *t,
int trust);
948 int X509_add1_trust_object(X509 *x,
ASN1_OBJECT *obj);
949 int X509_add1_reject_object(X509 *x,
ASN1_OBJECT *obj);
950 void X509_trust_clear(X509 *x);
951 void X509_reject_clear(X509 *x);
961 int i2d_X509_PKEY(
X509_PKEY *a,
unsigned char **pp);
968 #ifndef OPENSSL_NO_EVP
971 char * X509_NAME_oneline(
X509_NAME *a,
char *buf,
int size);
973 int ASN1_verify(i2d_of_void *i2d,
X509_ALGOR *algor1,
976 int ASN1_digest(i2d_of_void *i2d,
const EVP_MD *type,
char *data,
977 unsigned char *md,
unsigned int *len);
979 int ASN1_sign(i2d_of_void *i2d,
X509_ALGOR *algor1,
983 int ASN1_item_digest(
const ASN1_ITEM *it,
const EVP_MD *type,
void *data,
984 unsigned char *md,
unsigned int *len);
994 int X509_set_version(X509 *x,
long version);
995 int X509_set_serialNumber(X509 *x,
ASN1_INTEGER *serial);
997 int X509_set_issuer_name(X509 *x,
X509_NAME *name);
998 X509_NAME * X509_get_issuer_name(X509 *a);
999 int X509_set_subject_name(X509 *x,
X509_NAME *name);
1000 X509_NAME * X509_get_subject_name(X509 *a);
1001 int X509_set_notBefore(X509 *x,
ASN1_TIME *tm);
1002 int X509_set_notAfter(X509 *x,
ASN1_TIME *tm);
1003 int X509_set_pubkey(X509 *x,
EVP_PKEY *pkey);
1004 EVP_PKEY * X509_get_pubkey(X509 *x);
1006 int X509_certificate_type(X509 *x,
EVP_PKEY *pubkey );
1008 int X509_REQ_set_version(
X509_REQ *x,
long version);
1012 int X509_REQ_extension_nid(
int nid);
1013 int * X509_REQ_get_extension_nids(
void);
1014 void X509_REQ_set_extension_nids(
int *nids);
1019 int X509_REQ_get_attr_count(
const X509_REQ *req);
1020 int X509_REQ_get_attr_by_NID(
const X509_REQ *req,
int nid,
1027 int X509_REQ_add1_attr_by_OBJ(
X509_REQ *req,
1029 const unsigned char *bytes,
int len);
1030 int X509_REQ_add1_attr_by_NID(
X509_REQ *req,
1032 const unsigned char *bytes,
int len);
1033 int X509_REQ_add1_attr_by_txt(
X509_REQ *req,
1034 const char *attrname,
int type,
1035 const unsigned char *bytes,
int len);
1037 int X509_CRL_set_version(
X509_CRL *x,
long version);
1048 int X509_check_private_key(X509 *x509,
EVP_PKEY *pkey);
1050 int X509_issuer_and_serial_cmp(
const X509 *a,
const X509 *b);
1051 unsigned long X509_issuer_and_serial_hash(X509 *a);
1053 int X509_issuer_name_cmp(
const X509 *a,
const X509 *b);
1054 unsigned long X509_issuer_name_hash(X509 *a);
1056 int X509_subject_name_cmp(
const X509 *a,
const X509 *b);
1057 unsigned long X509_subject_name_hash(X509 *x);
1059 int X509_cmp(
const X509 *a,
const X509 *b);
1061 unsigned long X509_NAME_hash(
X509_NAME *x);
1064 #ifndef OPENSSL_NO_FP_API
1065 int X509_print_ex_fp(FILE *bp,X509 *x,
unsigned long nmflag,
unsigned long cflag);
1066 int X509_print_fp(FILE *bp,X509 *x);
1067 int X509_CRL_print_fp(FILE *bp,
X509_CRL *x);
1068 int X509_REQ_print_fp(FILE *bp,
X509_REQ *req);
1069 int X509_NAME_print_ex_fp(FILE *fp,
X509_NAME *nm,
int indent,
unsigned long flags);
1072 #ifndef OPENSSL_NO_BIO
1073 int X509_NAME_print(
BIO *bp,
X509_NAME *name,
int obase);
1074 int X509_NAME_print_ex(
BIO *out,
X509_NAME *nm,
int indent,
unsigned long flags);
1075 int X509_print_ex(
BIO *bp,X509 *x,
unsigned long nmflag,
unsigned long cflag);
1076 int X509_print(
BIO *bp,X509 *x);
1077 int X509_ocspid_print(
BIO *bp,X509 *x);
1080 int X509_REQ_print_ex(
BIO *bp,
X509_REQ *x,
unsigned long nmflag,
unsigned long cflag);
1084 int X509_NAME_entry_count(
X509_NAME *name);
1085 int X509_NAME_get_text_by_NID(
X509_NAME *name,
int nid,
1092 int X509_NAME_get_index_by_NID(
X509_NAME *name,
int nid,
int lastpos);
1100 unsigned char *bytes,
int len,
int loc,
int set);
1101 int X509_NAME_add_entry_by_NID(
X509_NAME *name,
int nid,
int type,
1102 unsigned char *bytes,
int len,
int loc,
int set);
1104 const char *field,
int type,
const unsigned char *bytes,
int len);
1106 int type,
unsigned char *bytes,
int len);
1107 int X509_NAME_add_entry_by_txt(
X509_NAME *name,
const char *field,
int type,
1108 const unsigned char *bytes,
int len,
int loc,
int set);
1110 ASN1_OBJECT *obj,
int type,
const unsigned char *bytes,
1115 const unsigned char *bytes,
int len);
1121 int nid,
int lastpos);
1125 int crit,
int lastpos);
1131 int X509_get_ext_count(X509 *x);
1132 int X509_get_ext_by_NID(X509 *x,
int nid,
int lastpos);
1133 int X509_get_ext_by_OBJ(X509 *x,
ASN1_OBJECT *obj,
int lastpos);
1134 int X509_get_ext_by_critical(X509 *x,
int crit,
int lastpos);
1138 void * X509_get_ext_d2i(X509 *x,
int nid,
int *crit,
int *idx);
1139 int X509_add1_ext_i2d(X509 *x,
int nid,
void *value,
int crit,
1140 unsigned long flags);
1142 int X509_CRL_get_ext_count(
X509_CRL *x);
1143 int X509_CRL_get_ext_by_NID(
X509_CRL *x,
int nid,
int lastpos);
1145 int X509_CRL_get_ext_by_critical(
X509_CRL *x,
int crit,
int lastpos);
1149 void * X509_CRL_get_ext_d2i(
X509_CRL *x,
int nid,
int *crit,
int *idx);
1150 int X509_CRL_add1_ext_i2d(
X509_CRL *x,
int nid,
void *value,
int crit,
1151 unsigned long flags);
1154 int X509_REVOKED_get_ext_by_NID(
X509_REVOKED *x,
int nid,
int lastpos);
1156 int X509_REVOKED_get_ext_by_critical(
X509_REVOKED *x,
int crit,
int lastpos);
1160 void * X509_REVOKED_get_ext_d2i(
X509_REVOKED *x,
int nid,
int *crit,
int *idx);
1161 int X509_REVOKED_add1_ext_i2d(
X509_REVOKED *x,
int nid,
void *value,
int crit,
1162 unsigned long flags);
1187 const unsigned char *bytes,
int len);
1190 const unsigned char *bytes,
int len);
1192 const char *attrname,
int type,
1193 const unsigned char *bytes,
int len);
1195 int atrtype,
const void *data,
int len);
1197 const ASN1_OBJECT *obj,
int atrtype,
const void *data,
int len);
1199 const char *atrname,
int type,
const unsigned char *bytes,
int len);
1201 int X509_ATTRIBUTE_set1_data(
X509_ATTRIBUTE *attr,
int attrtype,
const void *data,
int len);
1203 int atrtype,
void *data);
1208 int EVP_PKEY_get_attr_count(
const EVP_PKEY *key);
1209 int EVP_PKEY_get_attr_by_NID(
const EVP_PKEY *key,
int nid,
1216 int EVP_PKEY_add1_attr_by_OBJ(
EVP_PKEY *key,
1218 const unsigned char *bytes,
int len);
1219 int EVP_PKEY_add1_attr_by_NID(
EVP_PKEY *key,
1221 const unsigned char *bytes,
int len);
1222 int EVP_PKEY_add1_attr_by_txt(
EVP_PKEY *key,
1223 const char *attrname,
int type,
1224 const unsigned char *bytes,
int len);
1237 X509_ALGOR *PKCS5_pbe_set(
int alg,
int iter,
unsigned char *salt,
int saltlen);
1239 unsigned char *salt,
int saltlen);
1250 int X509_check_trust(X509 *x,
int id,
int flags);
1251 int X509_TRUST_get_count(
void);
1253 int X509_TRUST_get_by_id(
int id);
1254 int X509_TRUST_add(
int id,
int flags,
int (*ck)(
X509_TRUST *, X509 *,
int),
1255 char *name,
int arg1,
void *arg2);
1256 void X509_TRUST_cleanup(
void);
1257 int X509_TRUST_get_flags(X509_TRUST *xp);
1258 char *X509_TRUST_get0_name(X509_TRUST *xp);
1259 int X509_TRUST_get_trust(X509_TRUST *xp);
1265 void ERR_load_X509_strings(
void);
1270 #define X509_F_ADD_CERT_DIR 100
1271 #define X509_F_BY_FILE_CTRL 101
1272 #define X509_F_CHECK_POLICY 145
1273 #define X509_F_DIR_CTRL 102
1274 #define X509_F_GET_CERT_BY_SUBJECT 103
1275 #define X509_F_NETSCAPE_SPKI_B64_DECODE 129
1276 #define X509_F_NETSCAPE_SPKI_B64_ENCODE 130
1277 #define X509_F_X509AT_ADD1_ATTR 135
1278 #define X509_F_X509V3_ADD_EXT 104
1279 #define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136
1280 #define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137
1281 #define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140
1282 #define X509_F_X509_ATTRIBUTE_GET0_DATA 139
1283 #define X509_F_X509_ATTRIBUTE_SET1_DATA 138
1284 #define X509_F_X509_CHECK_PRIVATE_KEY 128
1285 #define X509_F_X509_CRL_PRINT_FP 147
1286 #define X509_F_X509_EXTENSION_CREATE_BY_NID 108
1287 #define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109
1288 #define X509_F_X509_GET_PUBKEY_PARAMETERS 110
1289 #define X509_F_X509_LOAD_CERT_CRL_FILE 132
1290 #define X509_F_X509_LOAD_CERT_FILE 111
1291 #define X509_F_X509_LOAD_CRL_FILE 112
1292 #define X509_F_X509_NAME_ADD_ENTRY 113
1293 #define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114
1294 #define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131
1295 #define X509_F_X509_NAME_ENTRY_SET_OBJECT 115
1296 #define X509_F_X509_NAME_ONELINE 116
1297 #define X509_F_X509_NAME_PRINT 117
1298 #define X509_F_X509_PRINT_EX_FP 118
1299 #define X509_F_X509_PUBKEY_GET 119
1300 #define X509_F_X509_PUBKEY_SET 120
1301 #define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144
1302 #define X509_F_X509_REQ_PRINT_EX 121
1303 #define X509_F_X509_REQ_PRINT_FP 122
1304 #define X509_F_X509_REQ_TO_X509 123
1305 #define X509_F_X509_STORE_ADD_CERT 124
1306 #define X509_F_X509_STORE_ADD_CRL 125
1307 #define X509_F_X509_STORE_CTX_GET1_ISSUER 146
1308 #define X509_F_X509_STORE_CTX_INIT 143
1309 #define X509_F_X509_STORE_CTX_NEW 142
1310 #define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134
1311 #define X509_F_X509_TO_X509_REQ 126
1312 #define X509_F_X509_TRUST_ADD 133
1313 #define X509_F_X509_TRUST_SET 141
1314 #define X509_F_X509_VERIFY_CERT 127
1317 #define X509_R_BAD_X509_FILETYPE 100
1318 #define X509_R_BASE64_DECODE_ERROR 118
1319 #define X509_R_CANT_CHECK_DH_KEY 114
1320 #define X509_R_CERT_ALREADY_IN_HASH_TABLE 101
1321 #define X509_R_ERR_ASN1_LIB 102
1322 #define X509_R_INVALID_DIRECTORY 113
1323 #define X509_R_INVALID_FIELD_NAME 119
1324 #define X509_R_INVALID_TRUST 123
1325 #define X509_R_KEY_TYPE_MISMATCH 115
1326 #define X509_R_KEY_VALUES_MISMATCH 116
1327 #define X509_R_LOADING_CERT_DIR 103
1328 #define X509_R_LOADING_DEFAULTS 104
1329 #define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105
1330 #define X509_R_SHOULD_RETRY 106
1331 #define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107
1332 #define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108
1333 #define X509_R_UNKNOWN_KEY_TYPE 117
1334 #define X509_R_UNKNOWN_NID 109
1335 #define X509_R_UNKNOWN_PURPOSE_ID 121
1336 #define X509_R_UNKNOWN_TRUST_ID 120
1337 #define X509_R_UNSUPPORTED_ALGORITHM 111
1338 #define X509_R_WRONG_LOOKUP_TYPE 112
1339 #define X509_R_WRONG_TYPE 122
STACK_OF(X509_NAME)
Definition: ssl_cert.c:554
Definition: pcy_int.h:125
Definition: x509_vfy.h:230