aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/utils/randomizer.c
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2005-11-16 16:10:47 +0000
committerMartin Willi <martin@strongswan.org>2005-11-16 16:10:47 +0000
commit146e568fe70fc289f65cc0e8d399f9d86e13bf70 (patch)
tree94fd51fee25be8f2709158d6a85c7700b9be1d9c /Source/charon/utils/randomizer.c
parenta698ba19a4679367ed97e5c671c526e4b273aaff (diff)
downloadstrongswan-146e568fe70fc289f65cc0e8d399f9d86e13bf70.tar.bz2
strongswan-146e568fe70fc289f65cc0e8d399f9d86e13bf70.tar.xz
- added methods which will allocate mem
Diffstat (limited to 'Source/charon/utils/randomizer.c')
-rw-r--r--Source/charon/utils/randomizer.c33
1 files changed, 33 insertions, 0 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 */