diff options
| author | miod <> | 2014-11-09 19:12:18 +0000 | 
|---|---|---|
| committer | miod <> | 2014-11-09 19:12:18 +0000 | 
| commit | a3c50c7d270773c83559454fd2b75ec6e04f43ab (patch) | |
| tree | f2bf66bee1b6810bdd5feaf8e64d47fde890a658 /src | |
| parent | eddb1ac4a1d54fc83b963d3de0d639285a026d4c (diff) | |
| download | openbsd-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 '')
| -rw-r--r-- | src/lib/libcrypto/crypto/shlib_version | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/digest.c | 26 | ||||
| -rw-r--r-- | src/lib/libcrypto/shlib_version | 2 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/evp/digest.c | 26 | 
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 @@ | |||
| 1 | major=30 | 1 | major=30 | 
| 2 | minor=1 | 2 | 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 @@ | |||
| 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 | |||
| 379 | int | ||
| 380 | EVP_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 @@ | |||
| 1 | major=30 | 1 | major=30 | 
| 2 | minor=1 | 2 | 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 @@ | |||
| 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 | |||
| 379 | int | ||
| 380 | EVP_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 | } | ||
