summaryrefslogtreecommitdiffstats
path: root/crypto/evp/evp.h
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2006-05-22 13:01:01 +0000
committerDr. Stephen Henson <steve@openssl.org>2006-05-22 13:01:01 +0000
commit0965991600077b9a418bd776b55fa3c420bc1918 (patch)
treeffd3d63bf6defdb127c17db711ad9d8f2a6be3d7 /crypto/evp/evp.h
parent74aa1a43784c7108700d3b67c81e6a09a2dc58e2 (diff)
Add ctrl to EVP_MD and EVP_PKEY_CTX to EVP_MD_CTX. These will be used
for enhanced sign/verify operations.
Diffstat (limited to 'crypto/evp/evp.h')
-rw-r--r--crypto/evp/evp.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/crypto/evp/evp.h b/crypto/evp/evp.h
index 2622b53bab..e5af71669b 100644
--- a/crypto/evp/evp.h
+++ b/crypto/evp/evp.h
@@ -176,6 +176,8 @@ struct env_md_st
int required_pkey_type[5]; /*EVP_PKEY_xxx */
int block_size;
int ctx_size; /* how big does the ctx->md_data need to be */
+ /* control function */
+ int (*md_ctrl)(EVP_MD_CTX *ctx, int cmd, int p1, void *p2);
} /* EVP_MD */;
typedef int evp_sign_method(int type,const unsigned char *m,
@@ -197,6 +199,30 @@ typedef int evp_verify_method(int type,const unsigned char *m,
#define EVP_MD_FLAG_PKEY_METHOD_SIGNATURE 0x0004
+/* DigestAlgorithmIdentifier flags... */
+
+#define EVP_MD_FLAG_DIGALGID_MASK 0x0018
+
+/* NULL or absent parameter accepted. Use NULL */
+
+#define EVP_MD_FLAG_DIGALGID_NULL 0x0000
+
+/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */
+
+#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
+
+/* Custom handling via ctrl */
+
+#define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018
+
+/* Digest ctrls */
+
+#define EVP_MD_CTRL_DIGALGID 0x1
+
+/* Minimum Algorithm specific ctrl value */
+
+#define EVP_MD_CTRL_ALG_CTRL 0x1000
+
#define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0}
#ifndef OPENSSL_NO_DSA
@@ -237,6 +263,8 @@ struct env_md_ctx_st
ENGINE *engine; /* functional reference if 'digest' is ENGINE-provided */
unsigned long flags;
void *md_data;
+ /* Public key context for sign/verify */
+ EVP_PKEY_CTX *pctx;
} /* EVP_MD_CTX */;
/* values for EVP_MD_CTX flags */
@@ -248,6 +276,14 @@ struct env_md_ctx_st
#define EVP_MD_CTX_FLAG_REUSE 0x0004 /* Don't free up ctx->md_data
* in EVP_MD_CTX_cleanup */
+/* MD operational flags */
+
+#define EVP_MD_CTX_FLAG_OP_MASK 0x00f0
+
+#define EVP_MD_CTX_FLAG_OP_DIGEST 0x0000
+#define EVP_MD_CTX_FLAG_OP_SIGN 0x0010
+#define EVP_MD_CTX_FLAG_OP_VERIFY 0x0020
+
struct evp_cipher_st
{
int nid;