OpenCoverage

p5_crpt.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/evp/p5_crpt.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 1999-2016 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 <stdlib.h>-
12#include "internal/cryptlib.h"-
13#include <openssl/x509.h>-
14#include <openssl/evp.h>-
15-
16/*-
17 * Doesn't do anything now: Builtin PBE algorithms in static table.-
18 */-
19-
20void PKCS5_PBE_add(void)-
21{-
22}-
23-
24int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen,-
25 ASN1_TYPE *param, const EVP_CIPHER *cipher,-
26 const EVP_MD *md, int en_de)-
27{-
28 EVP_MD_CTX *ctx;-
29 unsigned char md_tmp[EVP_MAX_MD_SIZE];-
30 unsigned char key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH];-
31 int i;-
32 PBEPARAM *pbe;-
33 int saltlen, iter;-
34 unsigned char *salt;-
35 int mdsize;-
36 int rv = 0;-
37-
38 /* Extract useful info from parameter */-
39 if (param == NULL || param->type != V_ASN1_SEQUENCE ||
param == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
param->type != 16Description
TRUEnever evaluated
FALSEnever evaluated
0
40 param->value.sequence == NULL) {
param->value.s...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
41 EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, EVP_R_DECODE_ERROR);-
42 return 0;
never executed: return 0;
0
43 }-
44-
45 pbe = ASN1_TYPE_unpack_sequence(ASN1_ITEM_rptr(PBEPARAM), param);-
46 if (pbe == NULL) {
pbe == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
47 EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, EVP_R_DECODE_ERROR);-
48 return 0;
never executed: return 0;
0
49 }-
50-
51 if (!pbe->iter)
!pbe->iterDescription
TRUEnever evaluated
FALSEnever evaluated
0
52 iter = 1;
never executed: iter = 1;
0
53 else-
54 iter = ASN1_INTEGER_get(pbe->iter);
never executed: iter = ASN1_INTEGER_get(pbe->iter);
0
55 salt = pbe->salt->data;-
56 saltlen = pbe->salt->length;-
57-
58 if (!pass)
!passDescription
TRUEnever evaluated
FALSEnever evaluated
0
59 passlen = 0;
never executed: passlen = 0;
0
60 else if (passlen == -1)
passlen == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
61 passlen = strlen(pass);
never executed: passlen = strlen(pass);
0
62-
63 ctx = EVP_MD_CTX_new();-
64 if (ctx == NULL) {
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
65 EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, ERR_R_MALLOC_FAILURE);-
66 goto err;
never executed: goto err;
0
67 }-
68-
69 if (!EVP_DigestInit_ex(ctx, md, NULL))
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
70 goto err;
never executed: goto err;
0
71 if (!EVP_DigestUpdate(ctx, pass, passlen))
!EVP_DigestUpd...pass, passlen)Description
TRUEnever evaluated
FALSEnever evaluated
0
72 goto err;
never executed: goto err;
0
73 if (!EVP_DigestUpdate(ctx, salt, saltlen))
!EVP_DigestUpd...salt, saltlen)Description
TRUEnever evaluated
FALSEnever evaluated
0
74 goto err;
never executed: goto err;
0
75 PBEPARAM_free(pbe);-
76 if (!EVP_DigestFinal_ex(ctx, md_tmp, NULL))
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
77 goto err;
never executed: goto err;
0
78 mdsize = EVP_MD_size(md);-
79 if (mdsize < 0)
mdsize < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
80 return 0;
never executed: return 0;
0
81 for (i = 1; i < iter; i++) {
i < iterDescription
TRUEnever evaluated
FALSEnever evaluated
0
82 if (!EVP_DigestInit_ex(ctx, md, NULL))
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
83 goto err;
never executed: goto err;
0
84 if (!EVP_DigestUpdate(ctx, md_tmp, mdsize))
!EVP_DigestUpd...d_tmp, mdsize)Description
TRUEnever evaluated
FALSEnever evaluated
0
85 goto err;
never executed: goto err;
0
86 if (!EVP_DigestFinal_ex(ctx, md_tmp, NULL))
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
87 goto err;
never executed: goto err;
0
88 }
never executed: end of block
0
89 OPENSSL_assert(EVP_CIPHER_key_length(cipher) <= (int)sizeof(md_tmp));-
90 memcpy(key, md_tmp, EVP_CIPHER_key_length(cipher));-
91 OPENSSL_assert(EVP_CIPHER_iv_length(cipher) <= 16);-
92 memcpy(iv, md_tmp + (16 - EVP_CIPHER_iv_length(cipher)),-
93 EVP_CIPHER_iv_length(cipher));-
94 if (!EVP_CipherInit_ex(cctx, cipher, NULL, key, iv, en_de))
!EVP_CipherIni...ey, iv, en_de)Description
TRUEnever evaluated
FALSEnever evaluated
0
95 goto err;
never executed: goto err;
0
96 OPENSSL_cleanse(md_tmp, EVP_MAX_MD_SIZE);-
97 OPENSSL_cleanse(key, EVP_MAX_KEY_LENGTH);-
98 OPENSSL_cleanse(iv, EVP_MAX_IV_LENGTH);-
99 rv = 1;-
100 err:
code before this statement never executed: err:
0
101 EVP_MD_CTX_free(ctx);-
102 return rv;
never executed: return rv;
0
103}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2