OpenCoverage

eng_rdrand.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/engine/eng_rdrand.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 2011-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 <openssl/opensslconf.h>-
11-
12#include <stdio.h>-
13#include <string.h>-
14#include "internal/engine.h"-
15#include <openssl/rand.h>-
16#include <openssl/err.h>-
17#include <openssl/crypto.h>-
18-
19#if (defined(__i386) || defined(__i386__) || defined(_M_IX86) || \-
20 defined(__x86_64) || defined(__x86_64__) || \-
21 defined(_M_AMD64) || defined (_M_X64)) && defined(OPENSSL_CPUID_OBJ)-
22-
23size_t OPENSSL_ia32_rdrand_bytes(unsigned char *buf, size_t len);-
24-
25static int get_random_bytes(unsigned char *buf, int num)-
26{-
27 if (num < 0) {
num < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
28 return 0;
never executed: return 0;
0
29 }-
30-
31 return (size_t)num == OPENSSL_ia32_rdrand_bytes(buf, (size_t)num);
never executed: return (size_t)num == OPENSSL_ia32_rdrand_bytes(buf, (size_t)num);
0
32}-
33-
34static int random_status(void)-
35{-
36 return 1;
never executed: return 1;
0
37}-
38-
39static RAND_METHOD rdrand_meth = {-
40 NULL, /* seed */-
41 get_random_bytes,-
42 NULL, /* cleanup */-
43 NULL, /* add */-
44 get_random_bytes,-
45 random_status,-
46};-
47-
48static int rdrand_init(ENGINE *e)-
49{-
50 return 1;
never executed: return 1;
0
51}-
52-
53static const char *engine_e_rdrand_id = "rdrand";-
54static const char *engine_e_rdrand_name = "Intel RDRAND engine";-
55-
56static int bind_helper(ENGINE *e)-
57{-
58 if (!ENGINE_set_id(e, engine_e_rdrand_id) ||
!ENGINE_set_id...e_e_rdrand_id)Description
TRUEnever evaluated
FALSEnever evaluated
0
59 !ENGINE_set_name(e, engine_e_rdrand_name) ||
!ENGINE_set_na...e_rdrand_name)Description
TRUEnever evaluated
FALSEnever evaluated
0
60 !ENGINE_set_flags(e, ENGINE_FLAGS_NO_REGISTER_ALL) ||
!ENGINE_set_fl..., (int)0x0008)Description
TRUEnever evaluated
FALSEnever evaluated
0
61 !ENGINE_set_init_function(e, rdrand_init) ||
!ENGINE_set_in..., rdrand_init)Description
TRUEnever evaluated
FALSEnever evaluated
0
62 !ENGINE_set_RAND(e, &rdrand_meth))
!ENGINE_set_RA... &rdrand_meth)Description
TRUEnever evaluated
FALSEnever evaluated
0
63 return 0;
never executed: return 0;
0
64-
65 return 1;
never executed: return 1;
0
66}-
67-
68static ENGINE *ENGINE_rdrand(void)-
69{-
70 ENGINE *ret = ENGINE_new();-
71 if (ret == NULL)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
72 return NULL;
never executed: return ((void *)0) ;
0
73 if (!bind_helper(ret)) {
!bind_helper(ret)Description
TRUEnever evaluated
FALSEnever evaluated
0
74 ENGINE_free(ret);-
75 return NULL;
never executed: return ((void *)0) ;
0
76 }-
77 return ret;
never executed: return ret;
0
78}-
79-
80void engine_load_rdrand_int(void)-
81{-
82 extern unsigned int OPENSSL_ia32cap_P[];-
83-
84 if (OPENSSL_ia32cap_P[1] & (1 << (62 - 32))) {
OPENSSL_ia32ca... << (62 - 32))Description
TRUEnever evaluated
FALSEevaluated 1959 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1959
85 ENGINE *toadd = ENGINE_rdrand();-
86 if (!toadd)
!toaddDescription
TRUEnever evaluated
FALSEnever evaluated
0
87 return;
never executed: return;
0
88 ENGINE_add(toadd);-
89 ENGINE_free(toadd);-
90 ERR_clear_error();-
91 }
never executed: end of block
0
92}
executed 1959 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1959
93#else-
94void engine_load_rdrand_int(void)-
95{-
96}-
97#endif-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2