]>
jfr.im git - irc/quakenet/newserv.git/blob - lib/cbc.c
7 rijndaelcbc
*rijndaelcbc_init(unsigned char *key
, int keybits
, unsigned char *iv
, int decrypt
) {
8 rijndaelcbc
*ret
= (rijndaelcbc
*)malloc(sizeof(rijndaelcbc
) + RKLENGTH(keybits
) * sizeof(unsigned long));
12 memcpy(ret
->prevblock
, iv
, 16);
15 ret
->nrounds
= rijndaelSetupDecrypt(ret
->rk
, key
, keybits
);
17 ret
->nrounds
= rijndaelSetupEncrypt(ret
->rk
, key
, keybits
);
23 void rijndaelcbc_free(rijndaelcbc
*c
) {
27 unsigned char *rijndaelcbc_encrypt(rijndaelcbc
*c
, unsigned char *ptblock
) {
29 unsigned char *p
= c
->prevblock
, *p2
= c
->scratch
;
31 *p2
++ = *p
++ ^ *ptblock
++;
33 rijndaelEncrypt(c
->rk
, c
->nrounds
, c
->scratch
, c
->prevblock
);
37 unsigned char *rijndaelcbc_decrypt(rijndaelcbc
*c
, unsigned char *ctblock
) {
39 unsigned char *p
= c
->prevblock
, *p2
= c
->scratch
;
41 rijndaelDecrypt(c
->rk
, c
->nrounds
, ctblock
, c
->scratch
);
46 memcpy(c
->prevblock
, ctblock
, 16);