forked from wolfSSL/wolfssl
Set default digest NID
This commit is contained in:
@ -2287,7 +2287,6 @@ const unsigned char* wolfSSL_EVP_PKEY_get0_hmac(const WOLFSSL_EVP_PKEY* pkey,
|
|||||||
return (const unsigned char*)pkey->pkey.ptr;
|
return (const unsigned char*)pkey->pkey.ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Initialize an EVP_DigestSign/Verify operation.
|
/* Initialize an EVP_DigestSign/Verify operation.
|
||||||
* Initialize a digest for RSA and ECC keys, or HMAC for HMAC key.
|
* Initialize a digest for RSA and ECC keys, or HMAC for HMAC key.
|
||||||
*/
|
*/
|
||||||
@ -2297,6 +2296,19 @@ static int wolfSSL_evp_digest_pk_init(WOLFSSL_EVP_MD_CTX *ctx,
|
|||||||
WOLFSSL_ENGINE *e,
|
WOLFSSL_ENGINE *e,
|
||||||
WOLFSSL_EVP_PKEY *pkey)
|
WOLFSSL_EVP_PKEY *pkey)
|
||||||
{
|
{
|
||||||
|
if (!type) {
|
||||||
|
int default_digest;
|
||||||
|
if (wolfSSL_EVP_PKEY_get_default_digest_nid(pkey, &default_digest)
|
||||||
|
!= WOLFSSL_SUCCESS) {
|
||||||
|
WOLFSSL_MSG("Could not get default digest");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
type = wolfSSL_EVP_get_digestbynid(default_digest);
|
||||||
|
if (!type) {
|
||||||
|
return BAD_FUNC_ARG;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (pkey->type == EVP_PKEY_HMAC) {
|
if (pkey->type == EVP_PKEY_HMAC) {
|
||||||
int hashType;
|
int hashType;
|
||||||
const unsigned char* key;
|
const unsigned char* key;
|
||||||
@ -2511,7 +2523,7 @@ int wolfSSL_EVP_DigestSignInit(WOLFSSL_EVP_MD_CTX *ctx,
|
|||||||
{
|
{
|
||||||
WOLFSSL_ENTER("EVP_DigestSignInit");
|
WOLFSSL_ENTER("EVP_DigestSignInit");
|
||||||
|
|
||||||
if (ctx == NULL || type == NULL || pkey == NULL)
|
if (ctx == NULL || pkey == NULL)
|
||||||
return BAD_FUNC_ARG;
|
return BAD_FUNC_ARG;
|
||||||
|
|
||||||
return wolfSSL_evp_digest_pk_init(ctx, pctx, type, e, pkey);
|
return wolfSSL_evp_digest_pk_init(ctx, pctx, type, e, pkey);
|
||||||
@ -5393,7 +5405,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
|
|||||||
|
|
||||||
WOLFSSL_ENTER("EVP_DigestInit");
|
WOLFSSL_ENTER("EVP_DigestInit");
|
||||||
|
|
||||||
if (ctx == NULL || md == NULL) {
|
if (ctx == NULL) {
|
||||||
return BAD_FUNC_ARG;
|
return BAD_FUNC_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5407,7 +5419,10 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
|
|||||||
|
|
||||||
/* Set to 0 if no match */
|
/* Set to 0 if no match */
|
||||||
ctx->macType = wolfSSL_EVP_md2macType(md);
|
ctx->macType = wolfSSL_EVP_md2macType(md);
|
||||||
if (XSTRNCMP(md, "SHA256", 6) == 0) {
|
if (md == NULL) {
|
||||||
|
XMEMSET(&ctx->hash.digest, 0, sizeof(WOLFSSL_Hasher));
|
||||||
|
}
|
||||||
|
else if (XSTRNCMP(md, "SHA256", 6) == 0) {
|
||||||
ret = wolfSSL_SHA256_Init(&(ctx->hash.digest.sha256));
|
ret = wolfSSL_SHA256_Init(&(ctx->hash.digest.sha256));
|
||||||
}
|
}
|
||||||
#ifdef WOLFSSL_SHA224
|
#ifdef WOLFSSL_SHA224
|
||||||
@ -5673,6 +5688,10 @@ const WOLFSSL_EVP_MD* wolfSSL_EVP_get_digestbynid(int id)
|
|||||||
#ifndef NO_SHA
|
#ifndef NO_SHA
|
||||||
case NID_sha1:
|
case NID_sha1:
|
||||||
return wolfSSL_EVP_sha1();
|
return wolfSSL_EVP_sha1();
|
||||||
|
#endif
|
||||||
|
#ifndef NO_SHA256
|
||||||
|
case NID_sha256:
|
||||||
|
return wolfSSL_EVP_sha256();
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
WOLFSSL_MSG("Bad digest id value");
|
WOLFSSL_MSG("Bad digest id value");
|
||||||
@ -6582,15 +6601,29 @@ int wolfSSL_EVP_PKEY_base_id(const WOLFSSL_EVP_PKEY *pkey)
|
|||||||
|
|
||||||
int wolfSSL_EVP_PKEY_get_default_digest_nid(WOLFSSL_EVP_PKEY *pkey, int *pnid)
|
int wolfSSL_EVP_PKEY_get_default_digest_nid(WOLFSSL_EVP_PKEY *pkey, int *pnid)
|
||||||
{
|
{
|
||||||
(void)pkey;
|
WOLFSSL_ENTER("wolfSSL_EVP_PKEY_get_default_digest_nid");
|
||||||
#ifndef NO_SHA256
|
|
||||||
if (pnid) {
|
if (!pkey || !pnid) {
|
||||||
*pnid = NID_sha256;
|
WOLFSSL_MSG("Bad parameter");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
return WOLFSSL_SUCCESS;
|
|
||||||
#else
|
switch (pkey->type) {
|
||||||
return -2;
|
case EVP_PKEY_HMAC:
|
||||||
|
#ifndef NO_DSA
|
||||||
|
case EVP_PKEY_DSA:
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef NO_RSA
|
||||||
|
case EVP_PKEY_RSA:
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_ECC
|
||||||
|
case EVP_PKEY_EC:
|
||||||
|
#endif
|
||||||
|
*pnid = NID_sha256;
|
||||||
|
return WOLFSSL_SUCCESS;
|
||||||
|
default:
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* increments ref count of WOLFSSL_EVP_PKEY. Return 1 on success, 0 on error */
|
/* increments ref count of WOLFSSL_EVP_PKEY. Return 1 on success, 0 on error */
|
||||||
|
@ -925,7 +925,6 @@ typedef WOLFSSL_EVP_CIPHER_CTX EVP_CIPHER_CTX;
|
|||||||
#define EVP_R_PRIVATE_KEY_DECODE_ERROR (-MIN_CODE_E + 100 + 4)
|
#define EVP_R_PRIVATE_KEY_DECODE_ERROR (-MIN_CODE_E + 100 + 4)
|
||||||
|
|
||||||
#define EVP_PKEY_NONE NID_undef
|
#define EVP_PKEY_NONE NID_undef
|
||||||
#define EVP_PKEY_RSA 6
|
|
||||||
#define EVP_PKEY_RSA2 19
|
#define EVP_PKEY_RSA2 19
|
||||||
#define EVP_PKEY_DH 28
|
#define EVP_PKEY_DH 28
|
||||||
#define EVP_CIPHER_mode WOLFSSL_CIPHER_mode
|
#define EVP_CIPHER_mode WOLFSSL_CIPHER_mode
|
||||||
|
Reference in New Issue
Block a user