Coverage Report

Created: 2018-08-29 13:53

/src/openssl/crypto/evp/evp_cnf.c
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright 2012-2017 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 <openssl/crypto.h>
12
#include "internal/cryptlib.h"
13
#include <openssl/conf.h>
14
#include <openssl/x509.h>
15
#include <openssl/x509v3.h>
16
17
/* Algorithm configuration module. */
18
19
static int alg_module_init(CONF_IMODULE *md, const CONF *cnf)
20
0
{
21
0
    int i;
22
0
    const char *oid_section;
23
0
    STACK_OF(CONF_VALUE) *sktmp;
24
0
    CONF_VALUE *oval;
25
0
26
0
    oid_section = CONF_imodule_get_value(md);
27
0
    if ((sktmp = NCONF_get_section(cnf, oid_section)) == NULL) {
28
0
        EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_ERROR_LOADING_SECTION);
29
0
        return 0;
30
0
    }
31
0
    for (i = 0; i < sk_CONF_VALUE_num(sktmp); i++) {
32
0
        oval = sk_CONF_VALUE_value(sktmp, i);
33
0
        if (strcmp(oval->name, "fips_mode") == 0) {
34
0
            int m;
35
0
            if (!X509V3_get_value_bool(oval, &m)) {
36
0
                EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_INVALID_FIPS_MODE);
37
0
                return 0;
38
0
            }
39
0
            if (m > 0) {
40
0
                EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_FIPS_MODE_NOT_SUPPORTED);
41
0
                return 0;
42
0
            }
43
0
        } else {
44
0
            EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_UNKNOWN_OPTION);
45
0
            ERR_add_error_data(4, "name=", oval->name,
46
0
                               ", value=", oval->value);
47
0
        }
48
0
49
0
    }
50
0
    return 1;
51
0
}
52
53
void EVP_add_alg_module(void)
54
0
{
55
0
    CONF_module_add("alg_section", alg_module_init, 0);
56
0
}