summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authormiod <>2014-11-09 19:12:18 +0000
committermiod <>2014-11-09 19:12:18 +0000
commita3c50c7d270773c83559454fd2b75ec6e04f43ab (patch)
treef2bf66bee1b6810bdd5feaf8e64d47fde890a658 /src/lib
parenteddb1ac4a1d54fc83b963d3de0d639285a026d4c (diff)
downloadopenbsd-a3c50c7d270773c83559454fd2b75ec6e04f43ab.tar.gz
openbsd-a3c50c7d270773c83559454fd2b75ec6e04f43ab.tar.bz2
openbsd-a3c50c7d270773c83559454fd2b75ec6e04f43ab.zip
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.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/crypto/shlib_version2
-rw-r--r--src/lib/libcrypto/evp/digest.c26
-rw-r--r--src/lib/libcrypto/shlib_version2
-rw-r--r--src/lib/libssl/src/crypto/evp/digest.c26
4 files changed, 52 insertions, 4 deletions
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 @@
1major=30 1major=30
2minor=1 2minor=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 @@
1/* $OpenBSD: digest.c,v 1.23 2014/07/13 11:14:02 miod Exp $ */ 1/* $OpenBSD: digest.c,v 1.24 2014/11/09 19:12:18 miod Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -375,3 +375,27 @@ EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx)
375 375
376 return 1; 376 return 1;
377} 377}
378
379int
380EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int type, int arg, void *ptr)
381{
382 int ret;
383
384 if (!ctx->digest) {
385 EVPerr(EVP_F_EVP_MD_CTX_CTRL, EVP_R_NO_CIPHER_SET);
386 return 0;
387 }
388
389 if (!ctx->digest->md_ctrl) {
390 EVPerr(EVP_F_EVP_MD_CTX_CTRL, EVP_R_CTRL_NOT_IMPLEMENTED);
391 return 0;
392 }
393
394 ret = ctx->digest->md_ctrl(ctx, type, arg, ptr);
395 if (ret == -1) {
396 EVPerr(EVP_F_EVP_MD_CTX_CTRL,
397 EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED);
398 return 0;
399 }
400 return ret;
401}
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 @@
1major=30 1major=30
2minor=1 2minor=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 @@
1/* $OpenBSD: digest.c,v 1.23 2014/07/13 11:14:02 miod Exp $ */ 1/* $OpenBSD: digest.c,v 1.24 2014/11/09 19:12:18 miod Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -375,3 +375,27 @@ EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx)
375 375
376 return 1; 376 return 1;
377} 377}
378
379int
380EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int type, int arg, void *ptr)
381{
382 int ret;
383
384 if (!ctx->digest) {
385 EVPerr(EVP_F_EVP_MD_CTX_CTRL, EVP_R_NO_CIPHER_SET);
386 return 0;
387 }
388
389 if (!ctx->digest->md_ctrl) {
390 EVPerr(EVP_F_EVP_MD_CTX_CTRL, EVP_R_CTRL_NOT_IMPLEMENTED);
391 return 0;
392 }
393
394 ret = ctx->digest->md_ctrl(ctx, type, arg, ptr);
395 if (ret == -1) {
396 EVPerr(EVP_F_EVP_MD_CTX_CTRL,
397 EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED);
398 return 0;
399 }
400 return ret;
401}