diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2006-03-22 17:59:49 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2006-03-22 17:59:49 +0000 |
commit | 18e377b4ffa6d15572d7283f1eb1743ce5875804 (patch) | |
tree | 60cbdb8623a4afd56950d7797727071b4486823b /crypto/asn1/asn1_locl.h | |
parent | 043b2e9c2ec57da817457c8108c13cf90ce572cb (diff) |
Make EVP_PKEY_ASN1_METHOD opaque. Add application level functions to
initialize it. Initial support for application added public key ASN1.
Diffstat (limited to 'crypto/asn1/asn1_locl.h')
-rw-r--r-- | crypto/asn1/asn1_locl.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/crypto/asn1/asn1_locl.h b/crypto/asn1/asn1_locl.h index 3f24f1bd48..1328cdb106 100644 --- a/crypto/asn1/asn1_locl.h +++ b/crypto/asn1/asn1_locl.h @@ -68,3 +68,40 @@ struct asn1_pctx_st unsigned long oid_flags; unsigned long str_flags; } /* ASN1_PCTX */; + +/* ASN1 public key method structure */ + +#define ASN1_PKEY_ALIAS 0x1 +#define ASN1_PKEY_DYNAMIC 0x2 + +struct evp_pkey_asn1_method_st + { + int pkey_id; + int pkey_base_id; + unsigned long pkey_flags; + + int (*pub_decode)(EVP_PKEY *pk, X509_PUBKEY *pub); + int (*pub_encode)(X509_PUBKEY *pub, const EVP_PKEY *pk); + int (*pub_cmp)(const EVP_PKEY *a, const EVP_PKEY *b); + int (*pub_print)(BIO *out, const EVP_PKEY *pkey, int indent, + ASN1_PCTX *pctx); + + int (*priv_decode)(EVP_PKEY *pk, PKCS8_PRIV_KEY_INFO *p8inf); + int (*priv_encode)(PKCS8_PRIV_KEY_INFO *p8, const EVP_PKEY *pk); + int (*priv_print)(BIO *out, const EVP_PKEY *pkey, int indent, + ASN1_PCTX *pctx); + + int (*pkey_size)(const EVP_PKEY *pk); + int (*pkey_bits)(const EVP_PKEY *pk); + + int (*param_decode)(const EVP_PKEY *pk, X509_PUBKEY *pub); + int (*param_encode)(X509_PUBKEY *pub, const EVP_PKEY *pk); + int (*param_missing)(const EVP_PKEY *pk); + int (*param_copy)(EVP_PKEY *to, const EVP_PKEY *from); + int (*param_cmp)(const EVP_PKEY *a, const EVP_PKEY *b); + int (*param_print)(BIO *out, const EVP_PKEY *pkey, int indent, + ASN1_PCTX *pctx); + + void (*pkey_free)(EVP_PKEY *pkey); + void (*pkey_ctrl)(EVP_PKEY *pkey, int op, long arg1, void *arg2); + } /* EVP_PKEY_ASN1_METHOD */; |