diff options
Diffstat (limited to 'crypto/x509/x509.h')
| -rw-r--r-- | crypto/x509/x509.h | 268 | 
1 files changed, 104 insertions, 164 deletions
diff --git a/crypto/x509/x509.h b/crypto/x509/x509.h index c34689a1b389a..092dd7450d3b0 100644 --- a/crypto/x509/x509.h +++ b/crypto/x509/x509.h @@ -157,12 +157,12 @@ typedef struct X509_val_st  	ASN1_TIME *notAfter;  	} X509_VAL; -typedef struct X509_pubkey_st +struct X509_pubkey_st  	{  	X509_ALGOR *algor;  	ASN1_BIT_STRING *public_key;  	EVP_PKEY *pkey; -	} X509_PUBKEY; +	};  typedef struct X509_sig_st  	{ @@ -191,7 +191,9 @@ struct X509_name_st  #else  	char *bytes;  #endif -	unsigned long hash; /* Keep the hash around for lookups */ +/*	unsigned long hash; Keep the hash around for lookups */ +	unsigned char *canon_enc; +	int canon_enclen;  	} /* X509_NAME */;  DECLARE_STACK_OF(X509_NAME) @@ -291,8 +293,11 @@ struct x509_st  	unsigned long ex_xkusage;  	unsigned long ex_nscert;  	ASN1_OCTET_STRING *skid; -	struct AUTHORITY_KEYID_st *akid; +	AUTHORITY_KEYID *akid;  	X509_POLICY_CACHE *policy_cache; +	STACK_OF(DIST_POINT) *crldp; +	STACK_OF(GENERAL_NAME) *altname; +	NAME_CONSTRAINTS *nc;  #ifndef OPENSSL_NO_RFC3779  	STACK_OF(IPAddressFamily) *rfc3779_addr;  	struct ASIdentifiers_st *rfc3779_asid; @@ -335,10 +340,11 @@ typedef struct x509_cert_pair_st {  #define X509_TRUST_OBJECT_SIGN	5  #define X509_TRUST_OCSP_SIGN	6  #define X509_TRUST_OCSP_REQUEST	7 +#define X509_TRUST_TSA		8  /* Keep these up to date! */  #define X509_TRUST_MIN		1 -#define X509_TRUST_MAX		7 +#define X509_TRUST_MAX		8  /* trust_flags values */ @@ -425,13 +431,17 @@ typedef struct x509_cert_pair_st {  			XN_FLAG_FN_LN | \  			XN_FLAG_FN_ALIGN) -typedef struct X509_revoked_st +struct x509_revoked_st  	{  	ASN1_INTEGER *serialNumber;  	ASN1_TIME *revocationDate;  	STACK_OF(X509_EXTENSION) /* optional */ *extensions; +	/* Set up if indirect CRL */ +	STACK_OF(GENERAL_NAME) *issuer; +	/* Revocation reason */ +	int reason;  	int sequence; /* load sequence */ -	} X509_REVOKED; +	};  DECLARE_STACK_OF(X509_REVOKED)  DECLARE_ASN1_SET_OF(X509_REVOKED) @@ -455,6 +465,22 @@ struct X509_crl_st  	X509_ALGOR *sig_alg;  	ASN1_BIT_STRING *signature;  	int references; +	int flags; +	/* Copies of various extensions */ +	AUTHORITY_KEYID *akid; +	ISSUING_DIST_POINT *idp; +	/* Convenient breakdown of IDP */ +	int idp_flags; +	int idp_reasons; +	/* CRL and base CRL numbers for delta processing */ +	ASN1_INTEGER *crl_number; +	ASN1_INTEGER *base_crl_number; +#ifndef OPENSSL_NO_SHA +	unsigned char sha1_hash[SHA_DIGEST_LENGTH]; +#endif +	STACK_OF(GENERAL_NAMES) *issuers; +	const X509_CRL_METHOD *meth; +	void *meth_data;  	} /* X509_CRL */;  DECLARE_STACK_OF(X509_CRL) @@ -553,18 +579,19 @@ X509_ALGOR *prf;  /* PKCS#8 private key info structure */ -typedef struct pkcs8_priv_key_info_st +struct pkcs8_priv_key_info_st          {          int broken;     /* Flag for various broken formats */  #define PKCS8_OK		0  #define PKCS8_NO_OCTET		1  #define PKCS8_EMBEDDED_PARAM	2  #define PKCS8_NS_DB		3 +#define PKCS8_NEG_PRIVKEY	4          ASN1_INTEGER *version;          X509_ALGOR *pkeyalg;          ASN1_TYPE *pkey; /* Should be OCTET STRING but some are broken */          STACK_OF(X509_ATTRIBUTE) *attributes; -        } PKCS8_PRIV_KEY_INFO; +        };  #ifdef  __cplusplus  } @@ -577,151 +604,6 @@ typedef struct pkcs8_priv_key_info_st  extern "C" {  #endif -#ifdef SSLEAY_MACROS -#define X509_verify(a,r) ASN1_verify((int (*)())i2d_X509_CINF,a->sig_alg,\ -	a->signature,(char *)a->cert_info,r) -#define X509_REQ_verify(a,r) ASN1_verify((int (*)())i2d_X509_REQ_INFO, \ -	a->sig_alg,a->signature,(char *)a->req_info,r) -#define X509_CRL_verify(a,r) ASN1_verify((int (*)())i2d_X509_CRL_INFO, \ -	a->sig_alg, a->signature,(char *)a->crl,r) - -#define X509_sign(x,pkey,md) \ -	ASN1_sign((int (*)())i2d_X509_CINF, x->cert_info->signature, \ -		x->sig_alg, x->signature, (char *)x->cert_info,pkey,md) -#define X509_REQ_sign(x,pkey,md) \ -	ASN1_sign((int (*)())i2d_X509_REQ_INFO,x->sig_alg, NULL, \ -		x->signature, (char *)x->req_info,pkey,md) -#define X509_CRL_sign(x,pkey,md) \ -	ASN1_sign((int (*)())i2d_X509_CRL_INFO,x->crl->sig_alg,x->sig_alg, \ -		x->signature, (char *)x->crl,pkey,md) -#define NETSCAPE_SPKI_sign(x,pkey,md) \ -	ASN1_sign((int (*)())i2d_NETSCAPE_SPKAC, x->sig_algor,NULL, \ -		x->signature, (char *)x->spkac,pkey,md) - -#define X509_dup(x509) (X509 *)ASN1_dup((int (*)())i2d_X509, \ -		(char *(*)())d2i_X509,(char *)x509) -#define X509_ATTRIBUTE_dup(xa) (X509_ATTRIBUTE *)ASN1_dup(\ -		(int (*)())i2d_X509_ATTRIBUTE, \ -		(char *(*)())d2i_X509_ATTRIBUTE,(char *)xa) -#define X509_EXTENSION_dup(ex) (X509_EXTENSION *)ASN1_dup( \ -		(int (*)())i2d_X509_EXTENSION, \ -		(char *(*)())d2i_X509_EXTENSION,(char *)ex) -#define d2i_X509_fp(fp,x509) (X509 *)ASN1_d2i_fp((char *(*)())X509_new, \ -		(char *(*)())d2i_X509, (fp),(unsigned char **)(x509)) -#define i2d_X509_fp(fp,x509) ASN1_i2d_fp(i2d_X509,fp,(unsigned char *)x509) -#define d2i_X509_bio(bp,x509) (X509 *)ASN1_d2i_bio((char *(*)())X509_new, \ -		(char *(*)())d2i_X509, (bp),(unsigned char **)(x509)) -#define i2d_X509_bio(bp,x509) ASN1_i2d_bio(i2d_X509,bp,(unsigned char *)x509) - -#define X509_CRL_dup(crl) (X509_CRL *)ASN1_dup((int (*)())i2d_X509_CRL, \ -		(char *(*)())d2i_X509_CRL,(char *)crl) -#define d2i_X509_CRL_fp(fp,crl) (X509_CRL *)ASN1_d2i_fp((char *(*)()) \ -		X509_CRL_new,(char *(*)())d2i_X509_CRL, (fp),\ -		(unsigned char **)(crl)) -#define i2d_X509_CRL_fp(fp,crl) ASN1_i2d_fp(i2d_X509_CRL,fp,\ -		(unsigned char *)crl) -#define d2i_X509_CRL_bio(bp,crl) (X509_CRL *)ASN1_d2i_bio((char *(*)()) \ -		X509_CRL_new,(char *(*)())d2i_X509_CRL, (bp),\ -		(unsigned char **)(crl)) -#define i2d_X509_CRL_bio(bp,crl) ASN1_i2d_bio(i2d_X509_CRL,bp,\ -		(unsigned char *)crl) - -#define PKCS7_dup(p7) (PKCS7 *)ASN1_dup((int (*)())i2d_PKCS7, \ -		(char *(*)())d2i_PKCS7,(char *)p7) -#define d2i_PKCS7_fp(fp,p7) (PKCS7 *)ASN1_d2i_fp((char *(*)()) \ -		PKCS7_new,(char *(*)())d2i_PKCS7, (fp),\ -		(unsigned char **)(p7)) -#define i2d_PKCS7_fp(fp,p7) ASN1_i2d_fp(i2d_PKCS7,fp,\ -		(unsigned char *)p7) -#define d2i_PKCS7_bio(bp,p7) (PKCS7 *)ASN1_d2i_bio((char *(*)()) \ -		PKCS7_new,(char *(*)())d2i_PKCS7, (bp),\ -		(unsigned char **)(p7)) -#define i2d_PKCS7_bio(bp,p7) ASN1_i2d_bio(i2d_PKCS7,bp,\ -		(unsigned char *)p7) - -#define X509_REQ_dup(req) (X509_REQ *)ASN1_dup((int (*)())i2d_X509_REQ, \ -		(char *(*)())d2i_X509_REQ,(char *)req) -#define d2i_X509_REQ_fp(fp,req) (X509_REQ *)ASN1_d2i_fp((char *(*)())\ -		X509_REQ_new, (char *(*)())d2i_X509_REQ, (fp),\ -		(unsigned char **)(req)) -#define i2d_X509_REQ_fp(fp,req) ASN1_i2d_fp(i2d_X509_REQ,fp,\ -		(unsigned char *)req) -#define d2i_X509_REQ_bio(bp,req) (X509_REQ *)ASN1_d2i_bio((char *(*)())\ -		X509_REQ_new, (char *(*)())d2i_X509_REQ, (bp),\ -		(unsigned char **)(req)) -#define i2d_X509_REQ_bio(bp,req) ASN1_i2d_bio(i2d_X509_REQ,bp,\ -		(unsigned char *)req) - -#define RSAPublicKey_dup(rsa) (RSA *)ASN1_dup((int (*)())i2d_RSAPublicKey, \ -		(char *(*)())d2i_RSAPublicKey,(char *)rsa) -#define RSAPrivateKey_dup(rsa) (RSA *)ASN1_dup((int (*)())i2d_RSAPrivateKey, \ -		(char *(*)())d2i_RSAPrivateKey,(char *)rsa) - -#define d2i_RSAPrivateKey_fp(fp,rsa) (RSA *)ASN1_d2i_fp((char *(*)())\ -		RSA_new,(char *(*)())d2i_RSAPrivateKey, (fp), \ -		(unsigned char **)(rsa)) -#define i2d_RSAPrivateKey_fp(fp,rsa) ASN1_i2d_fp(i2d_RSAPrivateKey,fp, \ -		(unsigned char *)rsa) -#define d2i_RSAPrivateKey_bio(bp,rsa) (RSA *)ASN1_d2i_bio((char *(*)())\ -		RSA_new,(char *(*)())d2i_RSAPrivateKey, (bp), \ -		(unsigned char **)(rsa)) -#define i2d_RSAPrivateKey_bio(bp,rsa) ASN1_i2d_bio(i2d_RSAPrivateKey,bp, \ -		(unsigned char *)rsa) - -#define d2i_RSAPublicKey_fp(fp,rsa) (RSA *)ASN1_d2i_fp((char *(*)())\ -		RSA_new,(char *(*)())d2i_RSAPublicKey, (fp), \ -		(unsigned char **)(rsa)) -#define i2d_RSAPublicKey_fp(fp,rsa) ASN1_i2d_fp(i2d_RSAPublicKey,fp, \ -		(unsigned char *)rsa) -#define d2i_RSAPublicKey_bio(bp,rsa) (RSA *)ASN1_d2i_bio((char *(*)())\ -		RSA_new,(char *(*)())d2i_RSAPublicKey, (bp), \ -		(unsigned char **)(rsa)) -#define i2d_RSAPublicKey_bio(bp,rsa) ASN1_i2d_bio(i2d_RSAPublicKey,bp, \ -		(unsigned char *)rsa) - -#define d2i_DSAPrivateKey_fp(fp,dsa) (DSA *)ASN1_d2i_fp((char *(*)())\ -		DSA_new,(char *(*)())d2i_DSAPrivateKey, (fp), \ -		(unsigned char **)(dsa)) -#define i2d_DSAPrivateKey_fp(fp,dsa) ASN1_i2d_fp(i2d_DSAPrivateKey,fp, \ -		(unsigned char *)dsa) -#define d2i_DSAPrivateKey_bio(bp,dsa) (DSA *)ASN1_d2i_bio((char *(*)())\ -		DSA_new,(char *(*)())d2i_DSAPrivateKey, (bp), \ -		(unsigned char **)(dsa)) -#define i2d_DSAPrivateKey_bio(bp,dsa) ASN1_i2d_bio(i2d_DSAPrivateKey,bp, \ -		(unsigned char *)dsa) - -#define d2i_ECPrivateKey_fp(fp,ecdsa) (EC_KEY *)ASN1_d2i_fp((char *(*)())\ -		EC_KEY_new,(char *(*)())d2i_ECPrivateKey, (fp), \ -		(unsigned char **)(ecdsa)) -#define i2d_ECPrivateKey_fp(fp,ecdsa) ASN1_i2d_fp(i2d_ECPrivateKey,fp, \ -		(unsigned char *)ecdsa) -#define d2i_ECPrivateKey_bio(bp,ecdsa) (EC_KEY *)ASN1_d2i_bio((char *(*)())\ -		EC_KEY_new,(char *(*)())d2i_ECPrivateKey, (bp), \ -		(unsigned char **)(ecdsa)) -#define i2d_ECPrivateKey_bio(bp,ecdsa) ASN1_i2d_bio(i2d_ECPrivateKey,bp, \ -		(unsigned char *)ecdsa) - -#define X509_ALGOR_dup(xn) (X509_ALGOR *)ASN1_dup((int (*)())i2d_X509_ALGOR,\ -		(char *(*)())d2i_X509_ALGOR,(char *)xn) - -#define X509_NAME_dup(xn) (X509_NAME *)ASN1_dup((int (*)())i2d_X509_NAME, \ -		(char *(*)())d2i_X509_NAME,(char *)xn) -#define X509_NAME_ENTRY_dup(ne) (X509_NAME_ENTRY *)ASN1_dup( \ -		(int (*)())i2d_X509_NAME_ENTRY, \ -		(char *(*)())d2i_X509_NAME_ENTRY,\ -		(char *)ne) - -#define X509_digest(data,type,md,len) \ -	ASN1_digest((int (*)())i2d_X509,type,(char *)data,md,len) -#define X509_NAME_digest(data,type,md,len) \ -	ASN1_digest((int (*)())i2d_X509_NAME,type,(char *)data,md,len) -#ifndef PKCS7_ISSUER_AND_SERIAL_digest -#define PKCS7_ISSUER_AND_SERIAL_digest(data,type,md,len) \ -	ASN1_digest((int (*)())i2d_PKCS7_ISSUER_AND_SERIAL,type,\ -		(char *)data,md,len) -#endif -#endif -  #define X509_EXT_PACK_UNKNOWN	1  #define X509_EXT_PACK_STRING	2 @@ -742,6 +624,18 @@ extern "C" {  #define		X509_CRL_get_issuer(x) ((x)->crl->issuer)  #define		X509_CRL_get_REVOKED(x) ((x)->crl->revoked) +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new( +	int (*crl_init)(X509_CRL *crl), +	int (*crl_free)(X509_CRL *crl), +	int (*crl_lookup)(X509_CRL *crl, X509_REVOKED **ret, +				ASN1_INTEGER *ser, X509_NAME *issuer), +	int (*crl_verify)(X509_CRL *crl, EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); +  /* This one is only used so that a binary form can output, as in   * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf) */  #define 	X509_get_X509_PUBKEY(x) ((x)->cert_info->key) @@ -749,7 +643,6 @@ extern "C" {  const char *X509_verify_cert_error_string(long n); -#ifndef SSLEAY_MACROS  #ifndef OPENSSL_NO_EVP  int X509_verify(X509 *a, EVP_PKEY *r); @@ -764,11 +657,15 @@ int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey);  int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); +int X509_signature_dump(BIO *bp,const ASN1_STRING *sig, int indent);  int X509_signature_print(BIO *bp,X509_ALGOR *alg, ASN1_STRING *sig);  int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx);  int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx);  int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx);  int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md);  int X509_pubkey_digest(const X509 *data,const EVP_MD *type, @@ -870,15 +767,16 @@ X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn);  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 *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md);  X509_NAME *X509_NAME_dup(X509_NAME *xn);  X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); -#endif /* !SSLEAY_MACROS */ - -int		X509_cmp_time(ASN1_TIME *s, time_t *t); -int		X509_cmp_current_time(ASN1_TIME *s); +int		X509_cmp_time(const ASN1_TIME *s, time_t *t); +int		X509_cmp_current_time(const ASN1_TIME *s);  ASN1_TIME *	X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *	X509_time_adj_ex(ASN1_TIME *s, +				int offset_day, long offset_sec, time_t *t);  ASN1_TIME *	X509_gmtime_adj(ASN1_TIME *s, long adj);  const char *	X509_get_default_cert_area(void ); @@ -966,6 +864,9 @@ DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO)  DECLARE_ASN1_FUNCTIONS(X509_CRL)  int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, +		X509_REVOKED **ret, ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x);  X509_PKEY *	X509_PKEY_new(void );  void		X509_PKEY_free(X509_PKEY *a); @@ -1000,6 +901,9 @@ int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1,  int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,  	ASN1_BIT_STRING *signature,  	void *data, EVP_PKEY *pkey, const EVP_MD *type); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, +		X509_ALGOR *algor1, X509_ALGOR *algor2, +	     	ASN1_BIT_STRING *signature, void *asn, EVP_MD_CTX *ctx);  #endif  int 		X509_set_version(X509 *x,long version); @@ -1009,8 +913,8 @@ int 		X509_set_issuer_name(X509 *x, X509_NAME *name);  X509_NAME *	X509_get_issuer_name(X509 *a);  int 		X509_set_subject_name(X509 *x, X509_NAME *name);  X509_NAME *	X509_get_subject_name(X509 *a); -int 		X509_set_notBefore(X509 *x, ASN1_TIME *tm); -int 		X509_set_notAfter(X509 *x, ASN1_TIME *tm); +int 		X509_set_notBefore(X509 *x, const ASN1_TIME *tm); +int 		X509_set_notAfter(X509 *x, const ASN1_TIME *tm);  int 		X509_set_pubkey(X509 *x, EVP_PKEY *pkey);  EVP_PKEY *	X509_get_pubkey(X509 *x);  ASN1_BIT_STRING * X509_get0_pubkey_bitstr(const X509 *x); @@ -1047,8 +951,8 @@ int X509_REQ_add1_attr_by_txt(X509_REQ *req,  int X509_CRL_set_version(X509_CRL *x, long version);  int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); -int X509_CRL_set_lastUpdate(X509_CRL *x, ASN1_TIME *tm); -int X509_CRL_set_nextUpdate(X509_CRL *x, ASN1_TIME *tm); +int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm);  int X509_CRL_sort(X509_CRL *crl);  int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); @@ -1067,11 +971,18 @@ unsigned long	X509_issuer_name_hash(X509 *a);  int		X509_subject_name_cmp(const X509 *a, const X509 *b);  unsigned long	X509_subject_name_hash(X509 *x); +#ifndef OPENSSL_NO_MD5 +unsigned long	X509_issuer_name_hash_old(X509 *a); +unsigned long	X509_subject_name_hash_old(X509 *x); +#endif +  int		X509_cmp(const X509 *a, const X509 *b);  int		X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b);  unsigned long	X509_NAME_hash(X509_NAME *x); +unsigned long	X509_NAME_hash_old(X509_NAME *x);  int		X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int		X509_CRL_match(const X509_CRL *a, const X509_CRL *b);  #ifndef OPENSSL_NO_FP_API  int		X509_print_ex_fp(FILE *bp,X509 *x, unsigned long nmflag, unsigned long cflag);  int		X509_print_fp(FILE *bp,X509 *x); @@ -1247,9 +1158,19 @@ DECLARE_ASN1_FUNCTIONS(PBEPARAM)  DECLARE_ASN1_FUNCTIONS(PBE2PARAM)  DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) -X509_ALGOR *PKCS5_pbe_set(int alg, int iter, unsigned char *salt, int saltlen); +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, +				const unsigned char *salt, int saltlen); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, +				const unsigned char *salt, int saltlen);  X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,  					 unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, +				 unsigned char *salt, int saltlen, +				 unsigned char *aiv, int prf_nid); + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, +				int prf_nid, int keylen);  /* PKCS#8 utilities */ @@ -1260,6 +1181,22 @@ PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey);  PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken);  PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken); +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, +			int version, int ptype, void *pval, +				unsigned char *penc, int penclen); +int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg, +		const unsigned char **pk, int *ppklen, +		X509_ALGOR **pa, +		PKCS8_PRIV_KEY_INFO *p8); + +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, +					int ptype, void *pval, +					unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, +		const unsigned char **pk, int *ppklen, +		X509_ALGOR **pa, +		X509_PUBKEY *pub); +  int X509_check_trust(X509 *x, int id, int flags);  int X509_TRUST_get_count(void);  X509_TRUST * X509_TRUST_get0(int idx); @@ -1339,7 +1276,10 @@ void ERR_load_X509_strings(void);  #define X509_R_KEY_VALUES_MISMATCH			 116  #define X509_R_LOADING_CERT_DIR				 103  #define X509_R_LOADING_DEFAULTS				 104 +#define X509_R_METHOD_NOT_SUPPORTED			 124  #define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY		 105 +#define X509_R_PUBLIC_KEY_DECODE_ERROR			 125 +#define X509_R_PUBLIC_KEY_ENCODE_ERROR			 126  #define X509_R_SHOULD_RETRY				 106  #define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN	 107  #define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY		 108  | 
