os/ossrv/ssl/libcrypto/src/crypto/rand/rand_symbian.c
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
/*
sl@0
     2
Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
sl@0
     3
sl@0
     4
Redistribution and use in source and binary forms, with or without 
sl@0
     5
modification, are permitted provided that the following conditions are met:
sl@0
     6
sl@0
     7
* Redistributions of source code must retain the above copyright notice, this 
sl@0
     8
  list of conditions and the following disclaimer.
sl@0
     9
* Redistributions in binary form must reproduce the above copyright notice, 
sl@0
    10
  this list of conditions and the following disclaimer in the documentation 
sl@0
    11
  and/or other materials provided with the distribution.
sl@0
    12
* Neither the name of Nokia Corporation nor the names of its contributors 
sl@0
    13
  may be used to endorse or promote products derived from this software 
sl@0
    14
  without specific prior written permission.
sl@0
    15
sl@0
    16
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
sl@0
    17
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
sl@0
    18
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
sl@0
    19
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
sl@0
    20
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
sl@0
    21
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
sl@0
    22
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
sl@0
    23
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
sl@0
    24
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
sl@0
    25
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
sl@0
    26
sl@0
    27
Description:
sl@0
    28
*/
sl@0
    29
sl@0
    30
#include <stdio.h>
sl@0
    31
sl@0
    32
#define USE_SOCKETS
sl@0
    33
#include "e_os.h"
sl@0
    34
#include "cryptlib.h"
sl@0
    35
#include <openssl/rand.h>
sl@0
    36
#include "rand_lcl.h"
sl@0
    37
sl@0
    38
#include <sys/types.h>
sl@0
    39
#include <sys/time.h>
sl@0
    40
#include <sys/stat.h>
sl@0
    41
#include <fcntl.h>
sl@0
    42
#include <unistd.h>
sl@0
    43
#include <time.h>
sl@0
    44
sl@0
    45
sl@0
    46
EXPORT_C int RAND_poll(void)
sl@0
    47
{
sl@0
    48
	u_int32_t rnd = 0, i;
sl@0
    49
	unsigned char buf[ENTROPY_NEEDED];
sl@0
    50
sl@0
    51
	for (i = 0; i < sizeof(buf); i++) {
sl@0
    52
		if (i % 4 == 0)
sl@0
    53
			rnd = rand();
sl@0
    54
		buf[i] = rnd;
sl@0
    55
		rnd >>= 8;
sl@0
    56
	}
sl@0
    57
	RAND_add(buf, sizeof(buf), ENTROPY_NEEDED);
sl@0
    58
	memset(buf, 0, sizeof(buf));
sl@0
    59
sl@0
    60
	return 1;
sl@0
    61
}