diff --git a/nettle-meta.h b/nettle-meta.h index d64f92f71c15e3c559b724da2fffb3695eff0da2..8283ed525d6a3b53850ea02d76b017427b2e70bf 100644 --- a/nettle-meta.h +++ b/nettle-meta.h @@ -126,30 +126,37 @@ extern const struct nettle_hash nettle_sha256; /* ASCII armor codecs */ -typedef unsigned (*nettle_armor_func)(uint8_t *dst, - unsigned src_length, - const uint8_t *src); +typedef unsigned (*nettle_armor_encode_func)(uint8_t *dst, + unsigned src_length, + const uint8_t *src); +typedef void (*nettle_armor_init_func)(void *ctx); +typedef unsigned (*nettle_armor_update_func)(void *ctx, + uint8_t *dst, + unsigned src_length, + const uint8_t *src); struct nettle_armor { const char *name; - - unsigned ascii_block_size; - unsigned raw_block_size; - - nettle_armor_func encode; - nettle_armor_func decode; + unsigned context_size; + unsigned text_block_size; + unsigned binary_block_size; + nettle_armor_encode_func encode; + nettle_armor_init_func decode_init; + nettle_armor_update_func decode_update; }; -#define _NETTLE_ARMOR(name, NAME) { \ - #name, \ - NAME##_ASCII_BLOCK_SIZE, \ - NAME##_RAW_BLOCK_SIZE, \ - name##_encode, \ - name##_decode \ +#define _NETTLE_ARMOR(name, NAME) { \ + #name, \ + sizeof(struct name##_ctx), \ + NAME##_TEXT_BLOCK_SIZE, \ + NAME##_BINARY_BLOCK_SIZE, \ + (nettle_armor_encode_func) name##_encode, \ + (nettle_armor_init_func) name##_decode_init, \ + (nettle_armor_update_func) name##_decode_update \ } extern const struct nettle_armor nettle_base64; -extern const struct nettle_armor nettle_base16; +/* extern const struct nettle_armor nettle_base16; */ #endif /* NETTLE_META_H_INCLUDED */