aboutsummaryrefslogtreecommitdiff
path: root/crypto/asn1/asn1_locl.h
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2006-03-22 17:59:49 +0000
committerDr. Stephen Henson <steve@openssl.org>2006-03-22 17:59:49 +0000
commit18e377b4ffa6d15572d7283f1eb1743ce5875804 (patch)
tree60cbdb8623a4afd56950d7797727071b4486823b /crypto/asn1/asn1_locl.h
parent043b2e9c2ec57da817457c8108c13cf90ce572cb (diff)
downloadopenssl-18e377b4ffa6d15572d7283f1eb1743ce5875804.zip
openssl-18e377b4ffa6d15572d7283f1eb1743ce5875804.tar.gz
openssl-18e377b4ffa6d15572d7283f1eb1743ce5875804.tar.bz2
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.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/crypto/asn1/asn1_locl.h b/crypto/asn1/asn1_locl.h
index 3f24f1b..1328cdb 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 */;