CryptoByLeo/Src/Simetric/ChaCha20/Def.mqh

57 lines
2.4 KiB
MQL5
Raw Permalink Normal View History

2026-08-12 08:29:06 -05:00
//+------------------------------------------------------------------+
//| Def.mqh |
//| Copyright 2026, Niquel Mendoza |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza"
#property link "https://www.mql5.com"
#property strict
#ifndef CRYPTOBYLEO_SRC_SIMETRIC_CHACHA20_DEF_MQH
#define CRYPTOBYLEO_SRC_SIMETRIC_CHACHA20_DEF_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
namespace TSN
{
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
// s = state
2026-08-12 13:31:16 -05:00
// b = bytes
#define CHACHA20_KEYSIZEB (32)
#define CHACHA20_STATE_S (16)
#define CHACHA20_KEYSTREAM_SIZEB (64)
// tamaño para uint32_t (para bytes compeltos el tamaño de key strema de es de 64) para u32 es de16
#define CHACHA20_KEYSTREAM_SIZE_U32 (16)
#define CHACHA20_IVNONE_B (12)
#define CHACHA20_STATE_IDX_CNT (12)
//---- Macro de utildiades
// rotacion a la izuqirda 32
#define CHACHA20_ROT32L(x, n) ((x << n) | (x >> (32 - n)))
//--- Macro base del algoritmo la funcion QR
#define CHACHA20_QR(a, b, c, d) \
a += b; d ^= a; d = CHACHA20_ROT32L(d, 16); \
c += d; b ^= c; b = CHACHA20_ROT32L(b, 12); \
a += b; d ^= a; d = CHACHA20_ROT32L(d, 8); \
c += d; b ^= c; b = CHACHA20_ROT32L(b, 7);
//---- Macro que eqvuila a una ronda completa..
// ¿Aplicamos en columnas luego en diagnoleas..
#define CHACHA20_DOUBLE_ROUND \
CHACHA20_QR(x0, x4, x8, x12) \
CHACHA20_QR(x1, x5, x9, x13) \
CHACHA20_QR(x2, x6, x10, x14) \
CHACHA20_QR(x3, x7, x11, x15) \
CHACHA20_QR(x0, x5, x10, x15) \
CHACHA20_QR(x1, x6, x11, x12) \
CHACHA20_QR(x2, x7, x8, x13) \
CHACHA20_QR(x3, x4, x9, x14)
2026-08-12 08:29:06 -05:00
}
//+------------------------------------------------------------------+
2026-08-12 13:31:16 -05:00
#endif // CRYPTOBYLEO_SRC_SIMETRIC_CHACHA20_DEF_MQH