From 6862128151fb78f63685a8da5575783c426d64a7 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Wed, 5 Apr 2006 12:10:50 +0000 Subject: ../svn-commit.tmp --- Source/charon/utils/randomizer.c | 185 --------------------------------------- 1 file changed, 185 deletions(-) delete mode 100644 Source/charon/utils/randomizer.c (limited to 'Source/charon/utils/randomizer.c') diff --git a/Source/charon/utils/randomizer.c b/Source/charon/utils/randomizer.c deleted file mode 100644 index bab2c071e..000000000 --- a/Source/charon/utils/randomizer.c +++ /dev/null @@ -1,185 +0,0 @@ -/** - * @file randomizer.c - * - * @brief Implementation of randomizer_t. - * - */ - -/* - * Copyright (C) 2005 Jan Hutter, Martin Willi - * Hochschule fuer Technik Rapperswil - * - * 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. See . - * - * 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. - */ - -#include -#include -#include -#include -#include - -#include "randomizer.h" - -#include -#include - -typedef struct private_randomizer_t private_randomizer_t; - -/** - * Private data of an randomizer_t object. - */ -struct private_randomizer_t { - - /** - * Public randomizer_t interface. - */ - randomizer_t public; - - /** - * @brief Reads a specific number of bytes from random or pseudo random device. - * - * @param this calling object - * @param pseudo_random TRUE, if from pseudo random bytes should be read, - * FALSE for true random bytes - * @param bytes number of bytes to read - * @param[out] buffer pointer to buffer where to write the data in. - * Size of buffer has to be at least bytes. - */ - void (*get_bytes_from_device) (private_randomizer_t *this,bool pseudo_random, size_t bytes, u_int8_t *buffer); - - /** - * Random device name. - */ - char *random_dev_name; - - /** - * Pseudo random device name. - */ - char *pseudo_random_dev_name; -}; - - -/** - * Implementation of private_randomizer_t.get_bytes_from_device. - */ -static void get_bytes_from_device(private_randomizer_t *this,bool pseudo_random, size_t bytes, u_int8_t *buffer) -{ - /* number of bytes already done */ - size_t ndone; - /* device file descriptor */ - int device; - size_t got; - char * device_name; - - device_name = (pseudo_random) ? this->pseudo_random_dev_name : this->random_dev_name; - - // open device - device = open(device_name, 0); - if (device < 0) { - charon->kill(charon,"Random device could not be opened"); - } - ndone = 0; - - /* read until nbytes are read */ - while (ndone < bytes) - { - got = read(device, buffer + ndone, bytes - ndone); - if (got < 0) { - charon->kill(charon,"Read from random device failed"); - } - if (got == 0) { - charon->kill(charon,"Read from random device failed"); - } - ndone += got; - } - /* close device */ - close(device); -} - -/** - * Implementation of randomizer_t.get_random_bytes. - */ -static void get_random_bytes(private_randomizer_t *this,size_t bytes, u_int8_t *buffer) -{ - return (this->get_bytes_from_device(this, FALSE, bytes, buffer)); -} - -/** - * Implementation of randomizer_t.allocate_random_bytes. - */ -static void allocate_random_bytes(private_randomizer_t *this, size_t bytes, chunk_t *chunk) -{ - chunk->len = bytes; - chunk->ptr = allocator_alloc(bytes); - return (this->get_bytes_from_device(this, FALSE, bytes, chunk->ptr)); -} - -/** - * Implementation of randomizer_t.get_pseudo_random_bytes. - */ -static void get_pseudo_random_bytes(private_randomizer_t *this,size_t bytes, u_int8_t *buffer) -{ - return (this->get_bytes_from_device(this, TRUE, bytes, buffer)); -} - -/** - * Implementation of randomizer_t.allocate_pseudo_random_bytes. - */ -static void allocate_pseudo_random_bytes(private_randomizer_t *this, size_t bytes, chunk_t *chunk) -{ - chunk->len = bytes; - chunk->ptr = allocator_alloc(bytes); - return (this->get_bytes_from_device(this, TRUE, bytes, chunk->ptr)); -} - -/** - * Implementation of randomizer_t.destroy. - */ -static void destroy(private_randomizer_t *this) -{ - allocator_free(this->random_dev_name); - allocator_free(this->pseudo_random_dev_name); - allocator_free(this); -} - -/* - * Described in header. - */ -randomizer_t *randomizer_create(void) -{ - return randomizer_create_on_devices(DEFAULT_RANDOM_DEVICE,DEFAULT_PSEUDO_RANDOM_DEVICE); -} - -/* - * Described in header. - */ -randomizer_t *randomizer_create_on_devices(char * random_dev_name,char * prandom_dev_name) -{ - private_randomizer_t *this = allocator_alloc_thing(private_randomizer_t); - - /* public functions */ - this->public.get_random_bytes = (void (*) (randomizer_t *,size_t, u_int8_t *)) get_random_bytes; - this->public.allocate_random_bytes = (void (*) (randomizer_t *,size_t, chunk_t *)) allocate_random_bytes; - this->public.get_pseudo_random_bytes = (void (*) (randomizer_t *,size_t, u_int8_t *)) get_pseudo_random_bytes; - this->public.allocate_pseudo_random_bytes = (void (*) (randomizer_t *,size_t, chunk_t *)) allocate_pseudo_random_bytes; - this->public.destroy = (void (*) (randomizer_t *))destroy; - - /* private functions */ - this->get_bytes_from_device = get_bytes_from_device; - - /* private fields */ - this->random_dev_name = allocator_alloc(strlen(random_dev_name) + 1); - strcpy(this->random_dev_name,random_dev_name); - this->pseudo_random_dev_name = allocator_alloc(strlen(prandom_dev_name) + 1); - strcpy(this->pseudo_random_dev_name,prandom_dev_name); - - return &(this->public); -} -- cgit v1.2.3