|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef NETTLE_CTR_H_INCLUDED |
|
|
#define NETTLE_CTR_H_INCLUDED |
|
|
|
|
|
#include "nettle-types.h" |
|
|
|
|
|
#ifdef __cplusplus |
|
|
extern "C" { |
|
|
#endif |
|
|
|
|
|
|
|
|
#define ctr_crypt nettle_ctr_crypt |
|
|
|
|
|
void |
|
|
ctr_crypt(const void *ctx, nettle_cipher_func *f, |
|
|
size_t block_size, uint8_t *ctr, |
|
|
size_t length, uint8_t *dst, |
|
|
const uint8_t *src); |
|
|
|
|
|
#define CTR_CTX(type, size) \ |
|
|
{ type ctx; uint8_t ctr[size]; } |
|
|
|
|
|
#define CTR_SET_COUNTER(ctx, data) \ |
|
|
memcpy((ctx)->ctr, (data), sizeof((ctx)->ctr)) |
|
|
|
|
|
#define CTR_CRYPT(self, f, length, dst, src) \ |
|
|
(0 ? ((f)(&(self)->ctx, ~(size_t) 0, \ |
|
|
(uint8_t *) 0, (const uint8_t *) 0)) \ |
|
|
: ctr_crypt((void *) &(self)->ctx, \ |
|
|
(nettle_cipher_func *) (f), \ |
|
|
sizeof((self)->ctr), (self)->ctr, \ |
|
|
(length), (dst), (src))) |
|
|
|
|
|
#ifdef __cplusplus |
|
|
} |
|
|
#endif |
|
|
|
|
|
#endif |
|
|
|