mbed TLS v2.16.1
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
include
mbedtls
entropy.h
Go to the documentation of this file.
1
6
/*
7
* Copyright (C) 2006-2016, ARM Limited, All Rights Reserved
8
* SPDX-License-Identifier: GPL-2.0
9
*
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the GNU General Public License along
21
* with this program; if not, write to the Free Software Foundation, Inc.,
22
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23
*
24
* This file is part of mbed TLS (https://tls.mbed.org)
25
*/
26
#ifndef MBEDTLS_ENTROPY_H
27
#define MBEDTLS_ENTROPY_H
28
29
#if !defined(MBEDTLS_CONFIG_FILE)
30
#include "
config.h
"
31
#else
32
#include MBEDTLS_CONFIG_FILE
33
#endif
34
35
#include <stddef.h>
36
37
#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256)
38
#include "
sha512.h
"
39
#define MBEDTLS_ENTROPY_SHA512_ACCUMULATOR
40
#else
41
#if defined(MBEDTLS_SHA256_C)
42
#define MBEDTLS_ENTROPY_SHA256_ACCUMULATOR
43
#include "
sha256.h
"
44
#endif
45
#endif
46
47
#if defined(MBEDTLS_THREADING_C)
48
#include "
threading.h
"
49
#endif
50
51
#if defined(MBEDTLS_HAVEGE_C)
52
#include "
havege.h
"
53
#endif
54
55
#define MBEDTLS_ERR_ENTROPY_SOURCE_FAILED -0x003C
56
#define MBEDTLS_ERR_ENTROPY_MAX_SOURCES -0x003E
57
#define MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED -0x0040
58
#define MBEDTLS_ERR_ENTROPY_NO_STRONG_SOURCE -0x003D
59
#define MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR -0x003F
69
#if !defined(MBEDTLS_ENTROPY_MAX_SOURCES)
70
#define MBEDTLS_ENTROPY_MAX_SOURCES 20
71
#endif
72
73
#if !defined(MBEDTLS_ENTROPY_MAX_GATHER)
74
#define MBEDTLS_ENTROPY_MAX_GATHER 128
75
#endif
76
77
/* \} name SECTION: Module settings */
78
79
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
80
#define MBEDTLS_ENTROPY_BLOCK_SIZE 64
81
#else
82
#define MBEDTLS_ENTROPY_BLOCK_SIZE 32
83
#endif
84
85
#define MBEDTLS_ENTROPY_MAX_SEED_SIZE 1024
86
#define MBEDTLS_ENTROPY_SOURCE_MANUAL MBEDTLS_ENTROPY_MAX_SOURCES
87
88
#define MBEDTLS_ENTROPY_SOURCE_STRONG 1
89
#define MBEDTLS_ENTROPY_SOURCE_WEAK 0
91
#ifdef __cplusplus
92
extern
"C"
{
93
#endif
94
106
typedef
int (*
mbedtls_entropy_f_source_ptr
)(
void
*data,
unsigned
char
*output,
size_t
len,
107
size_t
*olen);
108
112
typedef
struct
mbedtls_entropy_source_state
113
{
114
mbedtls_entropy_f_source_ptr
f_source
;
115
void
*
p_source
;
116
size_t
size
;
117
size_t
threshold
;
118
int
strong
;
119
}
120
mbedtls_entropy_source_state
;
121
125
typedef
struct
mbedtls_entropy_context
126
{
127
int
accumulator_started
;
128
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
129
mbedtls_sha512_context
accumulator
;
130
#else
131
mbedtls_sha256_context
accumulator
;
132
#endif
133
int
source_count
;
134
mbedtls_entropy_source_state
source
[
MBEDTLS_ENTROPY_MAX_SOURCES
];
135
#if defined(MBEDTLS_HAVEGE_C)
136
mbedtls_havege_state
havege_data;
137
#endif
138
#if defined(MBEDTLS_THREADING_C)
139
mbedtls_threading_mutex_t mutex;
140
#endif
141
#if defined(MBEDTLS_ENTROPY_NV_SEED)
142
int
initial_entropy_run;
143
#endif
144
}
145
mbedtls_entropy_context
;
146
152
void
mbedtls_entropy_init
(
mbedtls_entropy_context
*ctx );
153
159
void
mbedtls_entropy_free
(
mbedtls_entropy_context
*ctx );
160
178
int
mbedtls_entropy_add_source
(
mbedtls_entropy_context
*ctx,
179
mbedtls_entropy_f_source_ptr
f_source,
void
*p_source,
180
size_t
threshold,
int
strong );
181
190
int
mbedtls_entropy_gather
(
mbedtls_entropy_context
*ctx );
191
203
int
mbedtls_entropy_func
(
void
*data,
unsigned
char
*output,
size_t
len );
204
215
int
mbedtls_entropy_update_manual
(
mbedtls_entropy_context
*ctx,
216
const
unsigned
char
*data,
size_t
len );
217
218
#if defined(MBEDTLS_ENTROPY_NV_SEED)
219
227
int
mbedtls_entropy_update_nv_seed(
mbedtls_entropy_context
*ctx );
228
#endif
/* MBEDTLS_ENTROPY_NV_SEED */
229
230
#if defined(MBEDTLS_FS_IO)
231
241
int
mbedtls_entropy_write_seed_file
(
mbedtls_entropy_context
*ctx,
const
char
*path );
242
255
int
mbedtls_entropy_update_seed_file
(
mbedtls_entropy_context
*ctx,
const
char
*path );
256
#endif
/* MBEDTLS_FS_IO */
257
258
#if defined(MBEDTLS_SELF_TEST)
259
267
int
mbedtls_entropy_self_test
(
int
verbose );
268
269
#if defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
270
283
int
mbedtls_entropy_source_self_test(
int
verbose );
284
#endif
/* MBEDTLS_ENTROPY_HARDWARE_ALT */
285
#endif
/* MBEDTLS_SELF_TEST */
286
287
#ifdef __cplusplus
288
}
289
#endif
290
291
#endif
/* entropy.h */
Generated on Tue Aug 13 2019 20:47:27 for mbed TLS v2.16.1 by
1.8.3.1