mirror of
https://github.com/henrydcase/pqc.git
synced 2024-11-24 00:11:27 +00:00
65 lines
1.8 KiB
C
65 lines
1.8 KiB
C
#pragma once
|
|
|
|
/****** From this point on, the code was supplied by NIST ****************/
|
|
// Created by Bassham, Lawrence E (Fed) on 8/29/17.
|
|
// Copyright © 2017 Bassham, Lawrence E (Fed). All rights reserved.
|
|
//
|
|
/****** from NIST ****************/
|
|
|
|
#include <stdio.h>
|
|
|
|
#define RNG_SUCCESS 0
|
|
#define RNG_BAD_MAXLEN -1
|
|
#define RNG_BAD_OUTBUF -2
|
|
#define RNG_BAD_REQ_LEN -3
|
|
|
|
typedef struct {
|
|
unsigned char buffer[16];
|
|
int buffer_pos;
|
|
unsigned long length_remaining;
|
|
unsigned char key[32];
|
|
unsigned char ctr[16];
|
|
} AES_XOF_struct;
|
|
|
|
typedef struct {
|
|
unsigned char Key[32];
|
|
unsigned char V[16];
|
|
int reseed_counter;
|
|
} AES256_CTR_DRBG_struct;
|
|
|
|
|
|
void
|
|
AES256_CTR_DRBG_Update(unsigned char *provided_data,
|
|
unsigned char *Key,
|
|
unsigned char *V);
|
|
|
|
int
|
|
seedexpander_init(AES_XOF_struct *ctx,
|
|
unsigned char *seed,
|
|
unsigned char *diversifier,
|
|
unsigned long maxlen);
|
|
|
|
int
|
|
seedexpander(AES_XOF_struct *ctx, unsigned char *x, unsigned long xlen);
|
|
|
|
void
|
|
randombytes_init(unsigned char *entropy_input,
|
|
unsigned char *personalization_string,
|
|
int security_strength);
|
|
|
|
int
|
|
randombytes(unsigned char *x, unsigned long long xlen);
|
|
|
|
/****** End of NIST supplied code ****************/
|
|
|
|
void initialize_pseudo_random_generator_seed(int ac, char *av[]);
|
|
|
|
void deterministic_random_byte_generator(unsigned char *const output,
|
|
const unsigned long long output_len,
|
|
const unsigned char *const seed,
|
|
const unsigned long long seed_length);
|
|
|
|
void seedexpander_from_trng(AES_XOF_struct *ctx,
|
|
const unsigned char *trng_entropy
|
|
/* TRNG_BYTE_LENGTH wide buffer */);
|