%PDF- %PDF-
| Direktori : /data/old/usr/lib/golang/src/crypto/internal/boring/ |
| Current File : //data/old/usr/lib/golang/src/crypto/internal/boring/openssl_stub_rand.c |
// +build linux
// +build !android
// +build !no_openssl
// +build !cmd_go_bootstrap
// +build !msan
// +build !static
#include "goboringcrypto.h"
#include <openssl/rand.h>
static RAND_METHOD fake_rand;
static const RAND_METHOD *old_rand;
int _goboringcrypto_stub_openssl_rand(void)
{
/* save old rand method */
if ((old_rand = _goboringcrypto_RAND_get_rand_method()) == NULL)
return 0;
fake_rand.seed = old_rand->seed;
fake_rand.cleanup = old_rand->cleanup;
fake_rand.add = old_rand->add;
fake_rand.status = old_rand->status;
/* use own random function */
fake_rand.bytes = fbytes;
fake_rand.pseudorand = old_rand->bytes;
/* set new RAND_METHOD */
if (!_goboringcrypto_RAND_set_rand_method(&fake_rand))
return 0;
return 1;
}
int _goboringcrypto_restore_openssl_rand(void)
{
if (!_goboringcrypto_RAND_set_rand_method(old_rand))
return 0;
else
return 1;
}
int fbytes(unsigned char *buf, int num) {
// return old_rand->bytes(buf, num);
int i;
for (i = 0; i < num; i++) {
buf[i] = 1;
}
return 1;
}