|
PolarSSL v1.3.9
|
Entropy accumulator implementation. More...

Go to the source code of this file.
Data Structures | |
| struct | source_state |
| Entropy source state. More... | |
| struct | entropy_context |
| Entropy context structure. More... | |
Macros | |
| #define | POLARSSL_ENTROPY_SHA512_ACCUMULATOR |
| #define | POLARSSL_ERR_ENTROPY_SOURCE_FAILED -0x003C |
| Critical entropy source failure. | |
| #define | POLARSSL_ERR_ENTROPY_MAX_SOURCES -0x003E |
| No more sources can be added. | |
| #define | POLARSSL_ERR_ENTROPY_NO_SOURCES_DEFINED -0x0040 |
| No sources have been added to poll. | |
| #define | POLARSSL_ERR_ENTROPY_FILE_IO_ERROR -0x0058 |
| Read/write error in file. | |
SECTION: Module settings | |
The configuration options you can set for this module are in this section. Either change them in config.h or define them on the compiler command line. | |
| #define | ENTROPY_MAX_SOURCES 20 |
| Maximum number of sources supported. | |
| #define | ENTROPY_MAX_GATHER 128 |
| Maximum amount requested from entropy sources. | |
| #define | ENTROPY_BLOCK_SIZE 64 |
| Block size of entropy accumulator (SHA-512) | |
| #define | ENTROPY_MAX_SEED_SIZE 1024 |
| Maximum size of seed we read from seed file. | |
| #define | ENTROPY_SOURCE_MANUAL ENTROPY_MAX_SOURCES |
| typedef int(* | f_source_ptr) (void *data, unsigned char *output, size_t len, size_t *olen) |
| Entropy poll callback pointer. | |
| void | entropy_init (entropy_context *ctx) |
| Initialize the context. | |
| void | entropy_free (entropy_context *ctx) |
| Free the data in the context. | |
| int | entropy_add_source (entropy_context *ctx, f_source_ptr f_source, void *p_source, size_t threshold) |
| Adds an entropy source to poll (Thread-safe if POLARSSL_THREADING_C is enabled) | |
| int | entropy_gather (entropy_context *ctx) |
| Trigger an extra gather poll for the accumulator (Thread-safe if POLARSSL_THREADING_C is enabled) | |
| int | entropy_func (void *data, unsigned char *output, size_t len) |
| Retrieve entropy from the accumulator (Maximum length: ENTROPY_BLOCK_SIZE) (Thread-safe if POLARSSL_THREADING_C is enabled) | |
| int | entropy_update_manual (entropy_context *ctx, const unsigned char *data, size_t len) |
| Add data to the accumulator manually (Thread-safe if POLARSSL_THREADING_C is enabled) | |
| int | entropy_write_seed_file (entropy_context *ctx, const char *path) |
| Write a seed file. | |
| int | entropy_update_seed_file (entropy_context *ctx, const char *path) |
| Read and update a seed file. | |
| int | entropy_self_test (int verbose) |
| Checkup routine. | |
Entropy accumulator implementation.
Copyright (C) 2006-2014, Brainspark B.V.
This file is part of PolarSSL (http://www.polarssl.org) Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
All rights reserved.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Definition in file entropy.h.
| #define ENTROPY_BLOCK_SIZE 64 |
| #define ENTROPY_MAX_GATHER 128 |
| #define ENTROPY_MAX_SEED_SIZE 1024 |
| #define ENTROPY_MAX_SOURCES 20 |
| #define ENTROPY_SOURCE_MANUAL ENTROPY_MAX_SOURCES |
| #define POLARSSL_ERR_ENTROPY_FILE_IO_ERROR -0x0058 |
| #define POLARSSL_ERR_ENTROPY_MAX_SOURCES -0x003E |
| #define POLARSSL_ERR_ENTROPY_NO_SOURCES_DEFINED -0x0040 |
| #define POLARSSL_ERR_ENTROPY_SOURCE_FAILED -0x003C |
| typedef int(* f_source_ptr) (void *data, unsigned char *output, size_t len, size_t *olen) |
Entropy poll callback pointer.
| data | Callback-specific data pointer |
| output | Data to fill |
| len | Maximum size to provide |
| olen | The actual amount of bytes put into the buffer (Can be 0) |
| int entropy_add_source | ( | entropy_context * | ctx, |
| f_source_ptr | f_source, | ||
| void * | p_source, | ||
| size_t | threshold ) |
Adds an entropy source to poll (Thread-safe if POLARSSL_THREADING_C is enabled)
| ctx | Entropy context |
| f_source | Entropy function |
| p_source | Function data |
| threshold | Minimum required from source before entropy is released ( with entropy_func() ) |
| void entropy_free | ( | entropy_context * | ctx | ) |
Free the data in the context.
| ctx | Entropy context to free |
| int entropy_func | ( | void * | data, |
| unsigned char * | output, | ||
| size_t | len ) |
Retrieve entropy from the accumulator (Maximum length: ENTROPY_BLOCK_SIZE) (Thread-safe if POLARSSL_THREADING_C is enabled)
| data | Entropy context |
| output | Buffer to fill |
| len | Number of bytes desired, must be at most ENTROPY_BLOCK_SIZE |
| int entropy_gather | ( | entropy_context * | ctx | ) |
Trigger an extra gather poll for the accumulator (Thread-safe if POLARSSL_THREADING_C is enabled)
| ctx | Entropy context |
| void entropy_init | ( | entropy_context * | ctx | ) |
Initialize the context.
| ctx | Entropy context to initialize |
| int entropy_self_test | ( | int | verbose | ) |
Checkup routine.
| int entropy_update_manual | ( | entropy_context * | ctx, |
| const unsigned char * | data, | ||
| size_t | len ) |
Add data to the accumulator manually (Thread-safe if POLARSSL_THREADING_C is enabled)
| ctx | Entropy context |
| data | Data to add |
| len | Length of data |
| int entropy_update_seed_file | ( | entropy_context * | ctx, |
| const char * | path ) |
Read and update a seed file.
Seed is added to this instance. No more than ENTROPY_MAX_SEED_SIZE bytes are read from the seed file. The rest is ignored.
| ctx | Entropy context |
| path | Name of the file |
| int entropy_write_seed_file | ( | entropy_context * | ctx, |
| const char * | path ) |
Write a seed file.
| ctx | Entropy context |
| path | Name of the file |