diff options
Diffstat (limited to 'src/norx_inexact.h')
-rw-r--r-- | src/norx_inexact.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/norx_inexact.h b/src/norx_inexact.h new file mode 100644 index 0000000..ec35d73 --- /dev/null +++ b/src/norx_inexact.h @@ -0,0 +1,64 @@ +/* + * NORX reference source code package - reference C implementations + * + * Written 2014-2016 by: + * + * - Samuel Neves <sneves@dei.uc.pt> + * - Philipp Jovanovic <philipp@jovanovic.io> + * + * To the extent possible under law, the author(s) have dedicated all copyright + * and related and neighboring rights to this software to the public domain + * worldwide. This software is distributed without any warranty. + * + * You should have received a copy of the CC0 Public Domain Dedication along with + * this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. + */ +#ifndef NORX_NORX_H +#define NORX_NORX_H + +#include <stddef.h> +#include <stdint.h> +#include "norx_inexact_config.h" + +#if NORX_W == 64 + typedef uint64_t norx_word_t; +#elif NORX_W == 32 + typedef uint32_t norx_word_t; +#else + #error "Invalid word size!" +#endif + +typedef struct norx_state__ +{ + norx_word_t S[16]; +} norx_state_t[1]; + +typedef enum tag__ +{ + HEADER_TAG = 0x01, + PAYLOAD_TAG = 0x02, + TRAILER_TAG = 0x04, + FINAL_TAG = 0x08, + BRANCH_TAG = 0x10, + MERGE_TAG = 0x20 +} tag_t; + +/* High-level operations */ +void norx_aead_encrypt( + unsigned char *c, size_t *clen, + const unsigned char *a, size_t alen, + const unsigned char *m, size_t mlen, + const unsigned char *z, size_t zlen, + const unsigned char *nonce, + const unsigned char *key, + size_t tlen); + +int norx_aead_decrypt( + unsigned char *m, size_t *mlen, + const unsigned char *a, size_t alen, + const unsigned char *c, size_t clen, + const unsigned char *z, size_t zlen, + const unsigned char *nonce, + const unsigned char *key, + size_t tlen); +#endif |