OpenCoverage

poly1305_ameth.c

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

Generated by Squish Coco 4.2.2