Changeset View
Changeset View
Standalone View
Standalone View
b/src/gcrypt.h.in
Context not available. | |||||
GCRYCTL_INACTIVATE_FIPS_FLAG = 71, | GCRYCTL_INACTIVATE_FIPS_FLAG = 71, | ||||
GCRYCTL_REACTIVATE_FIPS_FLAG = 72, | GCRYCTL_REACTIVATE_FIPS_FLAG = 72, | ||||
GCRYCTL_SET_SBOX = 73, | GCRYCTL_SET_SBOX = 73, | ||||
GCRYCTL_DRBG_REINIT = 74 | GCRYCTL_DRBG_REINIT = 74, | ||||
/* Note: 75 is used internally */ | |||||
}; | }; | ||||
/* Perform various operations defined by CMD. */ | /* Perform various operations defined by CMD. */ | ||||
Context not available. | |||||
/* Return true if Libgcrypt is in FIPS mode. */ | /* Return true if Libgcrypt is in FIPS mode. */ | ||||
#define gcry_fips_mode_active() !!gcry_control (GCRYCTL_FIPS_MODE_P, 0) | #define gcry_fips_mode_active() !!gcry_control (GCRYCTL_FIPS_MODE_P, 0) | ||||
/* DRBG input data structure for DRBG generate with additional information | |||||
* string */ | |||||
struct gcry_drbg_gen { | |||||
unsigned char *outbuf; /* output buffer for random numbers */ | |||||
unsigned int outlen; /* size of output buffer */ | |||||
struct gcry_drbg_string *addtl; /* input buffer for | |||||
* additional information string */ | |||||
}; | |||||
/* | |||||
* Concatenation Helper and string operation helper | |||||
* | |||||
* SP800-90A requires the concatenation of different data. To avoid copying | |||||
* buffers around or allocate additional memory, the following data structure | |||||
* is used to point to the original memory with its size. In addition, it | |||||
* is used to build a linked list. The linked list defines the concatenation | |||||
* of individual buffers. The order of memory block referenced in that | |||||
* linked list determines the order of concatenation. | |||||
*/ | |||||
/* DRBG string definition */ | |||||
struct gcry_drbg_string { | |||||
const unsigned char *buf; | |||||
size_t len; | |||||
struct gcry_drbg_string *next; | |||||
}; | |||||
static inline void gcry_drbg_string_fill(struct gcry_drbg_string *string, | |||||
const unsigned char *buf, size_t len) | |||||
{ | |||||
string->buf = buf; | |||||
string->len = len; | |||||
string->next = NULL; | |||||
} | |||||
/* this is a wrapper function for users of libgcrypt */ | |||||
static inline void gcry_randomize_drbg(void *outbuf, size_t outlen, | |||||
enum gcry_random_level level, | |||||
struct gcry_drbg_string *addtl) | |||||
{ | |||||
struct gcry_drbg_gen genbuf; | |||||
genbuf.outbuf = (unsigned char *)outbuf; | |||||
genbuf.outlen = outlen; | |||||
genbuf.addtl = addtl; | |||||
gcry_randomize(&genbuf, 0, level); | |||||
} | |||||
/* | |||||
* DRBG flags bitmasks | |||||
* | |||||
* 31 (B) 28 19 (A) 0 | |||||
* +-+-+-+--------+---+-----------+-----+ | |||||
* |~|~|u|~~~~~~~~| 3 | 2 | 1 | | |||||
* +-+-+-+--------+- -+-----------+-----+ | |||||
* ctl flg| |drbg use selection flags | |||||
* | |||||
*/ | |||||
/* internal state control flags (B) */ | |||||
#define DRBG_PREDICTION_RESIST ((u_int32_t)1<<28) | |||||
/* CTR type modifiers (A.1)*/ | |||||
#define DRBG_CTRAES ((u_int32_t)1<<0) | |||||
#define DRBG_CTRSERPENT ((u_int32_t)1<<1) | |||||
#define DRBG_CTRTWOFISH ((u_int32_t)1<<2) | |||||
#define DRBG_CTR_MASK (DRBG_CTRAES | DRBG_CTRSERPENT | DRBG_CTRTWOFISH) | |||||
/* HASH type modifiers (A.2)*/ | |||||
#define DRBG_HASHSHA1 ((u_int32_t)1<<4) | |||||
#define DRBG_HASHSHA224 ((u_int32_t)1<<5) | |||||
#define DRBG_HASHSHA256 ((u_int32_t)1<<6) | |||||
#define DRBG_HASHSHA384 ((u_int32_t)1<<7) | |||||
#define DRBG_HASHSHA512 ((u_int32_t)1<<8) | |||||
#define DRBG_HASH_MASK (DRBG_HASHSHA1 | DRBG_HASHSHA224 | \ | |||||
DRBG_HASHSHA256 | DRBG_HASHSHA384 | \ | |||||
DRBG_HASHSHA512) | |||||
/* type modifiers (A.3)*/ | |||||
#define DRBG_HMAC ((u_int32_t)1<<12) | |||||
#define DRBG_SYM128 ((u_int32_t)1<<13) | |||||
#define DRBG_SYM192 ((u_int32_t)1<<14) | |||||
#define DRBG_SYM256 ((u_int32_t)1<<15) | |||||
#define DRBG_TYPE_MASK (DRBG_HMAC | DRBG_SYM128 | DRBG_SYM192 | \ | |||||
DRBG_SYM256) | |||||
#define DRBG_CIPHER_MASK (DRBG_CTR_MASK | DRBG_HASH_MASK | DRBG_TYPE_MASK) | |||||
#define DRBG_PR_CTRAES128 (DRBG_PREDICTION_RESIST | DRBG_CTRAES | DRBG_SYM128) | |||||
#define DRBG_PR_CTRAES192 (DRBG_PREDICTION_RESIST | DRBG_CTRAES | DRBG_SYM192) | |||||
#define DRBG_PR_CTRAES256 (DRBG_PREDICTION_RESIST | DRBG_CTRAES | DRBG_SYM256) | |||||
#define DRBG_NOPR_CTRAES128 (DRBG_CTRAES | DRBG_SYM128) | |||||
#define DRBG_NOPR_CTRAES192 (DRBG_CTRAES | DRBG_SYM192) | |||||
#define DRBG_NOPR_CTRAES256 (DRBG_CTRAES | DRBG_SYM256) | |||||
#define DRBG_PR_HASHSHA1 (DRBG_PREDICTION_RESIST | DRBG_HASHSHA1) | |||||
#define DRBG_PR_HASHSHA256 (DRBG_PREDICTION_RESIST | DRBG_HASHSHA256) | |||||
#define DRBG_PR_HASHSHA384 (DRBG_PREDICTION_RESIST | DRBG_HASHSHA384) | |||||
#define DRBG_PR_HASHSHA512 (DRBG_PREDICTION_RESIST | DRBG_HASHSHA512) | |||||
#define DRBG_NOPR_HASHSHA1 (DRBG_HASHSHA1) | |||||
#define DRBG_NOPR_HASHSHA256 (DRBG_HASHSHA256) | |||||
#define DRBG_NOPR_HASHSHA384 (DRBG_HASHSHA384) | |||||
#define DRBG_NOPR_HASHSHA512 (DRBG_HASHSHA512) | |||||
#define DRBG_PR_HMACSHA1 (DRBG_PREDICTION_RESIST | DRBG_HASHSHA1 | DRBG_HMAC) | |||||
#define DRBG_PR_HMACSHA256 (DRBG_PREDICTION_RESIST | DRBG_HASHSHA256|DRBG_HMAC) | |||||
#define DRBG_PR_HMACSHA384 (DRBG_PREDICTION_RESIST | DRBG_HASHSHA384|DRBG_HMAC) | |||||
#define DRBG_PR_HMACSHA512 (DRBG_PREDICTION_RESIST | DRBG_HASHSHA512|DRBG_HMAC) | |||||
#define DRBG_NOPR_HMACSHA1 (DRBG_HASHSHA1 | DRBG_HMAC) | |||||
#define DRBG_NOPR_HMACSHA256 (DRBG_HASHSHA256 | DRBG_HMAC) | |||||
#define DRBG_NOPR_HMACSHA384 (DRBG_HASHSHA384 | DRBG_HMAC) | |||||
#define DRBG_NOPR_HMACSHA512 (DRBG_HASHSHA512 | DRBG_HMAC) | |||||
#if 0 /* (Keep Emacsens' auto-indent happy.) */ | #if 0 /* (Keep Emacsens' auto-indent happy.) */ | ||||
{ | { | ||||
Context not available. |