From a3c50c7d270773c83559454fd2b75ec6e04f43ab Mon Sep 17 00:00:00 2001 From: miod <> Date: Sun, 9 Nov 2014 19:12:18 +0000 Subject: Introduce EVP_MD_CTX_ctrl(), to allow for fine control of a given digest. This functionality was already available (and optional), and used in the bowels of the ASN.1 code. This exposes it as a public interface, which will be used by the upcoming GOST code. Crank libcrypto minor version. From Dmitry Eremin-Solenikov. --- src/lib/libcrypto/crypto/shlib_version | 2 +- src/lib/libcrypto/evp/digest.c | 26 +++++++++++++++++++++++++- src/lib/libcrypto/shlib_version | 2 +- src/lib/libssl/src/crypto/evp/digest.c | 26 +++++++++++++++++++++++++- 4 files changed, 52 insertions(+), 4 deletions(-) (limited to 'src/lib') diff --git a/src/lib/libcrypto/crypto/shlib_version b/src/lib/libcrypto/crypto/shlib_version index 10f084cda1..869b6116df 100644 --- a/src/lib/libcrypto/crypto/shlib_version +++ b/src/lib/libcrypto/crypto/shlib_version @@ -1,2 +1,2 @@ major=30 -minor=1 +minor=2 diff --git a/src/lib/libcrypto/evp/digest.c b/src/lib/libcrypto/evp/digest.c index a1be18ee22..4a18aff657 100644 --- a/src/lib/libcrypto/evp/digest.c +++ b/src/lib/libcrypto/evp/digest.c @@ -1,4 +1,4 @@ -/* $OpenBSD: digest.c,v 1.23 2014/07/13 11:14:02 miod Exp $ */ +/* $OpenBSD: digest.c,v 1.24 2014/11/09 19:12:18 miod Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -375,3 +375,27 @@ EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx) return 1; } + +int +EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int type, int arg, void *ptr) +{ + int ret; + + if (!ctx->digest) { + EVPerr(EVP_F_EVP_MD_CTX_CTRL, EVP_R_NO_CIPHER_SET); + return 0; + } + + if (!ctx->digest->md_ctrl) { + EVPerr(EVP_F_EVP_MD_CTX_CTRL, EVP_R_CTRL_NOT_IMPLEMENTED); + return 0; + } + + ret = ctx->digest->md_ctrl(ctx, type, arg, ptr); + if (ret == -1) { + EVPerr(EVP_F_EVP_MD_CTX_CTRL, + EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED); + return 0; + } + return ret; +} diff --git a/src/lib/libcrypto/shlib_version b/src/lib/libcrypto/shlib_version index 10f084cda1..869b6116df 100644 --- a/src/lib/libcrypto/shlib_version +++ b/src/lib/libcrypto/shlib_version @@ -1,2 +1,2 @@ major=30 -minor=1 +minor=2 diff --git a/src/lib/libssl/src/crypto/evp/digest.c b/src/lib/libssl/src/crypto/evp/digest.c index a1be18ee22..4a18aff657 100644 --- a/src/lib/libssl/src/crypto/evp/digest.c +++ b/src/lib/libssl/src/crypto/evp/digest.c @@ -1,4 +1,4 @@ -/* $OpenBSD: digest.c,v 1.23 2014/07/13 11:14:02 miod Exp $ */ +/* $OpenBSD: digest.c,v 1.24 2014/11/09 19:12:18 miod Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -375,3 +375,27 @@ EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx) return 1; } + +int +EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int type, int arg, void *ptr) +{ + int ret; + + if (!ctx->digest) { + EVPerr(EVP_F_EVP_MD_CTX_CTRL, EVP_R_NO_CIPHER_SET); + return 0; + } + + if (!ctx->digest->md_ctrl) { + EVPerr(EVP_F_EVP_MD_CTX_CTRL, EVP_R_CTRL_NOT_IMPLEMENTED); + return 0; + } + + ret = ctx->digest->md_ctrl(ctx, type, arg, ptr); + if (ret == -1) { + EVPerr(EVP_F_EVP_MD_CTX_CTRL, + EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED); + return 0; + } + return ret; +} -- cgit v1.2.3-55-g6feb