Move algorithm specific print code from crypto/asn1/t_pkey.c to separate
[oweals/openssl.git] / crypto / asn1 / asn1.h
index 32653eb1f0dc918e516bbf95575f8b4c53a9a894..b366fa483e1298fba6d10aee31424f4f7a33f5fc 100644 (file)
@@ -291,13 +291,29 @@ 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, EVP_PKEY *pk);
-       int (*pub_print)(BIO *out, EVP_PKEY *pkey, int indent, ASN1_PCTX *pctx);
+       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, EVP_PKEY *pk);
-       int (*priv_print)(BIO *out, EVP_PKEY *pkey, int indent,
+       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 */;
@@ -965,6 +981,8 @@ int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a);
 int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a);
 int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v);
 int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags);
+int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num,
+                               unsigned char *buf, int off);
 int ASN1_parse(BIO *bp,const unsigned char *pp,long len,int indent);
 int ASN1_parse_dump(BIO *bp,const unsigned char *pp,long len,int indent,int dump);
 #endif