OpenCoverage

siphash_ameth.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/siphash/siphash_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/siphash.h"-
15#include "siphash_local.h"-
16#include "internal/evp_int.h"-
17-
18/*-
19 * SIPHASH "ASN1" method. This is just here to indicate the maximum-
20 * SIPHASH output length and to free up a SIPHASH key.-
21 */-
22-
23static int siphash_size(const EVP_PKEY *pkey)-
24{-
25 return SIPHASH_MAX_DIGEST_SIZE;
never executed: return 16;
0
26}-
27-
28static void siphash_key_free(EVP_PKEY *pkey)-
29{-
30 ASN1_OCTET_STRING *os = EVP_PKEY_get0(pkey);-
31-
32 if (os != NULL) {
os != ((void *)0)Description
TRUEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-26
33 if (os->data != NULL)
os->data != ((void *)0)Description
TRUEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-26
34 OPENSSL_cleanse(os->data, os->length);
executed 26 times by 1 test: OPENSSL_cleanse(os->data, os->length);
Executed by:
  • libcrypto.so.1.1
26
35 ASN1_OCTET_STRING_free(os);-
36 }
executed 26 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
26
37}
executed 26 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
26
38-
39static int siphash_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)-
40{-
41 /* nothing (including ASN1_PKEY_CTRL_DEFAULT_MD_NID), is supported */-
42 return -2;
never executed: return -2;
0
43}-
44-
45static int siphash_pkey_public_cmp(const EVP_PKEY *a, const EVP_PKEY *b)-
46{-
47 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
48}-
49-
50static int siphash_set_priv_key(EVP_PKEY *pkey, const unsigned char *priv,-
51 size_t len)-
52{-
53 ASN1_OCTET_STRING *os;-
54-
55 if (pkey->pkey.ptr != NULL || len != SIPHASH_KEY_SIZE)
pkey->pkey.ptr != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
len != 16Description
TRUEnever evaluated
FALSEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-26
56 return 0;
never executed: return 0;
0
57-
58 os = ASN1_OCTET_STRING_new();-
59 if (os == NULL)
os == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-26
60 return 0;
never executed: return 0;
0
61-
62 if (!ASN1_OCTET_STRING_set(os, priv, len)) {
!ASN1_OCTET_ST...os, priv, len)Description
TRUEnever evaluated
FALSEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-26
63 ASN1_OCTET_STRING_free(os);-
64 return 0;
never executed: return 0;
0
65 }-
66-
67 pkey->pkey.ptr = os;-
68 return 1;
executed 26 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
26
69}-
70-
71static int siphash_get_priv_key(const EVP_PKEY *pkey, unsigned char *priv,-
72 size_t *len)-
73{-
74 ASN1_OCTET_STRING *os = (ASN1_OCTET_STRING *)pkey->pkey.ptr;-
75-
76 if (priv == NULL) {
priv == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
77 *len = SIPHASH_KEY_SIZE;-
78 return 1;
never executed: return 1;
0
79 }-
80-
81 if (os == NULL || *len < SIPHASH_KEY_SIZE)
os == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
*len < 16Description
TRUEnever evaluated
FALSEnever evaluated
0
82 return 0;
never executed: return 0;
0
83-
84 memcpy(priv, ASN1_STRING_get0_data(os), ASN1_STRING_length(os));-
85 *len = SIPHASH_KEY_SIZE;-
86-
87 return 1;
never executed: return 1;
0
88}-
89-
90const EVP_PKEY_ASN1_METHOD siphash_asn1_meth = {-
91 EVP_PKEY_SIPHASH,-
92 EVP_PKEY_SIPHASH,-
93 0,-
94-
95 "SIPHASH",-
96 "OpenSSL SIPHASH method",-
97-
98 0, 0, siphash_pkey_public_cmp, 0,-
99-
100 0, 0, 0,-
101-
102 siphash_size,-
103 0, 0,-
104 0, 0, 0, 0, 0, 0, 0,-
105-
106 siphash_key_free,-
107 siphash_pkey_ctrl,-
108 NULL,-
109 NULL,-
110-
111 NULL,-
112 NULL,-
113 NULL,-
114-
115 NULL,-
116 NULL,-
117 NULL,-
118-
119 siphash_set_priv_key,-
120 NULL,-
121 siphash_get_priv_key,-
122 NULL,-
123};-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2