OpenCoverage

hm_ameth.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/hmac/hm_ameth.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved.-
3 *-
4 * Licensed under the OpenSSL license (the "License"). You may not use-
5 * this file except in compliance with the License. You can obtain a copy-
6 * in the file LICENSE in the source distribution or at-
7 * https://www.openssl.org/source/license.html-
8 */-
9-
10#include <stdio.h>-
11#include "internal/cryptlib.h"-
12#include <openssl/evp.h>-
13#include "internal/asn1_int.h"-
14#include "internal/evp_int.h"-
15-
16/*-
17 * HMAC "ASN1" method. This is just here to indicate the maximum HMAC output-
18 * length and to free up an HMAC key.-
19 */-
20-
21static int hmac_size(const EVP_PKEY *pkey)-
22{-
23 return EVP_MAX_MD_SIZE;
never executed: return 64;
0
24}-
25-
26static void hmac_key_free(EVP_PKEY *pkey)-
27{-
28 ASN1_OCTET_STRING *os = EVP_PKEY_get0(pkey);-
29 if (os) {
osDescription
TRUEevaluated 19206 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-19206
30 if (os->data)
os->dataDescription
TRUEevaluated 19206 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-19206
31 OPENSSL_cleanse(os->data, os->length);
executed 19206 times by 1 test: OPENSSL_cleanse(os->data, os->length);
Executed by:
  • libcrypto.so.1.1
19206
32 ASN1_OCTET_STRING_free(os);-
33 }
executed 19206 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
19206
34}
executed 19206 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
19206
35-
36static int hmac_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)-
37{-
38 switch (op) {-
39 case ASN1_PKEY_CTRL_DEFAULT_MD_NID:
never executed: case 0x3:
0
40 *(int *)arg2 = NID_sha256;-
41 return 1;
never executed: return 1;
0
42-
43 default:
never executed: default:
0
44 return -2;
never executed: return -2;
0
45 }-
46}-
47-
48static int hmac_pkey_public_cmp(const EVP_PKEY *a, const EVP_PKEY *b)-
49{-
50 return ASN1_OCTET_STRING_cmp(EVP_PKEY_get0(a), EVP_PKEY_get0(b));
never executed: return ASN1_OCTET_STRING_cmp(EVP_PKEY_get0(a), EVP_PKEY_get0(b));
0
51}-
52-
53static int hmac_set_priv_key(EVP_PKEY *pkey, const unsigned char *priv,-
54 size_t len)-
55{-
56 ASN1_OCTET_STRING *os;-
57-
58 if (pkey->pkey.ptr != NULL)
pkey->pkey.ptr != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 16460 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-16460
59 return 0;
never executed: return 0;
0
60-
61 os = ASN1_OCTET_STRING_new();-
62 if (os == NULL)
os == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 16460 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-16460
63 return 0;
never executed: return 0;
0
64-
65-
66 if (!ASN1_OCTET_STRING_set(os, priv, len)) {
!ASN1_OCTET_ST...os, priv, len)Description
TRUEnever evaluated
FALSEevaluated 16460 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-16460
67 ASN1_OCTET_STRING_free(os);-
68 return 0;
never executed: return 0;
0
69 }-
70-
71 pkey->pkey.ptr = os;-
72 return 1;
executed 16460 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
16460
73}-
74-
75static int hmac_get_priv_key(const EVP_PKEY *pkey, unsigned char *priv,-
76 size_t *len)-
77{-
78 ASN1_OCTET_STRING *os = (ASN1_OCTET_STRING *)pkey->pkey.ptr;-
79-
80 if (priv == NULL) {
priv == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
81 *len = ASN1_STRING_length(os);-
82 return 1;
never executed: return 1;
0
83 }-
84-
85 if (os == NULL || *len < (size_t)ASN1_STRING_length(os))
os == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
*len < (size_t...ING_length(os)Description
TRUEnever evaluated
FALSEnever evaluated
0
86 return 0;
never executed: return 0;
0
87-
88 *len = ASN1_STRING_length(os);-
89 memcpy(priv, ASN1_STRING_get0_data(os), *len);-
90-
91 return 1;
never executed: return 1;
0
92}-
93-
94const EVP_PKEY_ASN1_METHOD hmac_asn1_meth = {-
95 EVP_PKEY_HMAC,-
96 EVP_PKEY_HMAC,-
97 0,-
98-
99 "HMAC",-
100 "OpenSSL HMAC method",-
101-
102 0, 0, hmac_pkey_public_cmp, 0,-
103-
104 0, 0, 0,-
105-
106 hmac_size,-
107 0, 0,-
108 0, 0, 0, 0, 0, 0, 0,-
109-
110 hmac_key_free,-
111 hmac_pkey_ctrl,-
112 NULL,-
113 NULL,-
114-
115 NULL,-
116 NULL,-
117 NULL,-
118-
119 NULL,-
120 NULL,-
121 NULL,-
122-
123 hmac_set_priv_key,-
124 NULL,-
125 hmac_get_priv_key,-
126 NULL,-
127};-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2