mirror of
https://github.com/jedisct1/libsodium.git
synced 2024-12-19 10:05:05 -07:00
2023
This commit is contained in:
parent
f842b157e0
commit
337fba6c23
2
LICENSE
2
LICENSE
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* ISC License
|
||||
*
|
||||
* Copyright (c) 2013-2022
|
||||
* Copyright (c) 2013-2023
|
||||
* Frank Denis <j at pureftpd dot org>
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
|
@ -7,20 +7,42 @@
|
||||
#include "randombytes.h"
|
||||
#include "utils.h"
|
||||
|
||||
int
|
||||
crypto_kdf_hkdf_sha256_extract_init(crypto_kdf_hkdf_sha256_state *state,
|
||||
const unsigned char *salt, size_t salt_len)
|
||||
{
|
||||
return crypto_auth_hmacsha256_init(&state->st, salt, salt_len);
|
||||
}
|
||||
|
||||
int
|
||||
crypto_kdf_hkdf_sha256_extract_update(crypto_kdf_hkdf_sha256_state *state,
|
||||
const unsigned char *ikm, size_t ikm_len)
|
||||
{
|
||||
return crypto_auth_hmacsha256_update(&state->st, ikm, ikm_len);
|
||||
}
|
||||
|
||||
int
|
||||
crypto_kdf_hkdf_sha256_extract_final(crypto_kdf_hkdf_sha256_state *state,
|
||||
unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES])
|
||||
{
|
||||
crypto_auth_hmacsha256_final(&state->st, prk);
|
||||
sodium_memzero(state, sizeof state);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
crypto_kdf_hkdf_sha256_extract(
|
||||
unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES],
|
||||
const unsigned char *salt, size_t salt_len, const unsigned char *ikm,
|
||||
size_t ikm_len)
|
||||
{
|
||||
crypto_auth_hmacsha256_state st;
|
||||
crypto_kdf_hkdf_sha256_state state;
|
||||
|
||||
crypto_auth_hmacsha256_init(&st, salt, salt_len);
|
||||
crypto_auth_hmacsha256_update(&st, ikm, ikm_len);
|
||||
crypto_auth_hmacsha256_final(&st, prk);
|
||||
sodium_memzero(&st, sizeof st);
|
||||
crypto_kdf_hkdf_sha256_extract_init(&state, salt, salt_len);
|
||||
crypto_kdf_hkdf_sha256_extract_update(&state, ikm, ikm_len);
|
||||
|
||||
return 0;
|
||||
return crypto_kdf_hkdf_sha256_extract_final(&state, prk);
|
||||
}
|
||||
|
||||
void
|
||||
@ -94,3 +116,8 @@ crypto_kdf_hkdf_sha256_bytes_max(void)
|
||||
{
|
||||
return crypto_kdf_hkdf_sha256_BYTES_MAX;
|
||||
}
|
||||
|
||||
size_t crypto_kdf_hkdf_sha256_statebytes(void)
|
||||
{
|
||||
return sizeof(crypto_kdf_hkdf_sha256_state);
|
||||
}
|
||||
|
@ -31,7 +31,8 @@ size_t crypto_kdf_hkdf_sha256_bytes_max(void);
|
||||
SODIUM_EXPORT
|
||||
int crypto_kdf_hkdf_sha256_extract(unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES],
|
||||
const unsigned char *salt, size_t salt_len,
|
||||
const unsigned char *ikm, size_t ikm_len);
|
||||
const unsigned char *ikm, size_t ikm_len)
|
||||
__attribute__ ((nonnull(4)));
|
||||
|
||||
SODIUM_EXPORT
|
||||
void crypto_kdf_hkdf_sha256_keygen(unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES]);
|
||||
@ -39,7 +40,32 @@ void crypto_kdf_hkdf_sha256_keygen(unsigned char prk[crypto_kdf_hkdf_sha256_KEYB
|
||||
SODIUM_EXPORT
|
||||
int crypto_kdf_hkdf_sha256_expand(unsigned char *out, size_t out_len,
|
||||
const char *ctx, size_t ctx_len,
|
||||
const unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES]);
|
||||
const unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES])
|
||||
__attribute__ ((nonnull(1)));
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
typedef struct crypto_kdf_hkdf_sha256_state {
|
||||
crypto_auth_hmacsha256_state st;
|
||||
} crypto_kdf_hkdf_sha256_state;
|
||||
|
||||
SODIUM_EXPORT
|
||||
size_t crypto_kdf_hkdf_sha256_statebytes(void);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_kdf_hkdf_sha256_extract_init(crypto_kdf_hkdf_sha256_state *state,
|
||||
const unsigned char *salt, size_t salt_len)
|
||||
__attribute__ ((nonnull(1)));
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_kdf_hkdf_sha256_extract_update(crypto_kdf_hkdf_sha256_state *state,
|
||||
const unsigned char *ikm, size_t ikm_len)
|
||||
__attribute__ ((nonnull));
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_kdf_hkdf_sha256_extract_final(crypto_kdf_hkdf_sha256_state *state,
|
||||
unsigned char prk[crypto_kdf_hkdf_sha256_KEYBYTES])
|
||||
__attribute__ ((nonnull));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user