]> git.cryptolib.org Git - avr-crypto-lib.git/blob - norx/norx32.h
288435eda48ec72109b858b272b87f9f76260176
[avr-crypto-lib.git] / norx / norx32.h
1 /* norx32.h */
2 /*
3     This file is part of the AVR-Crypto-Lib.
4     Copyright (C) 2014 Daniel Otte (daniel.otte@rub.de)
5
6     This program is free software: you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation, either version 3 of the License, or
9     (at your option) any later version.
10
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #ifndef NORX_NORX32_H_
21 #define NORX_NORX32_H_
22
23 #include <stdint.h>
24
25 typedef struct {
26     uint8_t d;
27     uint8_t r;
28     uint16_t a;
29     uint32_t s[16];
30 } norx32_ctx_t;
31
32
33
34 /******************************************************************************/
35
36 int8_t norx32_init (
37     norx32_ctx_t *ctx,
38     const void* nonce,
39     const void* key,
40     uint16_t tag_size_b,
41     uint8_t rounds,
42     uint8_t parallel );
43 void norx32_finalize(norx32_ctx_t *ctx, void *tag);
44 void norx32_add_header_block(norx32_ctx_t *ctx, const void *block);
45 void norx32_add_header_last_block(
46     norx32_ctx_t *ctx,
47     const void *block,
48     uint16_t length_b );
49
50 void norx32_encrypt_block(norx32_ctx_t *ctx, void *dest, const void *src);
51
52 void norx32_encrypt_last_block(
53     norx32_ctx_t *ctx,
54     void *dest,
55     const void *src,
56     uint16_t length_b );
57 void norx32_add_trailer_block(norx32_ctx_t *ctx, const void *block);
58
59 void norx32_add_trailer_last_block(
60     norx32_ctx_t *ctx,
61     const void *block,
62     uint16_t length_b );
63
64 /******************************************************************************/
65
66 void norx32_default_simple (
67     void *data_dest,
68     void *tag_dest,
69     const void *key,
70     const void *nonce,
71     const void *header,
72     size_t header_length_B,
73     const void *data_src,
74     size_t data_length_B,
75     const void *trailer,
76     size_t trailer_length_B );
77
78 #endif /* NORX_NORX32_H_ */