mbed TLS v2.14.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: Apache-2.0
9
*
10
* Licensed under the Apache License, Version 2.0 (the "License"); you may
11
* not use this file except in compliance with the License.
12
* You may obtain a copy of the License at
13
*
14
* http://www.apache.org/licenses/LICENSE-2.0
15
*
16
* Unless required by applicable law or agreed to in writing, software
17
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
18
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
* See the License for the specific language governing permissions and
20
* limitations under the License.
21
*
22
* This file is part of mbed TLS (https://tls.mbed.org)
23
*/
24
#ifndef MBEDTLS_ENTROPY_H
25
#define MBEDTLS_ENTROPY_H
26
27
#if !defined(MBEDTLS_CONFIG_FILE)
28
#include "
config.h
"
29
#else
30
#include MBEDTLS_CONFIG_FILE
31
#endif
32
33
#include <stddef.h>
34
35
#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256)
36
#include "
sha512.h
"
37
#define MBEDTLS_ENTROPY_SHA512_ACCUMULATOR
38
#else
39
#if defined(MBEDTLS_SHA256_C)
40
#define MBEDTLS_ENTROPY_SHA256_ACCUMULATOR
41
#include "
sha256.h
"
42
#endif
43
#endif
44
45
#if defined(MBEDTLS_THREADING_C)
46
#include "
threading.h
"
47
#endif
48
49
#if defined(MBEDTLS_HAVEGE_C)
50
#include "
havege.h
"
51
#endif
52
53
#define MBEDTLS_ERR_ENTROPY_SOURCE_FAILED -0x003C
54
#define MBEDTLS_ERR_ENTROPY_MAX_SOURCES -0x003E
55
#define MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED -0x0040
56
#define MBEDTLS_ERR_ENTROPY_NO_STRONG_SOURCE -0x003D
57
#define MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR -0x003F
67
#if !defined(MBEDTLS_ENTROPY_MAX_SOURCES)
68
#define MBEDTLS_ENTROPY_MAX_SOURCES 20
69
#endif
70
71
#if !defined(MBEDTLS_ENTROPY_MAX_GATHER)
72
#define MBEDTLS_ENTROPY_MAX_GATHER 128
73
#endif
74
75
/* \} name SECTION: Module settings */
76
77
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
78
#define MBEDTLS_ENTROPY_BLOCK_SIZE 64
79
#else
80
#define MBEDTLS_ENTROPY_BLOCK_SIZE 32
81
#endif
82
83
#define MBEDTLS_ENTROPY_MAX_SEED_SIZE 1024
84
#define MBEDTLS_ENTROPY_SOURCE_MANUAL MBEDTLS_ENTROPY_MAX_SOURCES
85
86
#define MBEDTLS_ENTROPY_SOURCE_STRONG 1
87
#define MBEDTLS_ENTROPY_SOURCE_WEAK 0
89
#ifdef __cplusplus
90
extern
"C"
{
91
#endif
92
104
typedef
int (*
mbedtls_entropy_f_source_ptr
)(
void
*data,
unsigned
char
*output,
size_t
len,
105
size_t
*olen);
106
110
typedef
struct
mbedtls_entropy_source_state
111
{
112
mbedtls_entropy_f_source_ptr
f_source
;
113
void
*
p_source
;
114
size_t
size
;
115
size_t
threshold
;
116
int
strong
;
117
}
118
mbedtls_entropy_source_state
;
119
123
typedef
struct
mbedtls_entropy_context
124
{
125
int
accumulator_started
;
126
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
127
mbedtls_sha512_context
accumulator
;
128
#else
129
mbedtls_sha256_context
accumulator
;
130
#endif
131
int
source_count
;
132
mbedtls_entropy_source_state
source
[
MBEDTLS_ENTROPY_MAX_SOURCES
];
133
#if defined(MBEDTLS_HAVEGE_C)
134
mbedtls_havege_state
havege_data
;
135
#endif
136
#if defined(MBEDTLS_THREADING_C)
137
mbedtls_threading_mutex_t
mutex
;
138
#endif
139
#if defined(MBEDTLS_ENTROPY_NV_SEED)
140
int
initial_entropy_run;
141
#endif
142
}
143
mbedtls_entropy_context
;
144
150
void
mbedtls_entropy_init
(
mbedtls_entropy_context
*ctx );
151
157
void
mbedtls_entropy_free
(
mbedtls_entropy_context
*ctx );
158
176
int
mbedtls_entropy_add_source
(
mbedtls_entropy_context
*ctx,
177
mbedtls_entropy_f_source_ptr
f_source,
void
*p_source,
178
size_t
threshold,
int
strong );
179
188
int
mbedtls_entropy_gather
(
mbedtls_entropy_context
*ctx );
189
201
int
mbedtls_entropy_func
(
void
*data,
unsigned
char
*output,
size_t
len );
202
213
int
mbedtls_entropy_update_manual
(
mbedtls_entropy_context
*ctx,
214
const
unsigned
char
*data,
size_t
len );
215
216
#if defined(MBEDTLS_ENTROPY_NV_SEED)
217
225
int
mbedtls_entropy_update_nv_seed(
mbedtls_entropy_context
*ctx );
226
#endif
/* MBEDTLS_ENTROPY_NV_SEED */
227
228
#if defined(MBEDTLS_FS_IO)
229
239
int
mbedtls_entropy_write_seed_file
(
mbedtls_entropy_context
*ctx,
const
char
*path );
240
253
int
mbedtls_entropy_update_seed_file
(
mbedtls_entropy_context
*ctx,
const
char
*path );
254
#endif
/* MBEDTLS_FS_IO */
255
256
#if defined(MBEDTLS_SELF_TEST)
257
265
int
mbedtls_entropy_self_test
(
int
verbose );
266
267
#if defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
268
281
int
mbedtls_entropy_source_self_test(
int
verbose );
282
#endif
/* MBEDTLS_ENTROPY_HARDWARE_ALT */
283
#endif
/* MBEDTLS_SELF_TEST */
284
285
#ifdef __cplusplus
286
}
287
#endif
288
289
#endif
/* entropy.h */
Generated on Mon Jun 27 2022 04:24:25 for mbed TLS v2.14.1 by
1.8.1.2