diff options
author | Martin Willi <martin@strongswan.org> | 2005-11-16 16:10:47 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2005-11-16 16:10:47 +0000 |
commit | 146e568fe70fc289f65cc0e8d399f9d86e13bf70 (patch) | |
tree | 94fd51fee25be8f2709158d6a85c7700b9be1d9c /Source/charon/utils | |
parent | a698ba19a4679367ed97e5c671c526e4b273aaff (diff) | |
download | strongswan-146e568fe70fc289f65cc0e8d399f9d86e13bf70.tar.bz2 strongswan-146e568fe70fc289f65cc0e8d399f9d86e13bf70.tar.xz |
- added methods which will allocate mem
Diffstat (limited to 'Source/charon/utils')
-rw-r--r-- | Source/charon/utils/randomizer.c | 33 | ||||
-rw-r--r-- | Source/charon/utils/randomizer.h | 27 |
2 files changed, 59 insertions, 1 deletions
diff --git a/Source/charon/utils/randomizer.c b/Source/charon/utils/randomizer.c index 90ad95bcb..9af7d5257 100644 --- a/Source/charon/utils/randomizer.c +++ b/Source/charon/utils/randomizer.c @@ -121,6 +121,20 @@ static status_t get_random_bytes(private_randomizer_t *this,size_t bytes, u_int8 { return (this->get_bytes_from_device(this, FALSE, bytes, buffer)); } +/** + * Implements randomizer_t's allocate_random_bytes function. + * See #randomizer_t.allocate_random_bytes for description. + */ +static status_t allocate_random_bytes(private_randomizer_t *this, size_t bytes, chunk_t *chunk) +{ + chunk->len = bytes; + chunk->ptr = allocator_alloc(bytes); + if (chunk->ptr == NULL) + { + return OUT_OF_RES; + } + return (this->get_bytes_from_device(this, FALSE, bytes, chunk->ptr)); +} /** * Implements randomizer_t's get_pseudo_random_bytes function. @@ -131,6 +145,23 @@ static status_t get_pseudo_random_bytes(private_randomizer_t *this,size_t bytes, return (this->get_bytes_from_device(this, TRUE, bytes, buffer)); } + +/** + * Implements randomizer_t's allocate_random_bytes function. + * See #randomizer_t.allocate_random_bytes for description. + */ +static status_t allocate_pseudo_random_bytes(private_randomizer_t *this, size_t bytes, chunk_t *chunk) +{ + chunk->len = bytes; + chunk->ptr = allocator_alloc(bytes); + if (chunk->ptr == NULL) + { + return OUT_OF_RES; + } + return (this->get_bytes_from_device(this, TRUE, bytes, chunk->ptr)); +} + + /** * Implements randomizer_t's destroy function. * See #randomizer_t.destroy for description. @@ -169,7 +200,9 @@ randomizer_t *randomizer_create_on_devices(char * random_dev_name,char * prandom /* public functions */ this->public.get_random_bytes = (status_t (*) (randomizer_t *,size_t, u_int8_t *)) get_random_bytes; + this->public.allocate_random_bytes = (status_t (*) (randomizer_t *,size_t, chunk_t *)) allocate_random_bytes; this->public.get_pseudo_random_bytes = (status_t (*) (randomizer_t *,size_t, u_int8_t *)) get_pseudo_random_bytes; + this->public.allocate_pseudo_random_bytes = (status_t (*) (randomizer_t *,size_t, chunk_t *)) allocate_pseudo_random_bytes; this->public.destroy = (status_t (*) (randomizer_t *))destroy; /* private functions */ diff --git a/Source/charon/utils/randomizer.h b/Source/charon/utils/randomizer.h index ae2bb539c..cf6870aa5 100644 --- a/Source/charon/utils/randomizer.h +++ b/Source/charon/utils/randomizer.h @@ -48,6 +48,19 @@ struct randomizer_s { status_t (*get_random_bytes) (randomizer_t *this,size_t bytes, u_int8_t *buffer); /** + * @brief Allocates space and writes in random bytes + * + * @param this calling randomizer_t object + * @param bytes Number of bytes to allocate + * @param[out] chunk chunk which will hold the allocated random bytes + * @return + * - SUCCESS + * - OUT_OF_RES + * - FAILED + */ + status_t (*allocate_random_bytes) (randomizer_t *this, size_t bytes, chunk_t *chunk); + + /** * @brief Reads a specific number of bytes from pseudo random device. * * @param this calling randomizer_t object @@ -59,7 +72,19 @@ struct randomizer_s { * - FAILED */ status_t (*get_pseudo_random_bytes) (randomizer_t *this,size_t bytes, u_int8_t *buffer); - + + /** + * @brief Allocates space and writes in pseudo random bytes + * + * @param this calling randomizer_t object + * @param bytes Number of bytes to allocate + * @param[out] chunk chunk which will hold the allocated random bytes + * @return + * - SUCCESS + * - OUT_OF_RES + * - FAILED + */ + status_t (*allocate_pseudo_random_bytes) (randomizer_t *this, size_t bytes, chunk_t *chunk); /** * @brief Destroys a randomizer_t object. |