mirror of
https://github.com/bol-van/zapret.git
synced 2025-12-06 11:36:46 +03:00
nfqws: fix crypto code
This commit is contained in:
@@ -5,9 +5,11 @@ int aes_gcm_crypt(int mode, uint8_t *output, const uint8_t *input, size_t input_
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
gcm_context ctx;
|
gcm_context ctx;
|
||||||
|
|
||||||
gcm_setkey(&ctx, key, (const uint)key_len);
|
if (!(ret = gcm_setkey(&ctx, key, (const uint)key_len)))
|
||||||
ret = gcm_crypt_and_tag(&ctx, mode, iv, iv_len, adata, adata_len, input, output, input_length, atag, atag_len);
|
{
|
||||||
gcm_zero_ctx(&ctx);
|
ret = gcm_crypt_and_tag(&ctx, mode, iv, iv_len, adata, adata_len, input, output, input_length, atag, atag_len);
|
||||||
|
gcm_zero_ctx(&ctx);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -367,7 +367,7 @@ int aes_setkey(aes_context *ctx, // AES context provided by our caller
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if AES_DECRYPTION
|
#if AES_DECRYPTION
|
||||||
if (mode == DECRYPT) // expand our key for encryption or decryption
|
if (mode == AES_DECRYPT) // expand our key for encryption or decryption
|
||||||
return(aes_set_decryption_key(ctx, key, keysize));
|
return(aes_set_decryption_key(ctx, key, keysize));
|
||||||
else /* ENCRYPT */
|
else /* ENCRYPT */
|
||||||
#endif /* AES_DECRYPTION */
|
#endif /* AES_DECRYPTION */
|
||||||
@@ -399,7 +399,7 @@ int aes_cipher(aes_context *ctx,
|
|||||||
|
|
||||||
#if AES_DECRYPTION // whether AES decryption is supported
|
#if AES_DECRYPTION // whether AES decryption is supported
|
||||||
|
|
||||||
if (ctx->mode == DECRYPT)
|
if (ctx->mode == AES_DECRYPT)
|
||||||
{
|
{
|
||||||
for (i = (ctx->rounds >> 1) - 1; i > 0; i--)
|
for (i = (ctx->rounds >> 1) - 1; i > 0; i--)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ int gcm_setkey(gcm_context *ctx, // pointer to caller-provided gcm context
|
|||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
int gcm_start(gcm_context *ctx, // pointer to user-provided GCM context
|
int gcm_start(gcm_context *ctx, // pointer to user-provided GCM context
|
||||||
int mode, // GCM_ENCRYPT or GCM_DECRYPT
|
int mode, // AES_ENCRYPT or AES_DECRYPT
|
||||||
const uchar *iv, // pointer to initialization vector
|
const uchar *iv, // pointer to initialization vector
|
||||||
size_t iv_len, // IV length in bytes (should == 12)
|
size_t iv_len, // IV length in bytes (should == 12)
|
||||||
const uchar *add, // ptr to additional AEAD data (NULL if none)
|
const uchar *add, // ptr to additional AEAD data (NULL if none)
|
||||||
@@ -288,6 +288,7 @@ int gcm_start(gcm_context *ctx, // pointer to user-provided GCM context
|
|||||||
for (i = 0; i < 16; i++) ctx->y[i] ^= work_buf[i];
|
for (i = 0; i < 16; i++) ctx->y[i] ^= work_buf[i];
|
||||||
gcm_mult(ctx, ctx->y, ctx->y);
|
gcm_mult(ctx, ctx->y, ctx->y);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = aes_cipher(&ctx->aes_ctx, ctx->y, ctx->base_ectr)) != 0)
|
if ((ret = aes_cipher(&ctx->aes_ctx, ctx->y, ctx->base_ectr)) != 0)
|
||||||
return(ret);
|
return(ret);
|
||||||
|
|
||||||
@@ -427,7 +428,7 @@ int gcm_finish(gcm_context *ctx, // pointer to user-provided GCM context
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
int gcm_crypt_and_tag(
|
int gcm_crypt_and_tag(
|
||||||
gcm_context *ctx, // gcm context with key already setup
|
gcm_context *ctx, // gcm context with key already setup
|
||||||
int mode, // cipher direction: GCM_ENCRYPT or GCM_DECRYPT
|
int mode, // cipher direction: AES_ENCRYPT or AES_DECRYPT
|
||||||
const uchar *iv, // pointer to the 12-byte initialization vector
|
const uchar *iv, // pointer to the 12-byte initialization vector
|
||||||
size_t iv_len, // byte length if the IV. should always be 12
|
size_t iv_len, // byte length if the IV. should always be 12
|
||||||
const uchar *add, // pointer to the non-ciphered additional data
|
const uchar *add, // pointer to the non-ciphered additional data
|
||||||
|
|||||||
Reference in New Issue
Block a user