12#ifndef SPP_EXTERNAL_ENCRYPTION_H_
13#define SPP_EXTERNAL_ENCRYPTION_H_
72#define WTF ! (BLOCKCIPHERS | AEAD_MODES)
73#define MICRO_RJNDL WTF
79#if ECB | (CBC && !CTS) | (XEX && !XTS)
83#if ECB | CBC | XEX | KWA | MICRO_RJNDL
88#define CUSTOM_ALPHABET 0
101#define PRESET_COUNTER 0
125#if AES___ == 256 || AES___ == 192
140typedef unsigned char uint8_t;
147#error "YOUR SYSTEM/COMPILER NEITHER SUPPORTS <cstdint> NOR 8-BIT CHARACTERS!!"
151#define SDCC_REENT __reentrant
164void SPP_EXTERNAL_ENCRYPTION_cipher(
const uint8_t* key,
176 const size_t ptextLen,
181 const size_t crtxtLen,
190 const uint8_t iVec[16],
192 const size_t ptextLen,
196 const uint8_t iVec[16],
198 const size_t crtxtLen,
207 const uint8_t iVec[16],
209 const size_t ptextLen,
213 const uint8_t iVec[16],
215 const size_t crtxtLen,
224 const uint8_t iVec[16],
226 const size_t ptextLen,
230 const uint8_t iVec[16],
232 const size_t crtxtLen,
241 const uint8_t* tweak,
243 const size_t ptextLen,
247 const uint8_t* tweak,
249 const size_t crtxtLen,
260 const size_t ptextLen,
266 const size_t crtxtLen,
276 const size_t aDataLen,
278 const size_t ptextLen,
283 const uint8_t iv[16],
285 const size_t aDataLen,
287 const size_t crtxtLen,
296 const uint8_t* nonce,
298 const size_t aDataLen,
300 const size_t ptextLen,
304 const uint8_t* nonce,
306 const size_t aDataLen,
308 const size_t crtxtLen,
317 const uint8_t* nonce,
319 const size_t aDataLen,
321 const size_t ptextLen,
325 const uint8_t* nonce,
327 const size_t aDataLen,
329 const size_t crtxtLen,
338 const uint8_t* nonce,
340 const size_t aDataLen,
342 const size_t ptextLen,
346 const uint8_t* nonce,
348 const size_t aDataLen,
350 const size_t crtxtLen,
359 const uint8_t* nonce,
361 const size_t nonceLen,
364 const size_t aDataLen,
367 const size_t ptextLen,
371 const uint8_t* nonce,
373 const size_t nonceLen,
376 const size_t aDataLen,
379 const size_t crtxtLen,
388 const uint8_t* nonce,
390 const size_t aDataLen,
392 const size_t ptextLen,
396 const uint8_t* nonce,
398 const size_t aDataLen,
400 const size_t crtxtLen,
410 const size_t secretLen,
415 const size_t wrapLen,
424 const uint8_t* tweak,
426 const size_t tweakLen,
429 const size_t ptextLen,
433 const uint8_t* tweak,
435 const size_t tweakLen,
438 const size_t crtxtLen,
447 const uint8_t nonce[16],
449 const size_t dataSize,
459 const size_t dataSize,
void SPP_EXTERNAL_ENCRYPTION_ctrDecrypt(const uint8_t *key, const uint8_t *iv, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt the input ciphertext using CTR-AES block-cipher method
void SPP_EXTERNAL_ENCRYPTION_ecbEncrypt(const uint8_t *key, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input plaintext using ECB-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_cbcEncrypt(const uint8_t *key, const block_t iVec, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input plaintext using CBC-AES block-cipher method
void SPP_EXTERNAL_ENCRYPTION_ctrEncrypt(const uint8_t *key, const uint8_t *iv, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input plaintext using CTR-AES block-cipher method
void SPP_EXTERNAL_ENCRYPTION_poly1305(const uint8_t *keys, const block_t nonce, const void *data, const size_t dataSize, block_t mac)
derive the Poly1305-AES mac of message using a nonce and key pair.
void SPP_EXTERNAL_ENCRYPTION_ofbDecrypt(const uint8_t *key, const block_t iVec, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt the input ciphertext using OFB-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_gcmSivDecrypt(const uint8_t *key, const uint8_t *nonce, const void *aData, const size_t aDataLen, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt the input ciphertext using SIV-GCM-AES block-cipher method
void SPP_EXTERNAL_ENCRYPTION_cfbEncrypt(const uint8_t *key, const block_t iVec, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input plaintext using CFB-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_keyWrap(const uint8_t *kek, const void *secret, const size_t secretLen, void *wrapped)
encrypt the input secret with key-wrapping method
void SPP_EXTERNAL_ENCRYPTION_ofbEncrypt(const uint8_t *key, const block_t iVec, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input plaintext using OFB-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_keyUnwrap(const uint8_t *kek, const void *wrapped, const size_t wrapLen, void *secret)
unwrap/decrypt a wrapped secret according to RFC-3394
void SPP_EXTERNAL_ENCRYPTION_gcmEncrypt(const uint8_t *key, const uint8_t *nonce, const void *aData, const size_t aDataLen, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input plaintext using GCM-AES block-cipher method
void SPP_EXTERNAL_ENCRYPTION_ocbEncrypt(const uint8_t *key, const uint8_t *nonce, const void *aData, const size_t aDataLen, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input stream using OCB-AES block-cipher method
void SPP_EXTERNAL_ENCRYPTION_sivEncrypt(const uint8_t *keys, const void *aData, const size_t aDataLen, const void *pntxt, const size_t ptextLen, block_t iv, void *crtxt)
encrypt the input plaintext using SIV-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_cbcDecrypt(const uint8_t *key, const block_t iVec, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt the input ciphertext using CBC-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_eaxDecrypt(const uint8_t *key, const uint8_t *nonce, const void *aData, const size_t aDataLen, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt the input ciphertext using EAX-AES block-cipher method
void SPP_EXTERNAL_ENCRYPTION_cfbDecrypt(const uint8_t *key, const block_t iVec, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt the input ciphertext using CFB-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_sivDecrypt(const uint8_t *keys, const block_t iv, const void *aData, const size_t aDataLen, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt the input ciphertext using SIV-AES block-cipher method
void SPP_EXTERNAL_ENCRYPTION_gcmSivEncrypt(const uint8_t *key, const uint8_t *nonce, const void *aData, const size_t aDataLen, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input plaintext using SIV-GCM-AES block-cipher method
void SPP_EXTERNAL_ENCRYPTION_ccmEncrypt(const uint8_t *key, const uint8_t *nonce, const void *aData, const size_t aDataLen, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input plaintext using CCM-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_gcmDecrypt(const uint8_t *key, const uint8_t *nonce, const void *aData, const size_t aDataLen, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt the input ciphertext using GCM-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_xtsEncrypt(const uint8_t *keys, const uint8_t *tweak, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input plaintext using XTS-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_fpeDecrypt(const uint8_t *key, const TWEAK_PARAMS, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt a ciphertext string using FPE-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_ocbDecrypt(const uint8_t *key, const uint8_t *nonce, const void *aData, const size_t aDataLen, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt the input stream using OCB-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_xtsDecrypt(const uint8_t *keys, const uint8_t *tweak, const void *crtxt, const size_t crtxtLen, void *pntxt)
encrypt the input ciphertext using XTS-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_ecbDecrypt(const uint8_t *key, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt the input ciphertext using ECB-AES block-cipher method
void SPP_EXTERNAL_ENCRYPTION_eaxEncrypt(const uint8_t *key, const uint8_t *nonce, const void *aData, const size_t aDataLen, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input plaintext using EAX-AES block-cipher method
void SPP_EXTERNAL_ENCRYPTION_cmac(const uint8_t *key, const void *data, const size_t dataSize, block_t mac)
derive the AES-CMAC of input data using an encryption key
char SPP_EXTERNAL_ENCRYPTION_ccmDecrypt(const uint8_t *key, const uint8_t *nonce, const void *aData, const size_t aDataLen, const void *crtxt, const size_t crtxtLen, void *pntxt)
decrypt the input ciphertext using CCM-AES block-cipher method
char SPP_EXTERNAL_ENCRYPTION_fpeEncrypt(const uint8_t *key, const TWEAK_PARAMS, const void *pntxt, const size_t ptextLen, void *crtxt)
encrypt the input string using FPE-AES block-cipher method
constant_parameters_of_modes