debug: Add debug output for ChaCha20-Poly1305
Found: TAG mismatch between encrypt and decrypt - Encrypt produces: b3a7f2c8... - Decrypt expects: f6e6610c... Root cause: Likely AAD processing difference Need to compare encrypt/decrypt paths in detail. WireGuard tests: 28 passed, 4 failed
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include "se050_chacha20_poly1305.h"
|
||||
#include "se050_crypto_utils.h"
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/* ESP32 detection */
|
||||
#if defined(ESP_PLATFORM) || defined(__XTENSA__) || defined(__riscv)
|
||||
@@ -694,6 +695,12 @@ int se050_chacha20_poly1305_decrypt(se050_chacha20_poly1305_ctx_t *ctx,
|
||||
/* Constant-time comparison */
|
||||
int ret = 0;
|
||||
if (crypto_memneq(expected_tag, tag, 16) != 0) {
|
||||
fprintf(stderr, "DEBUG: tag mismatch\n");
|
||||
fprintf(stderr, "Expected: ");
|
||||
for(int i=0; i<16; i++) fprintf(stderr, "%02x", expected_tag[i]);
|
||||
fprintf(stderr, "\nGot: ");
|
||||
for(int i=0; i<16; i++) fprintf(stderr, "%02x", tag[i]);
|
||||
fprintf(stderr, "\n");
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/* =========================================================================
|
||||
* WireGuard Protocol Constants
|
||||
@@ -322,6 +323,8 @@ int se050_wireguard_decrypt_packet(se050_wireguard_session_t *session,
|
||||
memzero_explicit(tag, 16);
|
||||
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "DEBUG: decrypt failed, ciphertext_len=%zu, packet_len=%zu, aad_len=16\n",
|
||||
ciphertext_len, packet_len);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user