2 * Written in 2013 by Gregor Pintar <grpintar@gmail.com>
4 * To the extent possible under law, the author(s) have dedicated
5 * all copyright and related and neighboring rights to this software
6 * to the public domain worldwide.
8 * This software is distributed without any warranty.
10 * You should have received a copy of the CC0 Public Domain Dedication.
11 * If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
16 #include <kripto/block.h>
17 #include <kripto/desc/block.h>
21 const kripto_block_desc
*desc
;
24 kripto_block
*kripto_block_create
26 const kripto_block_desc
*desc
,
37 assert(key_len
<= kripto_block_maxkey(desc
));
39 return desc
->create(rounds
, key
, key_len
);
42 kripto_block
*kripto_block_recreate
52 assert(s
->desc
->recreate
);
56 assert(key_len
<= kripto_block_maxkey(s
->desc
));
58 return s
->desc
->recreate(s
, rounds
, key
, key_len
);
61 void kripto_block_tweak
70 assert(s
->desc
->tweak
);
75 s
->desc
->tweak(s
, tweak
, len
);
78 void kripto_block_encrypt
80 const kripto_block
*s
,
87 assert(s
->desc
->encrypt
);
91 s
->desc
->encrypt(s
, pt
, ct
);
94 void kripto_block_decrypt
96 const kripto_block
*s
,
103 assert(s
->desc
->decrypt
);
107 s
->desc
->decrypt(s
, ct
, pt
);
110 void kripto_block_destroy(kripto_block
*s
)
114 assert(s
->desc
->destroy
);
119 const kripto_block_desc
*kripto_block_getdesc(const kripto_block
*s
)
127 unsigned int kripto_block_size(const kripto_block_desc
*desc
)
130 assert(desc
->blocksize
);
132 return desc
->blocksize
;
135 unsigned int kripto_block_maxkey(const kripto_block_desc
*desc
)
138 assert(desc
->maxkey
);
143 unsigned int kripto_block_maxtweak(const kripto_block_desc
*desc
)
147 return desc
->maxtweak
;