forked from wolfSSL/wolfssl
Add option for using a custom salt for ourselves. ZD 17988
This commit is contained in:
@ -13830,7 +13830,7 @@ int wc_ecc_ctx_set_peer_salt(ecEncCtx* ctx, const byte* salt)
|
||||
*
|
||||
* @param [in, out] ctx ECIES context object.
|
||||
* @param [in] salt Salt to use with KDF.
|
||||
* @param [in] len Length of salt in bytes.
|
||||
* @param [in] sz Length of salt in bytes.
|
||||
* @return 0 on success.
|
||||
* @return BAD_FUNC_ARG when ctx is NULL or salt is NULL and len is not 0.
|
||||
*/
|
||||
@ -13852,9 +13852,37 @@ int wc_ecc_ctx_set_kdf_salt(ecEncCtx* ctx, const byte* salt, word32 len)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Set your own salt. By default we generate a random salt for ourselves.
|
||||
* This allows overriding that after init or reset.
|
||||
*
|
||||
* @param [in, out] ctx ECIES context object.
|
||||
* @param [in] salt Salt to use for ourselves
|
||||
* @param [in] sz Length of salt in bytes.
|
||||
* @return 0 on success.
|
||||
* @return BAD_FUNC_ARG when ctx is NULL or salt is NULL and len is not 0.
|
||||
*/
|
||||
int wc_ecc_ctx_set_own_salt(ecEncCtx* ctx, const byte* salt, word32 sz)
|
||||
{
|
||||
byte* saltBuffer;
|
||||
|
||||
if (ctx == NULL || ctx->protocol == 0 || salt == NULL)
|
||||
return BAD_FUNC_ARG;
|
||||
|
||||
if (sz > EXCHANGE_SALT_SZ)
|
||||
sz = EXCHANGE_SALT_SZ;
|
||||
saltBuffer = (ctx->protocol == REQ_RESP_CLIENT) ?
|
||||
ctx->clientSalt :
|
||||
ctx->serverSalt;
|
||||
XMEMSET(saltBuffer, 0, EXCHANGE_SALT_SZ);
|
||||
XMEMCPY(saltBuffer, salt, sz);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int ecc_ctx_set_salt(ecEncCtx* ctx, int flags)
|
||||
{
|
||||
byte* saltBuffer = NULL;
|
||||
byte* saltBuffer;
|
||||
|
||||
if (ctx == NULL || flags == 0)
|
||||
return BAD_FUNC_ARG;
|
||||
@ -13864,7 +13892,6 @@ static int ecc_ctx_set_salt(ecEncCtx* ctx, int flags)
|
||||
return wc_RNG_GenerateBlock(ctx->rng, saltBuffer, EXCHANGE_SALT_SZ);
|
||||
}
|
||||
|
||||
|
||||
static void ecc_ctx_init(ecEncCtx* ctx, int flags, WC_RNG* rng)
|
||||
{
|
||||
if (ctx) {
|
||||
|
@ -978,6 +978,8 @@ const byte* wc_ecc_ctx_get_own_salt(ecEncCtx* ctx);
|
||||
WOLFSSL_API
|
||||
int wc_ecc_ctx_set_peer_salt(ecEncCtx* ctx, const byte* salt);
|
||||
WOLFSSL_API
|
||||
int wc_ecc_ctx_set_own_salt(ecEncCtx* ctx, const byte* salt, word32 sz);
|
||||
WOLFSSL_API
|
||||
int wc_ecc_ctx_set_kdf_salt(ecEncCtx* ctx, const byte* salt, word32 sz);
|
||||
WOLFSSL_API
|
||||
int wc_ecc_ctx_set_info(ecEncCtx* ctx, const byte* info, int sz);
|
||||
|
Reference in New Issue
Block a user