OpenCoverage

dh_kdf.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/dh/dh_kdf.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4static int skip_asn1(unsigned char **pp, long *plen, int exptag)-
5{-
6 const unsigned char *q = *pp;-
7 int i, tag, xclass;-
8 long tmplen;-
9 i = ASN1_get_object(&q, &tmplen, &tag, &xclass, *plen);-
10 if (i & 0x80
i & 0x80Description
TRUEnever evaluated
FALSEevaluated 8 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-8
11 return
never executed: return 0;
0;
never executed: return 0;
0
12 if (tag != exptag
tag != exptagDescription
TRUEnever evaluated
FALSEevaluated 8 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
|| xclass != 0x00
xclass != 0x00Description
TRUEnever evaluated
FALSEevaluated 8 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-8
13 return
never executed: return 0;
0;
never executed: return 0;
0
14 if (tag == 6
tag == 6Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
2-6
15 q += tmplen;
executed 2 times by 1 test: q += tmplen;
Executed by:
  • libcrypto.so.1.1
2
16 *plen -= q - *pp;-
17 *pp = (unsigned char *)q;-
18 return
executed 8 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1;
executed 8 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
8
19}-
20-
21-
22-
23-
24-
25-
26static int dh_sharedinfo_encode(unsigned char **pder, unsigned char **pctr,-
27 ASN1_OBJECT *key_oid, size_t outlen,-
28 const unsigned char *ukm, size_t ukmlen)-
29{-
30 unsigned char *p;-
31 int derlen;-
32 long tlen;-
33-
34 static unsigned char ctr[4] = { 0xF3, 0x17, 0x22, 0x53 };-
35 X509_ALGOR atmp;-
36 ASN1_OCTET_STRING ctr_oct, ukm_oct, *pukm_oct;-
37 ASN1_TYPE ctr_atype;-
38 if (ukmlen > (1L << 30)
ukmlen > (1L << 30)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
|| outlen > (1L << 30)
outlen > (1L << 30)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
39 return
never executed: return 0;
0;
never executed: return 0;
0
40 ctr_oct.data = ctr;-
41 ctr_oct.length = 4;-
42 ctr_oct.flags = 0;-
43 ctr_oct.type = 4;-
44 ctr_atype.type = 4;-
45 ctr_atype.value.octet_string = &ctr_oct;-
46 atmp.algorithm = key_oid;-
47 atmp.parameter = &ctr_atype;-
48 if (ukm
ukmDescription
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
) {
0-2
49 ukm_oct.type = 4;-
50 ukm_oct.flags = 0;-
51 ukm_oct.data = (unsigned char *)ukm;-
52 ukm_oct.length = ukmlen;-
53 pukm_oct = &ukm_oct;-
54 }
never executed: end of block
else
0
55 pukm_oct =
executed 2 times by 1 test: pukm_oct = ((void *)0) ;
Executed by:
  • libcrypto.so.1.1
2
56 ((void *)0)
executed 2 times by 1 test: pukm_oct = ((void *)0) ;
Executed by:
  • libcrypto.so.1.1
2
57 ;
executed 2 times by 1 test: pukm_oct = ((void *)0) ;
Executed by:
  • libcrypto.so.1.1
2
58 derlen = CMS_SharedInfo_encode(pder, &atmp, pukm_oct, outlen);-
59 if (derlen <= 0
derlen <= 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
60 return
never executed: return 0;
0;
never executed: return 0;
0
61 p = *pder;-
62 tlen = derlen;-
63 if (!skip_asn1(&p, &tlen, 16)
!skip_asn1(&p, &tlen, 16)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
64 return
never executed: return 0;
0;
never executed: return 0;
0
65 if (!skip_asn1(&p, &tlen, 16)
!skip_asn1(&p, &tlen, 16)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
66 return
never executed: return 0;
0;
never executed: return 0;
0
67 if (!skip_asn1(&p, &tlen, 6)
!skip_asn1(&p, &tlen, 6)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
68 return
never executed: return 0;
0;
never executed: return 0;
0
69 if (!skip_asn1(&p, &tlen, 4)
!skip_asn1(&p, &tlen, 4)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
70 return
never executed: return 0;
0;
never executed: return 0;
0
71 if (CRYPTO_memcmp(p, ctr, 4)
CRYPTO_memcmp(p, ctr, 4)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
72 return
never executed: return 0;
0;
never executed: return 0;
0
73 *pctr = p;-
74 return
executed 2 times by 1 test: return derlen;
Executed by:
  • libcrypto.so.1.1
derlen;
executed 2 times by 1 test: return derlen;
Executed by:
  • libcrypto.so.1.1
2
75}-
76-
77int DH_KDF_X9_42(unsigned char *out, size_t outlen,-
78 const unsigned char *Z, size_t Zlen,-
79 ASN1_OBJECT *key_oid,-
80 const unsigned char *ukm, size_t ukmlen, const EVP_MD *md)-
81{-
82 EVP_MD_CTX *mctx = -
83 ((void *)0)-
84 ;-
85 int rv = 0;-
86 unsigned int i;-
87 size_t mdlen;-
88 unsigned char *der = -
89 ((void *)0)-
90 , *ctr;-
91 int derlen;-
92 if (Zlen > (1L << 30)
Zlen > (1L << 30)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
93 return
never executed: return 0;
0;
never executed: return 0;
0
94 mctx = EVP_MD_CTX_new();-
95 if (mctx ==
mctx == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
96 ((void *)0)
mctx == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
97 )-
98 return
never executed: return 0;
0;
never executed: return 0;
0
99 mdlen = EVP_MD_size(md);-
100 derlen = dh_sharedinfo_encode(&der, &ctr, key_oid, outlen, ukm, ukmlen);-
101 if (derlen == 0
derlen == 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
102 goto
never executed: goto err;
err;
never executed: goto err;
0
103 for (i = 1;; i++) {-
104 unsigned char mtmp[64];-
105 if (!EVP_DigestInit_ex(mctx, md,
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
106 ((void *)0)
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
107 )
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
108 || !EVP_DigestUpdate(mctx, Z, Zlen)
!EVP_DigestUpd...mctx, Z, Zlen)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
109 goto
never executed: goto err;
err;
never executed: goto err;
0
110 ctr[3] = i & 0xFF;-
111 ctr[2] = (i >> 8) & 0xFF;-
112 ctr[1] = (i >> 16) & 0xFF;-
113 ctr[0] = (i >> 24) & 0xFF;-
114 if (!EVP_DigestUpdate(mctx, der, derlen)
!EVP_DigestUpd..., der, derlen)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
115 goto
never executed: goto err;
err;
never executed: goto err;
0
116 if (outlen >= mdlen
outlen >= mdlenDescription
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
) {
0-2
117 if (!EVP_DigestFinal(mctx, out,
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
118 ((void *)0)
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
119 )
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
)
0
120 goto
never executed: goto err;
err;
never executed: goto err;
0
121 outlen -= mdlen;-
122 if (outlen == 0
outlen == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
123 break;
never executed: break;
0
124 out += mdlen;-
125 }
never executed: end of block
else {
0
126 if (!EVP_DigestFinal(mctx, mtmp,
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
127 ((void *)0)
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
128 )
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-2
129 goto
never executed: goto err;
err;
never executed: goto err;
0
130 memcpy(out, mtmp, outlen);-
131 OPENSSL_cleanse(mtmp, mdlen);-
132 break;
executed 2 times by 1 test: break;
Executed by:
  • libcrypto.so.1.1
2
133 }-
134 }-
135 rv = 1;-
136 err:
code before this statement executed 2 times by 1 test: err:
Executed by:
  • libcrypto.so.1.1
2
137 CRYPTO_free(der, __FILE__, 146);-
138 EVP_MD_CTX_free(mctx);-
139 return
executed 2 times by 1 test: return rv;
Executed by:
  • libcrypto.so.1.1
rv;
executed 2 times by 1 test: return rv;
Executed by:
  • libcrypto.so.1.1
2
140}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2