]> git.cryptolib.org Git - avr-crypto-lib.git/blob - norx/norx32.h
optimizing norx32
[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     uint8_t rounds,
41     uint8_t parallel,
42     uint16_t tag_size_b );
43
44 void norx32_finalize(norx32_ctx_t *ctx, void *tag);
45
46 void norx32_add_header_block(norx32_ctx_t *ctx, const void *block);
47
48 void norx32_add_header_last_block(
49     norx32_ctx_t *ctx,
50     const void *block,
51     uint16_t length_b );
52
53 void norx32_encrypt_block(norx32_ctx_t *ctx, void *dest, const void *src);
54
55 void norx32_encrypt_last_block(
56     norx32_ctx_t *ctx,
57     void *dest,
58     const void *src,
59     uint16_t length_b );
60
61 void norx32_add_trailer_block(norx32_ctx_t *ctx, const void *block);
62
63 void norx32_add_trailer_last_block(
64     norx32_ctx_t *ctx,
65     const void *block,
66     uint16_t length_b );
67
68 /******************************************************************************/
69
70 void norx32_default_simple (
71     void *data_dest,
72     void *tag_dest,
73     const void *key,
74     const void *nonce,
75     const void *header,
76     size_t header_length_B,
77     const void *data_src,
78     size_t data_length_B,
79     const void *trailer,
80     size_t trailer_length_B );
81
82 #endif /* NORX_NORX32_H_ */