mirror of
https://github.com/open-quantum-safe/liboqs.git
synced 2025-10-06 00:03:35 -04:00
OpenSSL wrapper for SHA3 and SHAKE non-incremental functions
This commit is contained in:
parent
131580a029
commit
9c0bbbfa17
@ -21,7 +21,11 @@
|
||||
#define sha3_256_inc_finalize OQS_SHA3_sha3_256_inc_finalize
|
||||
|
||||
#define SHA3_384_RATE OQS_SHA3_SHA3_384_RATE
|
||||
#ifndef USE_SHA3_OPENSSL
|
||||
#define sha3_384 OQS_SHA3_sha3_384
|
||||
#else
|
||||
#define sha3_384 oqs_unused_SHA3_sha3_384
|
||||
#endif
|
||||
|
||||
#define sha3_384incctx OQS_SHA3_sha3_384_inc_ctx
|
||||
#define sha3_384_inc_init OQS_SHA3_sha3_384_inc_init
|
||||
@ -29,7 +33,11 @@
|
||||
#define sha3_384_inc_finalize OQS_SHA3_sha3_384_inc_finalize
|
||||
|
||||
#define SHA3_512_RATE OQS_SHA3_SHA3_512_RATE
|
||||
#ifndef USE_SHA3_OPENSSL
|
||||
#define sha3_512 OQS_SHA3_sha3_512
|
||||
#else
|
||||
#define sha3_512 oqs_unused_SHA3_sha3_512
|
||||
#endif
|
||||
|
||||
#define sha3_512incctx OQS_SHA3_sha3_512_inc_ctx
|
||||
#define sha3_512_inc_init OQS_SHA3_sha3_512_inc_init
|
||||
@ -37,7 +45,11 @@
|
||||
#define sha3_512_inc_finalize OQS_SHA3_sha3_512_inc_finalize
|
||||
|
||||
#define SHAKE128_RATE OQS_SHA3_SHAKE128_RATE
|
||||
#ifndef USE_SHA3_OPENSSL
|
||||
#define shake128 OQS_SHA3_shake128
|
||||
#else
|
||||
#define shake128 oqs_unused_SHA3_shake128
|
||||
#endif
|
||||
|
||||
#define shake128ctx OQS_SHA3_shake128_ctx
|
||||
#define shake128_absorb OQS_SHA3_shake128_absorb
|
||||
@ -50,7 +62,11 @@
|
||||
#define shake128_inc_squeeze OQS_SHA3_shake128_inc_squeeze
|
||||
|
||||
#define SHAKE256_RATE OQS_SHA3_SHAKE256_RATE
|
||||
#ifndef USE_SHA3_OPENSSL
|
||||
#define shake256 OQS_SHA3_shake256
|
||||
#else
|
||||
#define shake256 oqs_unused_SHA3_shake256
|
||||
#endif
|
||||
|
||||
#define shake256ctx OQS_SHA3_shake256_ctx
|
||||
#define shake256_absorb OQS_SHA3_shake256_absorb
|
||||
|
@ -21,10 +21,43 @@ static void do_hash(uint8_t *output, const uint8_t *input, size_t inplen, const
|
||||
EVP_MD_CTX_destroy(mdctx);
|
||||
}
|
||||
|
||||
static void do_xof(uint8_t *output, size_t outlen, const uint8_t *input, size_t inplen, const EVP_MD *md) {
|
||||
EVP_MD_CTX *mdctx;
|
||||
mdctx = EVP_MD_CTX_create();
|
||||
EVP_DigestInit_ex(mdctx, md, NULL);
|
||||
EVP_DigestUpdate(mdctx, input, inplen);
|
||||
EVP_DigestFinalXOF(mdctx, output, outlen);
|
||||
EVP_MD_CTX_destroy(mdctx);
|
||||
}
|
||||
|
||||
void OQS_SHA3_sha3_256(uint8_t *output, const uint8_t *input, size_t inplen) {
|
||||
const EVP_MD *md;
|
||||
md = EVP_sha3_256();
|
||||
do_hash(output, input, inplen, md);
|
||||
}
|
||||
|
||||
void OQS_SHA3_sha3_384(uint8_t *output, const uint8_t *input, size_t inplen) {
|
||||
const EVP_MD *md;
|
||||
md = EVP_sha3_384();
|
||||
do_hash(output, input, inplen, md);
|
||||
}
|
||||
|
||||
void OQS_SHA3_sha3_512(uint8_t *output, const uint8_t *input, size_t inplen) {
|
||||
const EVP_MD *md;
|
||||
md = EVP_sha3_512();
|
||||
do_hash(output, input, inplen, md);
|
||||
}
|
||||
|
||||
void OQS_SHA3_shake128(uint8_t *output, size_t outlen, const uint8_t *input, size_t inplen) {
|
||||
const EVP_MD *md;
|
||||
md = EVP_shake128();
|
||||
do_xof(output, outlen, input, inplen, md);
|
||||
}
|
||||
|
||||
void OQS_SHA3_shake256(uint8_t *output, size_t outlen, const uint8_t *input, size_t inplen) {
|
||||
const EVP_MD *md;
|
||||
md = EVP_shake256();
|
||||
do_xof(output, outlen, input, inplen, md);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user