X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fhmac%2Fhm_ameth.c;h=98e73e937ff8157fdb23bdf13f27ccd116b1ddc6;hp=ff937ca08b839bc3cab6e399256512d02939dd31;hb=b7b8e948014d93e1eb6d954d0799ae68ab0e068b;hpb=44e0c2bae4bfd87d770480902618dbccde84fd81 diff --git a/crypto/hmac/hm_ameth.c b/crypto/hmac/hm_ameth.c index ff937ca08b..98e73e937f 100644 --- a/crypto/hmac/hm_ameth.c +++ b/crypto/hmac/hm_ameth.c @@ -1,5 +1,6 @@ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL - * project 2007. +/* + * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project + * 2007. */ /* ==================================================================== * Copyright (c) 2007 The OpenSSL Project. All rights reserved. @@ -9,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -56,114 +57,113 @@ */ #include -#include "cryptlib.h" +#include "internal/cryptlib.h" #include -#include "asn1_locl.h" +#include "internal/asn1_int.h" #define HMAC_TEST_PRIVATE_KEY_FORMAT -/* HMAC "ASN1" method. This is just here to indicate the - * maximum HMAC output length and to free up an HMAC - * key. +/* + * HMAC "ASN1" method. This is just here to indicate the maximum HMAC output + * length and to free up an HMAC key. */ static int hmac_size(const EVP_PKEY *pkey) - { - return EVP_MAX_MD_SIZE; - } +{ + return EVP_MAX_MD_SIZE; +} static void hmac_key_free(EVP_PKEY *pkey) - { - ASN1_OCTET_STRING *os = (ASN1_OCTET_STRING *)pkey->pkey.ptr; - if (os) - { - if (os->data) - OPENSSL_cleanse(os->data, os->length); - ASN1_OCTET_STRING_free(os); - } - } - +{ + ASN1_OCTET_STRING *os = EVP_PKEY_get0(pkey); + if (os) { + if (os->data) + OPENSSL_cleanse(os->data, os->length); + ASN1_OCTET_STRING_free(os); + } +} static int hmac_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2) - { - switch (op) - { - case ASN1_PKEY_CTRL_DEFAULT_MD_NID: - *(int *)arg2 = NID_sha256; - return 1; - - default: - return -2; - } - } +{ + switch (op) { + case ASN1_PKEY_CTRL_DEFAULT_MD_NID: + *(int *)arg2 = NID_sha256; + return 1; + + default: + return -2; + } +} #ifdef HMAC_TEST_PRIVATE_KEY_FORMAT -/* A bogus private key format for test purposes. This is simply the - * HMAC key with "HMAC PRIVATE KEY" in the headers. When enabled the - * genpkey utility can be used to "generate" HMAC keys. +/* + * A bogus private key format for test purposes. This is simply the HMAC key + * with "HMAC PRIVATE KEY" in the headers. When enabled the genpkey utility + * can be used to "generate" HMAC keys. */ static int old_hmac_decode(EVP_PKEY *pkey, - const unsigned char **pder, int derlen) - { - ASN1_OCTET_STRING *os; - os = ASN1_OCTET_STRING_new(); - if (!os || !ASN1_OCTET_STRING_set(os, *pder, derlen)) - return 0; - EVP_PKEY_assign(pkey, EVP_PKEY_HMAC, os); - return 1; - } + const unsigned char **pder, int derlen) +{ + ASN1_OCTET_STRING *os; + os = ASN1_OCTET_STRING_new(); + if (os == NULL || !ASN1_OCTET_STRING_set(os, *pder, derlen)) + goto err; + if (!EVP_PKEY_assign(pkey, EVP_PKEY_HMAC, os)) + goto err; + return 1; + + err: + ASN1_OCTET_STRING_free(os); + return 0; +} static int old_hmac_encode(const EVP_PKEY *pkey, unsigned char **pder) - { - int inc; - ASN1_OCTET_STRING *os = (ASN1_OCTET_STRING *)pkey->pkey.ptr; - if (pder) - { - if (!*pder) - { - *pder = OPENSSL_malloc(os->length); - if (*pder == NULL) - return -1; - inc = 0; - } - else inc = 1; - - memcpy(*pder, os->data, os->length); - - if (inc) - *pder += os->length; - } - - return os->length; - } +{ + int inc; + ASN1_OCTET_STRING *os = EVP_PKEY_get0(pkey); + if (pder) { + if (!*pder) { + *pder = OPENSSL_malloc(os->length); + if (*pder == NULL) + return -1; + inc = 0; + } else + inc = 1; + + memcpy(*pder, os->data, os->length); + + if (inc) + *pder += os->length; + } + + return os->length; +} #endif -const EVP_PKEY_ASN1_METHOD hmac_asn1_meth = - { - EVP_PKEY_HMAC, - EVP_PKEY_HMAC, - 0, +const EVP_PKEY_ASN1_METHOD hmac_asn1_meth = { + EVP_PKEY_HMAC, + EVP_PKEY_HMAC, + 0, - "HMAC", - "OpenSSL HMAC method", + "HMAC", + "OpenSSL HMAC method", - 0,0,0,0, + 0, 0, 0, 0, - 0,0,0, + 0, 0, 0, - hmac_size, - 0, 0, - 0,0,0,0,0,0,0, + hmac_size, + 0, 0, + 0, 0, 0, 0, 0, 0, 0, - hmac_key_free, - hmac_pkey_ctrl, + hmac_key_free, + hmac_pkey_ctrl, #ifdef HMAC_TEST_PRIVATE_KEY_FORMAT - old_hmac_decode, - old_hmac_encode + old_hmac_decode, + old_hmac_encode #else - 0,0 + 0, 0 #endif - }; - +};