00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064 #ifndef HEADER_X509_H
00065 #define HEADER_X509_H
00066
00067 #include <openssl/e_os2.h>
00068 #include <openssl/symhacks.h>
00069 #ifndef OPENSSL_NO_BUFFER
00070 #include <openssl/buffer.h>
00071 #endif
00072 #ifndef OPENSSL_NO_EVP
00073 #include <openssl/evp.h>
00074 #endif
00075 #ifndef OPENSSL_NO_BIO
00076 #include <openssl/bio.h>
00077 #endif
00078 #include <openssl/stack.h>
00079 #include <openssl/asn1.h>
00080 #include <openssl/safestack.h>
00081
00082 #ifndef OPENSSL_NO_EC
00083 #include <openssl/ec.h>
00084 #endif
00085
00086 #ifndef OPENSSL_NO_ECDSA
00087 #include <openssl/ecdsa.h>
00088 #endif
00089
00090 #ifndef OPENSSL_NO_ECDH
00091 #include <openssl/ecdh.h>
00092 #endif
00093
00094 #ifndef OPENSSL_NO_DEPRECATED
00095 #ifndef OPENSSL_NO_RSA
00096 #include <openssl/rsa.h>
00097 #endif
00098 #ifndef OPENSSL_NO_DSA
00099 #include <openssl/dsa.h>
00100 #endif
00101 #ifndef OPENSSL_NO_DH
00102 #include <openssl/dh.h>
00103 #endif
00104 #endif
00105
00106 #ifndef OPENSSL_NO_SHA
00107 #include <openssl/sha.h>
00108 #endif
00109 #include <openssl/ossl_typ.h>
00110
00111 #ifdef __cplusplus
00112 extern "C" {
00113 #endif
00114
00115 #ifdef OPENSSL_SYS_WIN32
00116
00117 #undef X509_NAME
00118 #undef X509_CERT_PAIR
00119 #endif
00120
00121 #define X509_FILETYPE_PEM 1
00122 #define X509_FILETYPE_ASN1 2
00123 #define X509_FILETYPE_DEFAULT 3
00124
00125 #define X509v3_KU_DIGITAL_SIGNATURE 0x0080
00126 #define X509v3_KU_NON_REPUDIATION 0x0040
00127 #define X509v3_KU_KEY_ENCIPHERMENT 0x0020
00128 #define X509v3_KU_DATA_ENCIPHERMENT 0x0010
00129 #define X509v3_KU_KEY_AGREEMENT 0x0008
00130 #define X509v3_KU_KEY_CERT_SIGN 0x0004
00131 #define X509v3_KU_CRL_SIGN 0x0002
00132 #define X509v3_KU_ENCIPHER_ONLY 0x0001
00133 #define X509v3_KU_DECIPHER_ONLY 0x8000
00134 #define X509v3_KU_UNDEF 0xffff
00135
00136 typedef struct X509_objects_st
00137 {
00138 int nid;
00139 int (*a2i)(void);
00140 int (*i2a)(void);
00141 } X509_OBJECTS;
00142
00143 struct X509_algor_st
00144 {
00145 ASN1_OBJECT *algorithm;
00146 ASN1_TYPE *parameter;
00147 } ;
00148
00149 DECLARE_STACK_OF(X509_ALGOR)
00150 DECLARE_ASN1_SET_OF(X509_ALGOR)
00151
00152 typedef struct X509_val_st
00153 {
00154 ASN1_TIME *notBefore;
00155 ASN1_TIME *notAfter;
00156 } X509_VAL;
00157
00158 typedef struct X509_pubkey_st
00159 {
00160 X509_ALGOR *algor;
00161 ASN1_BIT_STRING *public_key;
00162 EVP_PKEY *pkey;
00163 } X509_PUBKEY;
00164
00165 typedef struct X509_sig_st
00166 {
00167 X509_ALGOR *algor;
00168 ASN1_OCTET_STRING *digest;
00169 } X509_SIG;
00170
00171 typedef struct X509_name_entry_st
00172 {
00173 ASN1_OBJECT *object;
00174 ASN1_STRING *value;
00175 int set;
00176 int size;
00177 } X509_NAME_ENTRY;
00178
00179 DECLARE_STACK_OF(X509_NAME_ENTRY)
00180 DECLARE_ASN1_SET_OF(X509_NAME_ENTRY)
00181
00182
00183 struct X509_name_st
00184 {
00185 STACK_OF(X509_NAME_ENTRY) *entries;
00186 int modified;
00187 #ifndef OPENSSL_NO_BUFFER
00188 BUF_MEM *bytes;
00189 #else
00190 char *bytes;
00191 #endif
00192 unsigned long hash;
00193 } ;
00194
00195 DECLARE_STACK_OF(X509_NAME)
00196
00197 #define X509_EX_V_NETSCAPE_HACK 0x8000
00198 #define X509_EX_V_INIT 0x0001
00199 typedef struct X509_extension_st
00200 {
00201 ASN1_OBJECT *object;
00202 ASN1_BOOLEAN critical;
00203 ASN1_OCTET_STRING *value;
00204 } X509_EXTENSION;
00205
00206 DECLARE_STACK_OF(X509_EXTENSION)
00207 DECLARE_ASN1_SET_OF(X509_EXTENSION)
00208
00209
00210 typedef struct x509_attributes_st
00211 {
00212 ASN1_OBJECT *object;
00213 int single;
00214 union {
00215 char *ptr;
00216 STACK_OF(ASN1_TYPE) *set;
00217 ASN1_TYPE *single;
00218 } value;
00219 } X509_ATTRIBUTE;
00220
00221 DECLARE_STACK_OF(X509_ATTRIBUTE)
00222 DECLARE_ASN1_SET_OF(X509_ATTRIBUTE)
00223
00224
00225 typedef struct X509_req_info_st
00226 {
00227 ASN1_ENCODING enc;
00228 ASN1_INTEGER *version;
00229 X509_NAME *subject;
00230 X509_PUBKEY *pubkey;
00231
00232 STACK_OF(X509_ATTRIBUTE) *attributes;
00233 } X509_REQ_INFO;
00234
00235 typedef struct X509_req_st
00236 {
00237 X509_REQ_INFO *req_info;
00238 X509_ALGOR *sig_alg;
00239 ASN1_BIT_STRING *signature;
00240 int references;
00241 } X509_REQ;
00242
00243 typedef struct x509_cinf_st
00244 {
00245 ASN1_INTEGER *version;
00246 ASN1_INTEGER *serialNumber;
00247 X509_ALGOR *signature;
00248 X509_NAME *issuer;
00249 X509_VAL *validity;
00250 X509_NAME *subject;
00251 X509_PUBKEY *key;
00252 ASN1_BIT_STRING *issuerUID;
00253 ASN1_BIT_STRING *subjectUID;
00254 STACK_OF(X509_EXTENSION) *extensions;
00255 } X509_CINF;
00256
00257
00258
00259
00260
00261
00262
00263 typedef struct x509_cert_aux_st
00264 {
00265 STACK_OF(ASN1_OBJECT) *trust;
00266 STACK_OF(ASN1_OBJECT) *reject;
00267 ASN1_UTF8STRING *alias;
00268 ASN1_OCTET_STRING *keyid;
00269 STACK_OF(X509_ALGOR) *other;
00270 } X509_CERT_AUX;
00271
00272 struct x509_st
00273 {
00274 X509_CINF *cert_info;
00275 X509_ALGOR *sig_alg;
00276 ASN1_BIT_STRING *signature;
00277 int valid;
00278 int references;
00279 char *name;
00280 CRYPTO_EX_DATA ex_data;
00281
00282 long ex_pathlen;
00283 long ex_pcpathlen;
00284 unsigned long ex_flags;
00285 unsigned long ex_kusage;
00286 unsigned long ex_xkusage;
00287 unsigned long ex_nscert;
00288 ASN1_OCTET_STRING *skid;
00289 struct AUTHORITY_KEYID_st *akid;
00290 X509_POLICY_CACHE *policy_cache;
00291 #ifndef OPENSSL_NO_RFC3779
00292 STACK_OF(IPAddressFamily) *rfc3779_addr;
00293 struct ASIdentifiers_st *rfc3779_asid;
00294 #endif
00295 #ifndef OPENSSL_NO_SHA
00296 unsigned char sha1_hash[SHA_DIGEST_LENGTH];
00297 #endif
00298 X509_CERT_AUX *aux;
00299 } ;
00300
00301 DECLARE_STACK_OF(X509)
00302 DECLARE_ASN1_SET_OF(X509)
00303
00304
00305
00306 typedef struct x509_trust_st {
00307 int trust;
00308 int flags;
00309 int (*check_trust)(struct x509_trust_st *, X509 *, int);
00310 char *name;
00311 int arg1;
00312 void *arg2;
00313 } X509_TRUST;
00314
00315 DECLARE_STACK_OF(X509_TRUST)
00316
00317 typedef struct x509_cert_pair_st {
00318 X509 *forward;
00319 X509 *reverse;
00320 } X509_CERT_PAIR;
00321
00322
00323
00324 #define X509_TRUST_DEFAULT -1
00325
00326 #define X509_TRUST_COMPAT 1
00327 #define X509_TRUST_SSL_CLIENT 2
00328 #define X509_TRUST_SSL_SERVER 3
00329 #define X509_TRUST_EMAIL 4
00330 #define X509_TRUST_OBJECT_SIGN 5
00331 #define X509_TRUST_OCSP_SIGN 6
00332 #define X509_TRUST_OCSP_REQUEST 7
00333
00334
00335 #define X509_TRUST_MIN 1
00336 #define X509_TRUST_MAX 7
00337
00338
00339
00340 #define X509_TRUST_DYNAMIC 1
00341 #define X509_TRUST_DYNAMIC_NAME 2
00342
00343
00344
00345 #define X509_TRUST_TRUSTED 1
00346 #define X509_TRUST_REJECTED 2
00347 #define X509_TRUST_UNTRUSTED 3
00348
00349
00350
00351 #define X509_FLAG_COMPAT 0
00352 #define X509_FLAG_NO_HEADER 1L
00353 #define X509_FLAG_NO_VERSION (1L << 1)
00354 #define X509_FLAG_NO_SERIAL (1L << 2)
00355 #define X509_FLAG_NO_SIGNAME (1L << 3)
00356 #define X509_FLAG_NO_ISSUER (1L << 4)
00357 #define X509_FLAG_NO_VALIDITY (1L << 5)
00358 #define X509_FLAG_NO_SUBJECT (1L << 6)
00359 #define X509_FLAG_NO_PUBKEY (1L << 7)
00360 #define X509_FLAG_NO_EXTENSIONS (1L << 8)
00361 #define X509_FLAG_NO_SIGDUMP (1L << 9)
00362 #define X509_FLAG_NO_AUX (1L << 10)
00363 #define X509_FLAG_NO_ATTRIBUTES (1L << 11)
00364
00365
00366
00367
00368
00369 #define XN_FLAG_SEP_MASK (0xf << 16)
00370
00371 #define XN_FLAG_COMPAT 0
00372 #define XN_FLAG_SEP_COMMA_PLUS (1 << 16)
00373 #define XN_FLAG_SEP_CPLUS_SPC (2 << 16)
00374 #define XN_FLAG_SEP_SPLUS_SPC (3 << 16)
00375 #define XN_FLAG_SEP_MULTILINE (4 << 16)
00376
00377 #define XN_FLAG_DN_REV (1 << 20)
00378
00379
00380
00381 #define XN_FLAG_FN_MASK (0x3 << 21)
00382
00383 #define XN_FLAG_FN_SN 0
00384 #define XN_FLAG_FN_LN (1 << 21)
00385 #define XN_FLAG_FN_OID (2 << 21)
00386 #define XN_FLAG_FN_NONE (3 << 21)
00387
00388 #define XN_FLAG_SPC_EQ (1 << 23)
00389
00390
00391
00392
00393
00394 #define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24)
00395
00396 #define XN_FLAG_FN_ALIGN (1 << 25)
00397
00398
00399
00400 #define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \
00401 XN_FLAG_SEP_COMMA_PLUS | \
00402 XN_FLAG_DN_REV | \
00403 XN_FLAG_FN_SN | \
00404 XN_FLAG_DUMP_UNKNOWN_FIELDS)
00405
00406
00407
00408 #define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \
00409 ASN1_STRFLGS_ESC_QUOTE | \
00410 XN_FLAG_SEP_CPLUS_SPC | \
00411 XN_FLAG_SPC_EQ | \
00412 XN_FLAG_FN_SN)
00413
00414
00415
00416 #define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \
00417 ASN1_STRFLGS_ESC_MSB | \
00418 XN_FLAG_SEP_MULTILINE | \
00419 XN_FLAG_SPC_EQ | \
00420 XN_FLAG_FN_LN | \
00421 XN_FLAG_FN_ALIGN)
00422
00423 typedef struct X509_revoked_st
00424 {
00425 ASN1_INTEGER *serialNumber;
00426 ASN1_TIME *revocationDate;
00427 STACK_OF(X509_EXTENSION) *extensions;
00428 int sequence;
00429 } X509_REVOKED;
00430
00431 DECLARE_STACK_OF(X509_REVOKED)
00432 DECLARE_ASN1_SET_OF(X509_REVOKED)
00433
00434 typedef struct X509_crl_info_st
00435 {
00436 ASN1_INTEGER *version;
00437 X509_ALGOR *sig_alg;
00438 X509_NAME *issuer;
00439 ASN1_TIME *lastUpdate;
00440 ASN1_TIME *nextUpdate;
00441 STACK_OF(X509_REVOKED) *revoked;
00442 STACK_OF(X509_EXTENSION) *extensions;
00443 ASN1_ENCODING enc;
00444 } X509_CRL_INFO;
00445
00446 struct X509_crl_st
00447 {
00448
00449 X509_CRL_INFO *crl;
00450 X509_ALGOR *sig_alg;
00451 ASN1_BIT_STRING *signature;
00452 int references;
00453 } ;
00454
00455 DECLARE_STACK_OF(X509_CRL)
00456 DECLARE_ASN1_SET_OF(X509_CRL)
00457
00458 typedef struct private_key_st
00459 {
00460 int version;
00461
00462 X509_ALGOR *enc_algor;
00463 ASN1_OCTET_STRING *enc_pkey;
00464
00465
00466 EVP_PKEY *dec_pkey;
00467
00468
00469 int key_length;
00470 char *key_data;
00471 int key_free;
00472
00473
00474 EVP_CIPHER_INFO cipher;
00475
00476 int references;
00477 } X509_PKEY;
00478
00479 #ifndef OPENSSL_NO_EVP
00480 typedef struct X509_info_st
00481 {
00482 X509 *x509;
00483 X509_CRL *crl;
00484 X509_PKEY *x_pkey;
00485
00486 EVP_CIPHER_INFO enc_cipher;
00487 int enc_len;
00488 char *enc_data;
00489
00490 int references;
00491 } X509_INFO;
00492
00493 DECLARE_STACK_OF(X509_INFO)
00494 #endif
00495
00496
00497
00498
00499
00500 typedef struct Netscape_spkac_st
00501 {
00502 X509_PUBKEY *pubkey;
00503 ASN1_IA5STRING *challenge;
00504 } NETSCAPE_SPKAC;
00505
00506 typedef struct Netscape_spki_st
00507 {
00508 NETSCAPE_SPKAC *spkac;
00509 X509_ALGOR *sig_algor;
00510 ASN1_BIT_STRING *signature;
00511 } NETSCAPE_SPKI;
00512
00513
00514 typedef struct Netscape_certificate_sequence
00515 {
00516 ASN1_OBJECT *type;
00517 STACK_OF(X509) *certs;
00518 } NETSCAPE_CERT_SEQUENCE;
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529 typedef struct PBEPARAM_st {
00530 ASN1_OCTET_STRING *salt;
00531 ASN1_INTEGER *iter;
00532 } PBEPARAM;
00533
00534
00535
00536 typedef struct PBE2PARAM_st {
00537 X509_ALGOR *keyfunc;
00538 X509_ALGOR *encryption;
00539 } PBE2PARAM;
00540
00541 typedef struct PBKDF2PARAM_st {
00542 ASN1_TYPE *salt;
00543 ASN1_INTEGER *iter;
00544 ASN1_INTEGER *keylength;
00545 X509_ALGOR *prf;
00546 } PBKDF2PARAM;
00547
00548
00549
00550
00551 typedef struct pkcs8_priv_key_info_st
00552 {
00553 int broken;
00554 #define PKCS8_OK 0
00555 #define PKCS8_NO_OCTET 1
00556 #define PKCS8_EMBEDDED_PARAM 2
00557 #define PKCS8_NS_DB 3
00558 ASN1_INTEGER *version;
00559 X509_ALGOR *pkeyalg;
00560 ASN1_TYPE *pkey;
00561 STACK_OF(X509_ATTRIBUTE) *attributes;
00562 } PKCS8_PRIV_KEY_INFO;
00563
00564 #ifdef __cplusplus
00565 }
00566 #endif
00567
00568 #include <openssl/x509_vfy.h>
00569 #include <openssl/pkcs7.h>
00570
00571 #ifdef __cplusplus
00572 extern "C" {
00573 #endif
00574
00575 #ifdef SSLEAY_MACROS
00576 #define X509_verify(a,r) ASN1_verify((int (*)())i2d_X509_CINF,a->sig_alg,\
00577 a->signature,(char *)a->cert_info,r)
00578 #define X509_REQ_verify(a,r) ASN1_verify((int (*)())i2d_X509_REQ_INFO, \
00579 a->sig_alg,a->signature,(char *)a->req_info,r)
00580 #define X509_CRL_verify(a,r) ASN1_verify((int (*)())i2d_X509_CRL_INFO, \
00581 a->sig_alg, a->signature,(char *)a->crl,r)
00582
00583 #define X509_sign(x,pkey,md) \
00584 ASN1_sign((int (*)())i2d_X509_CINF, x->cert_info->signature, \
00585 x->sig_alg, x->signature, (char *)x->cert_info,pkey,md)
00586 #define X509_REQ_sign(x,pkey,md) \
00587 ASN1_sign((int (*)())i2d_X509_REQ_INFO,x->sig_alg, NULL, \
00588 x->signature, (char *)x->req_info,pkey,md)
00589 #define X509_CRL_sign(x,pkey,md) \
00590 ASN1_sign((int (*)())i2d_X509_CRL_INFO,x->crl->sig_alg,x->sig_alg, \
00591 x->signature, (char *)x->crl,pkey,md)
00592 #define NETSCAPE_SPKI_sign(x,pkey,md) \
00593 ASN1_sign((int (*)())i2d_NETSCAPE_SPKAC, x->sig_algor,NULL, \
00594 x->signature, (char *)x->spkac,pkey,md)
00595
00596 #define X509_dup(x509) (X509 *)ASN1_dup((int (*)())i2d_X509, \
00597 (char *(*)())d2i_X509,(char *)x509)
00598 #define X509_ATTRIBUTE_dup(xa) (X509_ATTRIBUTE *)ASN1_dup(\
00599 (int (*)())i2d_X509_ATTRIBUTE, \
00600 (char *(*)())d2i_X509_ATTRIBUTE,(char *)xa)
00601 #define X509_EXTENSION_dup(ex) (X509_EXTENSION *)ASN1_dup( \
00602 (int (*)())i2d_X509_EXTENSION, \
00603 (char *(*)())d2i_X509_EXTENSION,(char *)ex)
00604 #define d2i_X509_fp(fp,x509) (X509 *)ASN1_d2i_fp((char *(*)())X509_new, \
00605 (char *(*)())d2i_X509, (fp),(unsigned char **)(x509))
00606 #define i2d_X509_fp(fp,x509) ASN1_i2d_fp(i2d_X509,fp,(unsigned char *)x509)
00607 #define d2i_X509_bio(bp,x509) (X509 *)ASN1_d2i_bio((char *(*)())X509_new, \
00608 (char *(*)())d2i_X509, (bp),(unsigned char **)(x509))
00609 #define i2d_X509_bio(bp,x509) ASN1_i2d_bio(i2d_X509,bp,(unsigned char *)x509)
00610
00611 #define X509_CRL_dup(crl) (X509_CRL *)ASN1_dup((int (*)())i2d_X509_CRL, \
00612 (char *(*)())d2i_X509_CRL,(char *)crl)
00613 #define d2i_X509_CRL_fp(fp,crl) (X509_CRL *)ASN1_d2i_fp((char *(*)()) \
00614 X509_CRL_new,(char *(*)())d2i_X509_CRL, (fp),\
00615 (unsigned char **)(crl))
00616 #define i2d_X509_CRL_fp(fp,crl) ASN1_i2d_fp(i2d_X509_CRL,fp,\
00617 (unsigned char *)crl)
00618 #define d2i_X509_CRL_bio(bp,crl) (X509_CRL *)ASN1_d2i_bio((char *(*)()) \
00619 X509_CRL_new,(char *(*)())d2i_X509_CRL, (bp),\
00620 (unsigned char **)(crl))
00621 #define i2d_X509_CRL_bio(bp,crl) ASN1_i2d_bio(i2d_X509_CRL,bp,\
00622 (unsigned char *)crl)
00623
00624 #define PKCS7_dup(p7) (PKCS7 *)ASN1_dup((int (*)())i2d_PKCS7, \
00625 (char *(*)())d2i_PKCS7,(char *)p7)
00626 #define d2i_PKCS7_fp(fp,p7) (PKCS7 *)ASN1_d2i_fp((char *(*)()) \
00627 PKCS7_new,(char *(*)())d2i_PKCS7, (fp),\
00628 (unsigned char **)(p7))
00629 #define i2d_PKCS7_fp(fp,p7) ASN1_i2d_fp(i2d_PKCS7,fp,\
00630 (unsigned char *)p7)
00631 #define d2i_PKCS7_bio(bp,p7) (PKCS7 *)ASN1_d2i_bio((char *(*)()) \
00632 PKCS7_new,(char *(*)())d2i_PKCS7, (bp),\
00633 (unsigned char **)(p7))
00634 #define i2d_PKCS7_bio(bp,p7) ASN1_i2d_bio(i2d_PKCS7,bp,\
00635 (unsigned char *)p7)
00636
00637 #define X509_REQ_dup(req) (X509_REQ *)ASN1_dup((int (*)())i2d_X509_REQ, \
00638 (char *(*)())d2i_X509_REQ,(char *)req)
00639 #define d2i_X509_REQ_fp(fp,req) (X509_REQ *)ASN1_d2i_fp((char *(*)())\
00640 X509_REQ_new, (char *(*)())d2i_X509_REQ, (fp),\
00641 (unsigned char **)(req))
00642 #define i2d_X509_REQ_fp(fp,req) ASN1_i2d_fp(i2d_X509_REQ,fp,\
00643 (unsigned char *)req)
00644 #define d2i_X509_REQ_bio(bp,req) (X509_REQ *)ASN1_d2i_bio((char *(*)())\
00645 X509_REQ_new, (char *(*)())d2i_X509_REQ, (bp),\
00646 (unsigned char **)(req))
00647 #define i2d_X509_REQ_bio(bp,req) ASN1_i2d_bio(i2d_X509_REQ,bp,\
00648 (unsigned char *)req)
00649
00650 #define RSAPublicKey_dup(rsa) (RSA *)ASN1_dup((int (*)())i2d_RSAPublicKey, \
00651 (char *(*)())d2i_RSAPublicKey,(char *)rsa)
00652 #define RSAPrivateKey_dup(rsa) (RSA *)ASN1_dup((int (*)())i2d_RSAPrivateKey, \
00653 (char *(*)())d2i_RSAPrivateKey,(char *)rsa)
00654
00655 #define d2i_RSAPrivateKey_fp(fp,rsa) (RSA *)ASN1_d2i_fp((char *(*)())\
00656 RSA_new,(char *(*)())d2i_RSAPrivateKey, (fp), \
00657 (unsigned char **)(rsa))
00658 #define i2d_RSAPrivateKey_fp(fp,rsa) ASN1_i2d_fp(i2d_RSAPrivateKey,fp, \
00659 (unsigned char *)rsa)
00660 #define d2i_RSAPrivateKey_bio(bp,rsa) (RSA *)ASN1_d2i_bio((char *(*)())\
00661 RSA_new,(char *(*)())d2i_RSAPrivateKey, (bp), \
00662 (unsigned char **)(rsa))
00663 #define i2d_RSAPrivateKey_bio(bp,rsa) ASN1_i2d_bio(i2d_RSAPrivateKey,bp, \
00664 (unsigned char *)rsa)
00665
00666 #define d2i_RSAPublicKey_fp(fp,rsa) (RSA *)ASN1_d2i_fp((char *(*)())\
00667 RSA_new,(char *(*)())d2i_RSAPublicKey, (fp), \
00668 (unsigned char **)(rsa))
00669 #define i2d_RSAPublicKey_fp(fp,rsa) ASN1_i2d_fp(i2d_RSAPublicKey,fp, \
00670 (unsigned char *)rsa)
00671 #define d2i_RSAPublicKey_bio(bp,rsa) (RSA *)ASN1_d2i_bio((char *(*)())\
00672 RSA_new,(char *(*)())d2i_RSAPublicKey, (bp), \
00673 (unsigned char **)(rsa))
00674 #define i2d_RSAPublicKey_bio(bp,rsa) ASN1_i2d_bio(i2d_RSAPublicKey,bp, \
00675 (unsigned char *)rsa)
00676
00677 #define d2i_DSAPrivateKey_fp(fp,dsa) (DSA *)ASN1_d2i_fp((char *(*)())\
00678 DSA_new,(char *(*)())d2i_DSAPrivateKey, (fp), \
00679 (unsigned char **)(dsa))
00680 #define i2d_DSAPrivateKey_fp(fp,dsa) ASN1_i2d_fp(i2d_DSAPrivateKey,fp, \
00681 (unsigned char *)dsa)
00682 #define d2i_DSAPrivateKey_bio(bp,dsa) (DSA *)ASN1_d2i_bio((char *(*)())\
00683 DSA_new,(char *(*)())d2i_DSAPrivateKey, (bp), \
00684 (unsigned char **)(dsa))
00685 #define i2d_DSAPrivateKey_bio(bp,dsa) ASN1_i2d_bio(i2d_DSAPrivateKey,bp, \
00686 (unsigned char *)dsa)
00687
00688 #define d2i_ECPrivateKey_fp(fp,ecdsa) (EC_KEY *)ASN1_d2i_fp((char *(*)())\
00689 EC_KEY_new,(char *(*)())d2i_ECPrivateKey, (fp), \
00690 (unsigned char **)(ecdsa))
00691 #define i2d_ECPrivateKey_fp(fp,ecdsa) ASN1_i2d_fp(i2d_ECPrivateKey,fp, \
00692 (unsigned char *)ecdsa)
00693 #define d2i_ECPrivateKey_bio(bp,ecdsa) (EC_KEY *)ASN1_d2i_bio((char *(*)())\
00694 EC_KEY_new,(char *(*)())d2i_ECPrivateKey, (bp), \
00695 (unsigned char **)(ecdsa))
00696 #define i2d_ECPrivateKey_bio(bp,ecdsa) ASN1_i2d_bio(i2d_ECPrivateKey,bp, \
00697 (unsigned char *)ecdsa)
00698
00699 #define X509_ALGOR_dup(xn) (X509_ALGOR *)ASN1_dup((int (*)())i2d_X509_ALGOR,\
00700 (char *(*)())d2i_X509_ALGOR,(char *)xn)
00701
00702 #define X509_NAME_dup(xn) (X509_NAME *)ASN1_dup((int (*)())i2d_X509_NAME, \
00703 (char *(*)())d2i_X509_NAME,(char *)xn)
00704 #define X509_NAME_ENTRY_dup(ne) (X509_NAME_ENTRY *)ASN1_dup( \
00705 (int (*)())i2d_X509_NAME_ENTRY, \
00706 (char *(*)())d2i_X509_NAME_ENTRY,\
00707 (char *)ne)
00708
00709 #define X509_digest(data,type,md,len) \
00710 ASN1_digest((int (*)())i2d_X509,type,(char *)data,md,len)
00711 #define X509_NAME_digest(data,type,md,len) \
00712 ASN1_digest((int (*)())i2d_X509_NAME,type,(char *)data,md,len)
00713 #ifndef PKCS7_ISSUER_AND_SERIAL_digest
00714 #define PKCS7_ISSUER_AND_SERIAL_digest(data,type,md,len) \
00715 ASN1_digest((int (*)())i2d_PKCS7_ISSUER_AND_SERIAL,type,\
00716 (char *)data,md,len)
00717 #endif
00718 #endif
00719
00720 #define X509_EXT_PACK_UNKNOWN 1
00721 #define X509_EXT_PACK_STRING 2
00722
00723 #define X509_get_version(x) ASN1_INTEGER_get((x)->cert_info->version)
00724
00725 #define X509_get_notBefore(x) ((x)->cert_info->validity->notBefore)
00726 #define X509_get_notAfter(x) ((x)->cert_info->validity->notAfter)
00727 #define X509_extract_key(x) X509_get_pubkey(x)
00728 #define X509_REQ_get_version(x) ASN1_INTEGER_get((x)->req_info->version)
00729 #define X509_REQ_get_subject_name(x) ((x)->req_info->subject)
00730 #define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a)
00731 #define X509_name_cmp(a,b) X509_NAME_cmp((a),(b))
00732 #define X509_get_signature_type(x) EVP_PKEY_type(OBJ_obj2nid((x)->sig_alg->algorithm))
00733
00734 #define X509_CRL_get_version(x) ASN1_INTEGER_get((x)->crl->version)
00735 #define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate)
00736 #define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate)
00737 #define X509_CRL_get_issuer(x) ((x)->crl->issuer)
00738 #define X509_CRL_get_REVOKED(x) ((x)->crl->revoked)
00739
00740
00741
00742 #define X509_get_X509_PUBKEY(x) ((x)->cert_info->key)
00743
00744
00745 const char *X509_verify_cert_error_string(long n);
00746
00747 #ifndef SSLEAY_MACROS
00748 #ifndef OPENSSL_NO_EVP
00749 int X509_verify(X509 *a, EVP_PKEY *r);
00750
00751 int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r);
00752 int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r);
00753 int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r);
00754
00755 NETSCAPE_SPKI * NETSCAPE_SPKI_b64_decode(const char *str, int len);
00756 char * NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x);
00757 EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x);
00758 int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey);
00759
00760 int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki);
00761
00762 int X509_signature_print(BIO *bp,X509_ALGOR *alg, ASN1_STRING *sig);
00763
00764 int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
00765 int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md);
00766 int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md);
00767 int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md);
00768
00769 int X509_pubkey_digest(const X509 *data,const EVP_MD *type,
00770 unsigned char *md, unsigned int *len);
00771 int X509_digest(const X509 *data,const EVP_MD *type,
00772 unsigned char *md, unsigned int *len);
00773 int X509_CRL_digest(const X509_CRL *data,const EVP_MD *type,
00774 unsigned char *md, unsigned int *len);
00775 int X509_REQ_digest(const X509_REQ *data,const EVP_MD *type,
00776 unsigned char *md, unsigned int *len);
00777 int X509_NAME_digest(const X509_NAME *data,const EVP_MD *type,
00778 unsigned char *md, unsigned int *len);
00779 #endif
00780
00781 #ifndef OPENSSL_NO_FP_API
00782 X509 *d2i_X509_fp(FILE *fp, X509 **x509);
00783 int i2d_X509_fp(FILE *fp,X509 *x509);
00784 X509_CRL *d2i_X509_CRL_fp(FILE *fp,X509_CRL **crl);
00785 int i2d_X509_CRL_fp(FILE *fp,X509_CRL *crl);
00786 X509_REQ *d2i_X509_REQ_fp(FILE *fp,X509_REQ **req);
00787 int i2d_X509_REQ_fp(FILE *fp,X509_REQ *req);
00788 #ifndef OPENSSL_NO_RSA
00789 RSA *d2i_RSAPrivateKey_fp(FILE *fp,RSA **rsa);
00790 int i2d_RSAPrivateKey_fp(FILE *fp,RSA *rsa);
00791 RSA *d2i_RSAPublicKey_fp(FILE *fp,RSA **rsa);
00792 int i2d_RSAPublicKey_fp(FILE *fp,RSA *rsa);
00793 RSA *d2i_RSA_PUBKEY_fp(FILE *fp,RSA **rsa);
00794 int i2d_RSA_PUBKEY_fp(FILE *fp,RSA *rsa);
00795 #endif
00796 #ifndef OPENSSL_NO_DSA
00797 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa);
00798 int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa);
00799 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa);
00800 int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa);
00801 #endif
00802 #ifndef OPENSSL_NO_EC
00803 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey);
00804 int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey);
00805 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey);
00806 int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey);
00807 #endif
00808 X509_SIG *d2i_PKCS8_fp(FILE *fp,X509_SIG **p8);
00809 int i2d_PKCS8_fp(FILE *fp,X509_SIG *p8);
00810 PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,
00811 PKCS8_PRIV_KEY_INFO **p8inf);
00812 int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,PKCS8_PRIV_KEY_INFO *p8inf);
00813 int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key);
00814 int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey);
00815 EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a);
00816 int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey);
00817 EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a);
00818 #endif
00819
00820 #ifndef OPENSSL_NO_BIO
00821 X509 *d2i_X509_bio(BIO *bp,X509 **x509);
00822 int i2d_X509_bio(BIO *bp,X509 *x509);
00823 X509_CRL *d2i_X509_CRL_bio(BIO *bp,X509_CRL **crl);
00824 int i2d_X509_CRL_bio(BIO *bp,X509_CRL *crl);
00825 X509_REQ *d2i_X509_REQ_bio(BIO *bp,X509_REQ **req);
00826 int i2d_X509_REQ_bio(BIO *bp,X509_REQ *req);
00827 #ifndef OPENSSL_NO_RSA
00828 RSA *d2i_RSAPrivateKey_bio(BIO *bp,RSA **rsa);
00829 int i2d_RSAPrivateKey_bio(BIO *bp,RSA *rsa);
00830 RSA *d2i_RSAPublicKey_bio(BIO *bp,RSA **rsa);
00831 int i2d_RSAPublicKey_bio(BIO *bp,RSA *rsa);
00832 RSA *d2i_RSA_PUBKEY_bio(BIO *bp,RSA **rsa);
00833 int i2d_RSA_PUBKEY_bio(BIO *bp,RSA *rsa);
00834 #endif
00835 #ifndef OPENSSL_NO_DSA
00836 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa);
00837 int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa);
00838 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa);
00839 int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa);
00840 #endif
00841 #ifndef OPENSSL_NO_EC
00842 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey);
00843 int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey);
00844 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey);
00845 int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey);
00846 #endif
00847 X509_SIG *d2i_PKCS8_bio(BIO *bp,X509_SIG **p8);
00848 int i2d_PKCS8_bio(BIO *bp,X509_SIG *p8);
00849 PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,
00850 PKCS8_PRIV_KEY_INFO **p8inf);
00851 int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,PKCS8_PRIV_KEY_INFO *p8inf);
00852 int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key);
00853 int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey);
00854 EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a);
00855 int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey);
00856 EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a);
00857 #endif
00858
00859 X509 *X509_dup(X509 *x509);
00860 X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa);
00861 X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex);
00862 X509_CRL *X509_CRL_dup(X509_CRL *crl);
00863 X509_REQ *X509_REQ_dup(X509_REQ *req);
00864 X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn);
00865 X509_NAME *X509_NAME_dup(X509_NAME *xn);
00866 X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne);
00867
00868 #endif
00869
00870 int X509_cmp_time(ASN1_TIME *s, time_t *t);
00871 int X509_cmp_current_time(ASN1_TIME *s);
00872 ASN1_TIME * X509_time_adj(ASN1_TIME *s, long adj, time_t *t);
00873 ASN1_TIME * X509_gmtime_adj(ASN1_TIME *s, long adj);
00874
00875 const char * X509_get_default_cert_area(void );
00876 const char * X509_get_default_cert_dir(void );
00877 const char * X509_get_default_cert_file(void );
00878 const char * X509_get_default_cert_dir_env(void );
00879 const char * X509_get_default_cert_file_env(void );
00880 const char * X509_get_default_private_dir(void );
00881
00882 X509_REQ * X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
00883 X509 * X509_REQ_to_X509(X509_REQ *r, int days,EVP_PKEY *pkey);
00884
00885 DECLARE_ASN1_FUNCTIONS(X509_ALGOR)
00886 DECLARE_ASN1_FUNCTIONS(X509_VAL)
00887
00888 DECLARE_ASN1_FUNCTIONS(X509_PUBKEY)
00889
00890 int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey);
00891 EVP_PKEY * X509_PUBKEY_get(X509_PUBKEY *key);
00892 int X509_get_pubkey_parameters(EVP_PKEY *pkey,
00893 STACK_OF(X509) *chain);
00894 int i2d_PUBKEY(EVP_PKEY *a,unsigned char **pp);
00895 EVP_PKEY * d2i_PUBKEY(EVP_PKEY **a,const unsigned char **pp,
00896 long length);
00897 #ifndef OPENSSL_NO_RSA
00898 int i2d_RSA_PUBKEY(RSA *a,unsigned char **pp);
00899 RSA * d2i_RSA_PUBKEY(RSA **a,const unsigned char **pp,
00900 long length);
00901 #endif
00902 #ifndef OPENSSL_NO_DSA
00903 int i2d_DSA_PUBKEY(DSA *a,unsigned char **pp);
00904 DSA * d2i_DSA_PUBKEY(DSA **a,const unsigned char **pp,
00905 long length);
00906 #endif
00907 #ifndef OPENSSL_NO_EC
00908 int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp);
00909 EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp,
00910 long length);
00911 #endif
00912
00913 DECLARE_ASN1_FUNCTIONS(X509_SIG)
00914 DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO)
00915 DECLARE_ASN1_FUNCTIONS(X509_REQ)
00916
00917 DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE)
00918 X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value);
00919
00920 DECLARE_ASN1_FUNCTIONS(X509_EXTENSION)
00921
00922 DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY)
00923
00924 DECLARE_ASN1_FUNCTIONS(X509_NAME)
00925
00926 int X509_NAME_set(X509_NAME **xn, X509_NAME *name);
00927
00928 DECLARE_ASN1_FUNCTIONS(X509_CINF)
00929
00930 DECLARE_ASN1_FUNCTIONS(X509)
00931 DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX)
00932
00933 DECLARE_ASN1_FUNCTIONS(X509_CERT_PAIR)
00934
00935 int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
00936 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
00937 int X509_set_ex_data(X509 *r, int idx, void *arg);
00938 void *X509_get_ex_data(X509 *r, int idx);
00939 int i2d_X509_AUX(X509 *a,unsigned char **pp);
00940 X509 * d2i_X509_AUX(X509 **a,const unsigned char **pp,long length);
00941
00942 int X509_alias_set1(X509 *x, unsigned char *name, int len);
00943 int X509_keyid_set1(X509 *x, unsigned char *id, int len);
00944 unsigned char * X509_alias_get0(X509 *x, int *len);
00945 unsigned char * X509_keyid_get0(X509 *x, int *len);
00946 int (*X509_TRUST_set_default(int (*trust)(int , X509 *, int)))(int, X509 *, int);
00947 int X509_TRUST_set(int *t, int trust);
00948 int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj);
00949 int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj);
00950 void X509_trust_clear(X509 *x);
00951 void X509_reject_clear(X509 *x);
00952
00953 DECLARE_ASN1_FUNCTIONS(X509_REVOKED)
00954 DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO)
00955 DECLARE_ASN1_FUNCTIONS(X509_CRL)
00956
00957 int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
00958
00959 X509_PKEY * X509_PKEY_new(void );
00960 void X509_PKEY_free(X509_PKEY *a);
00961 int i2d_X509_PKEY(X509_PKEY *a,unsigned char **pp);
00962 X509_PKEY * d2i_X509_PKEY(X509_PKEY **a,const unsigned char **pp,long length);
00963
00964 DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI)
00965 DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC)
00966 DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE)
00967
00968 #ifndef OPENSSL_NO_EVP
00969 X509_INFO * X509_INFO_new(void);
00970 void X509_INFO_free(X509_INFO *a);
00971 char * X509_NAME_oneline(X509_NAME *a,char *buf,int size);
00972
00973 int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1,
00974 ASN1_BIT_STRING *signature,char *data,EVP_PKEY *pkey);
00975
00976 int ASN1_digest(i2d_of_void *i2d,const EVP_MD *type,char *data,
00977 unsigned char *md,unsigned int *len);
00978
00979 int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1,
00980 X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
00981 char *data,EVP_PKEY *pkey, const EVP_MD *type);
00982
00983 int ASN1_item_digest(const ASN1_ITEM *it,const EVP_MD *type,void *data,
00984 unsigned char *md,unsigned int *len);
00985
00986 int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1,
00987 ASN1_BIT_STRING *signature,void *data,EVP_PKEY *pkey);
00988
00989 int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
00990 ASN1_BIT_STRING *signature,
00991 void *data, EVP_PKEY *pkey, const EVP_MD *type);
00992 #endif
00993
00994 int X509_set_version(X509 *x,long version);
00995 int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial);
00996 ASN1_INTEGER * X509_get_serialNumber(X509 *x);
00997 int X509_set_issuer_name(X509 *x, X509_NAME *name);
00998 X509_NAME * X509_get_issuer_name(X509 *a);
00999 int X509_set_subject_name(X509 *x, X509_NAME *name);
01000 X509_NAME * X509_get_subject_name(X509 *a);
01001 int X509_set_notBefore(X509 *x, ASN1_TIME *tm);
01002 int X509_set_notAfter(X509 *x, ASN1_TIME *tm);
01003 int X509_set_pubkey(X509 *x, EVP_PKEY *pkey);
01004 EVP_PKEY * X509_get_pubkey(X509 *x);
01005 ASN1_BIT_STRING * X509_get0_pubkey_bitstr(const X509 *x);
01006 int X509_certificate_type(X509 *x,EVP_PKEY *pubkey );
01007
01008 int X509_REQ_set_version(X509_REQ *x,long version);
01009 int X509_REQ_set_subject_name(X509_REQ *req,X509_NAME *name);
01010 int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey);
01011 EVP_PKEY * X509_REQ_get_pubkey(X509_REQ *req);
01012 int X509_REQ_extension_nid(int nid);
01013 int * X509_REQ_get_extension_nids(void);
01014 void X509_REQ_set_extension_nids(int *nids);
01015 STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req);
01016 int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts,
01017 int nid);
01018 int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts);
01019 int X509_REQ_get_attr_count(const X509_REQ *req);
01020 int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid,
01021 int lastpos);
01022 int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj,
01023 int lastpos);
01024 X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc);
01025 X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc);
01026 int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr);
01027 int X509_REQ_add1_attr_by_OBJ(X509_REQ *req,
01028 const ASN1_OBJECT *obj, int type,
01029 const unsigned char *bytes, int len);
01030 int X509_REQ_add1_attr_by_NID(X509_REQ *req,
01031 int nid, int type,
01032 const unsigned char *bytes, int len);
01033 int X509_REQ_add1_attr_by_txt(X509_REQ *req,
01034 const char *attrname, int type,
01035 const unsigned char *bytes, int len);
01036
01037 int X509_CRL_set_version(X509_CRL *x, long version);
01038 int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name);
01039 int X509_CRL_set_lastUpdate(X509_CRL *x, ASN1_TIME *tm);
01040 int X509_CRL_set_nextUpdate(X509_CRL *x, ASN1_TIME *tm);
01041 int X509_CRL_sort(X509_CRL *crl);
01042
01043 int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial);
01044 int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm);
01045
01046 int X509_REQ_check_private_key(X509_REQ *x509,EVP_PKEY *pkey);
01047
01048 int X509_check_private_key(X509 *x509,EVP_PKEY *pkey);
01049
01050 int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b);
01051 unsigned long X509_issuer_and_serial_hash(X509 *a);
01052
01053 int X509_issuer_name_cmp(const X509 *a, const X509 *b);
01054 unsigned long X509_issuer_name_hash(X509 *a);
01055
01056 int X509_subject_name_cmp(const X509 *a, const X509 *b);
01057 unsigned long X509_subject_name_hash(X509 *x);
01058
01059 int X509_cmp(const X509 *a, const X509 *b);
01060 int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b);
01061 unsigned long X509_NAME_hash(X509_NAME *x);
01062
01063 int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b);
01064 #ifndef OPENSSL_NO_FP_API
01065 int X509_print_ex_fp(FILE *bp,X509 *x, unsigned long nmflag, unsigned long cflag);
01066 int X509_print_fp(FILE *bp,X509 *x);
01067 int X509_CRL_print_fp(FILE *bp,X509_CRL *x);
01068 int X509_REQ_print_fp(FILE *bp,X509_REQ *req);
01069 int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent, unsigned long flags);
01070 #endif
01071
01072 #ifndef OPENSSL_NO_BIO
01073 int X509_NAME_print(BIO *bp, X509_NAME *name, int obase);
01074 int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent, unsigned long flags);
01075 int X509_print_ex(BIO *bp,X509 *x, unsigned long nmflag, unsigned long cflag);
01076 int X509_print(BIO *bp,X509 *x);
01077 int X509_ocspid_print(BIO *bp,X509 *x);
01078 int X509_CERT_AUX_print(BIO *bp,X509_CERT_AUX *x, int indent);
01079 int X509_CRL_print(BIO *bp,X509_CRL *x);
01080 int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, unsigned long cflag);
01081 int X509_REQ_print(BIO *bp,X509_REQ *req);
01082 #endif
01083
01084 int X509_NAME_entry_count(X509_NAME *name);
01085 int X509_NAME_get_text_by_NID(X509_NAME *name, int nid,
01086 char *buf,int len);
01087 int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj,
01088 char *buf,int len);
01089
01090
01091
01092 int X509_NAME_get_index_by_NID(X509_NAME *name,int nid,int lastpos);
01093 int X509_NAME_get_index_by_OBJ(X509_NAME *name,ASN1_OBJECT *obj,
01094 int lastpos);
01095 X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc);
01096 X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc);
01097 int X509_NAME_add_entry(X509_NAME *name,X509_NAME_ENTRY *ne,
01098 int loc, int set);
01099 int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type,
01100 unsigned char *bytes, int len, int loc, int set);
01101 int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
01102 unsigned char *bytes, int len, int loc, int set);
01103 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
01104 const char *field, int type, const unsigned char *bytes, int len);
01105 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid,
01106 int type,unsigned char *bytes, int len);
01107 int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
01108 const unsigned char *bytes, int len, int loc, int set);
01109 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne,
01110 ASN1_OBJECT *obj, int type,const unsigned char *bytes,
01111 int len);
01112 int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne,
01113 ASN1_OBJECT *obj);
01114 int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
01115 const unsigned char *bytes, int len);
01116 ASN1_OBJECT * X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne);
01117 ASN1_STRING * X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne);
01118
01119 int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x);
01120 int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x,
01121 int nid, int lastpos);
01122 int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x,
01123 ASN1_OBJECT *obj,int lastpos);
01124 int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x,
01125 int crit, int lastpos);
01126 X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc);
01127 X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc);
01128 STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x,
01129 X509_EXTENSION *ex, int loc);
01130
01131 int X509_get_ext_count(X509 *x);
01132 int X509_get_ext_by_NID(X509 *x, int nid, int lastpos);
01133 int X509_get_ext_by_OBJ(X509 *x,ASN1_OBJECT *obj,int lastpos);
01134 int X509_get_ext_by_critical(X509 *x, int crit, int lastpos);
01135 X509_EXTENSION *X509_get_ext(X509 *x, int loc);
01136 X509_EXTENSION *X509_delete_ext(X509 *x, int loc);
01137 int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
01138 void * X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx);
01139 int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit,
01140 unsigned long flags);
01141
01142 int X509_CRL_get_ext_count(X509_CRL *x);
01143 int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos);
01144 int X509_CRL_get_ext_by_OBJ(X509_CRL *x,ASN1_OBJECT *obj,int lastpos);
01145 int X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos);
01146 X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc);
01147 X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc);
01148 int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc);
01149 void * X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx);
01150 int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit,
01151 unsigned long flags);
01152
01153 int X509_REVOKED_get_ext_count(X509_REVOKED *x);
01154 int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos);
01155 int X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x,ASN1_OBJECT *obj,int lastpos);
01156 int X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos);
01157 X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc);
01158 X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc);
01159 int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc);
01160 void * X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx);
01161 int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit,
01162 unsigned long flags);
01163
01164 X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex,
01165 int nid, int crit, ASN1_OCTET_STRING *data);
01166 X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex,
01167 ASN1_OBJECT *obj,int crit,ASN1_OCTET_STRING *data);
01168 int X509_EXTENSION_set_object(X509_EXTENSION *ex,ASN1_OBJECT *obj);
01169 int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit);
01170 int X509_EXTENSION_set_data(X509_EXTENSION *ex,
01171 ASN1_OCTET_STRING *data);
01172 ASN1_OBJECT * X509_EXTENSION_get_object(X509_EXTENSION *ex);
01173 ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne);
01174 int X509_EXTENSION_get_critical(X509_EXTENSION *ex);
01175
01176 int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x);
01177 int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid,
01178 int lastpos);
01179 int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, ASN1_OBJECT *obj,
01180 int lastpos);
01181 X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc);
01182 X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc);
01183 STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
01184 X509_ATTRIBUTE *attr);
01185 STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) **x,
01186 const ASN1_OBJECT *obj, int type,
01187 const unsigned char *bytes, int len);
01188 STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) **x,
01189 int nid, int type,
01190 const unsigned char *bytes, int len);
01191 STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) **x,
01192 const char *attrname, int type,
01193 const unsigned char *bytes, int len);
01194 X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid,
01195 int atrtype, const void *data, int len);
01196 X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr,
01197 const ASN1_OBJECT *obj, int atrtype, const void *data, int len);
01198 X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr,
01199 const char *atrname, int type, const unsigned char *bytes, int len);
01200 int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj);
01201 int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, const void *data, int len);
01202 void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx,
01203 int atrtype, void *data);
01204 int X509_ATTRIBUTE_count(X509_ATTRIBUTE *attr);
01205 ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr);
01206 ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx);
01207
01208 int EVP_PKEY_get_attr_count(const EVP_PKEY *key);
01209 int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid,
01210 int lastpos);
01211 int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, ASN1_OBJECT *obj,
01212 int lastpos);
01213 X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc);
01214 X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc);
01215 int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr);
01216 int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key,
01217 const ASN1_OBJECT *obj, int type,
01218 const unsigned char *bytes, int len);
01219 int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key,
01220 int nid, int type,
01221 const unsigned char *bytes, int len);
01222 int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key,
01223 const char *attrname, int type,
01224 const unsigned char *bytes, int len);
01225
01226 int X509_verify_cert(X509_STORE_CTX *ctx);
01227
01228
01229 X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk,X509_NAME *name,
01230 ASN1_INTEGER *serial);
01231 X509 *X509_find_by_subject(STACK_OF(X509) *sk,X509_NAME *name);
01232
01233 DECLARE_ASN1_FUNCTIONS(PBEPARAM)
01234 DECLARE_ASN1_FUNCTIONS(PBE2PARAM)
01235 DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM)
01236
01237 X509_ALGOR *PKCS5_pbe_set(int alg, int iter, unsigned char *salt, int saltlen);
01238 X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
01239 unsigned char *salt, int saltlen);
01240
01241
01242
01243 DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO)
01244
01245 EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8);
01246 PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey);
01247 PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken);
01248 PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken);
01249
01250 int X509_check_trust(X509 *x, int id, int flags);
01251 int X509_TRUST_get_count(void);
01252 X509_TRUST * X509_TRUST_get0(int idx);
01253 int X509_TRUST_get_by_id(int id);
01254 int X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int),
01255 char *name, int arg1, void *arg2);
01256 void X509_TRUST_cleanup(void);
01257 int X509_TRUST_get_flags(X509_TRUST *xp);
01258 char *X509_TRUST_get0_name(X509_TRUST *xp);
01259 int X509_TRUST_get_trust(X509_TRUST *xp);
01260
01261
01262
01263
01264
01265 void ERR_load_X509_strings(void);
01266
01267
01268
01269
01270 #define X509_F_ADD_CERT_DIR 100
01271 #define X509_F_BY_FILE_CTRL 101
01272 #define X509_F_CHECK_POLICY 145
01273 #define X509_F_DIR_CTRL 102
01274 #define X509_F_GET_CERT_BY_SUBJECT 103
01275 #define X509_F_NETSCAPE_SPKI_B64_DECODE 129
01276 #define X509_F_NETSCAPE_SPKI_B64_ENCODE 130
01277 #define X509_F_X509AT_ADD1_ATTR 135
01278 #define X509_F_X509V3_ADD_EXT 104
01279 #define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136
01280 #define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137
01281 #define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140
01282 #define X509_F_X509_ATTRIBUTE_GET0_DATA 139
01283 #define X509_F_X509_ATTRIBUTE_SET1_DATA 138
01284 #define X509_F_X509_CHECK_PRIVATE_KEY 128
01285 #define X509_F_X509_CRL_PRINT_FP 147
01286 #define X509_F_X509_EXTENSION_CREATE_BY_NID 108
01287 #define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109
01288 #define X509_F_X509_GET_PUBKEY_PARAMETERS 110
01289 #define X509_F_X509_LOAD_CERT_CRL_FILE 132
01290 #define X509_F_X509_LOAD_CERT_FILE 111
01291 #define X509_F_X509_LOAD_CRL_FILE 112
01292 #define X509_F_X509_NAME_ADD_ENTRY 113
01293 #define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114
01294 #define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131
01295 #define X509_F_X509_NAME_ENTRY_SET_OBJECT 115
01296 #define X509_F_X509_NAME_ONELINE 116
01297 #define X509_F_X509_NAME_PRINT 117
01298 #define X509_F_X509_PRINT_EX_FP 118
01299 #define X509_F_X509_PUBKEY_GET 119
01300 #define X509_F_X509_PUBKEY_SET 120
01301 #define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144
01302 #define X509_F_X509_REQ_PRINT_EX 121
01303 #define X509_F_X509_REQ_PRINT_FP 122
01304 #define X509_F_X509_REQ_TO_X509 123
01305 #define X509_F_X509_STORE_ADD_CERT 124
01306 #define X509_F_X509_STORE_ADD_CRL 125
01307 #define X509_F_X509_STORE_CTX_GET1_ISSUER 146
01308 #define X509_F_X509_STORE_CTX_INIT 143
01309 #define X509_F_X509_STORE_CTX_NEW 142
01310 #define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134
01311 #define X509_F_X509_TO_X509_REQ 126
01312 #define X509_F_X509_TRUST_ADD 133
01313 #define X509_F_X509_TRUST_SET 141
01314 #define X509_F_X509_VERIFY_CERT 127
01315
01316
01317 #define X509_R_BAD_X509_FILETYPE 100
01318 #define X509_R_BASE64_DECODE_ERROR 118
01319 #define X509_R_CANT_CHECK_DH_KEY 114
01320 #define X509_R_CERT_ALREADY_IN_HASH_TABLE 101
01321 #define X509_R_ERR_ASN1_LIB 102
01322 #define X509_R_INVALID_DIRECTORY 113
01323 #define X509_R_INVALID_FIELD_NAME 119
01324 #define X509_R_INVALID_TRUST 123
01325 #define X509_R_KEY_TYPE_MISMATCH 115
01326 #define X509_R_KEY_VALUES_MISMATCH 116
01327 #define X509_R_LOADING_CERT_DIR 103
01328 #define X509_R_LOADING_DEFAULTS 104
01329 #define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105
01330 #define X509_R_SHOULD_RETRY 106
01331 #define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107
01332 #define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108
01333 #define X509_R_UNKNOWN_KEY_TYPE 117
01334 #define X509_R_UNKNOWN_NID 109
01335 #define X509_R_UNKNOWN_PURPOSE_ID 121
01336 #define X509_R_UNKNOWN_TRUST_ID 120
01337 #define X509_R_UNSUPPORTED_ALGORITHM 111
01338 #define X509_R_WRONG_LOOKUP_TYPE 112
01339 #define X509_R_WRONG_TYPE 122
01340
01341 #ifdef __cplusplus
01342 }
01343 #endif
01344 #endif