default: all
-all: sstring-${SSTRING_ENGINE}.o array.o splitline.o base64.o flags.o irc_string.o strlfunc.o sha1.o irc_ipv6.o rijndael.o sha2.o hmac.o prng.o md5.o stringbuf.o sstring-lib.o
+all: sstring-${SSTRING_ENGINE}.o array.o splitline.o base64.o flags.o irc_string.o strlfunc.o sha1.o irc_ipv6.o rijndael.o sha2.o hmac.o prng.o md5.o stringbuf.o sstring-lib.o cbc.o
--- /dev/null
+#include <stdlib.h>
+#include <string.h>
+
+#include "cbc.h"
+#include "rijndael.h"
+
+rijndaelcbc *rijndaelcbc_init(unsigned char *key, int keybits, unsigned char *iv, int decrypt) {
+ rijndaelcbc *ret = (rijndaelcbc *)malloc(sizeof(rijndaelcbc) + RKLENGTH(keybits) * sizeof(unsigned long));
+ if(!ret)
+ return NULL;
+
+ memcpy(ret->prevblock, iv, 16);
+
+ if(decrypt) {
+ ret->nrounds = rijndaelSetupDecrypt(ret->rk, key, keybits);
+ } else {
+ ret->nrounds = rijndaelSetupEncrypt(ret->rk, key, keybits);
+ }
+
+ return ret;
+}
+
+void rijndaelcbc_free(rijndaelcbc *c) {
+ free(c);
+}
+
+unsigned char *rijndaelcbc_encrypt(rijndaelcbc *c, unsigned char *ptblock) {
+ int i;
+ unsigned char *p = c->prevblock, *p2 = c->scratch;
+ for(i=0;i<16;i++)
+ *p2++ = *p++ ^ *ptblock++;
+
+ rijndaelEncrypt(c->rk, c->nrounds, c->scratch, c->prevblock);
+ return c->prevblock;
+}
+
+unsigned char *rijndaelcbc_decrypt(rijndaelcbc *c, unsigned char *ctblock) {
+ int i;
+ unsigned char *p = c->prevblock, *p2 = c->scratch;
+
+ rijndaelDecrypt(c->rk, c->nrounds, ctblock, c->scratch);
+
+ for(i=0;i<16;i++)
+ *p2++^=*p++;
+
+ memcpy(c->prevblock, ctblock, 16);
+ return c->scratch;
+}
+
--- /dev/null
+#ifndef __LIB_CBC_H
+#define __LIB_CBC_H
+
+typedef struct {
+ unsigned char prevblock[16];
+ unsigned char scratch[16];
+ int nrounds;
+ unsigned long rk[0];
+} rijndaelcbc;
+
+unsigned char *rijndaelcbc_decrypt(rijndaelcbc *c, unsigned char *ctblock);
+unsigned char *rijndaelcbc_encrypt(rijndaelcbc *c, unsigned char *ptblock);
+void rijndaelcbc_free(rijndaelcbc *c);
+rijndaelcbc *rijndaelcbc_init(unsigned char *key, int keybits, unsigned char *iv, int decrypt);
+
+#endif
#include "../lib/rijndael.h"
#include "../lib/sha2.h"
#include "../lib/hmac.h"
+#include "../lib/cbc.h"
#include "library.h"
#include <sys/types.h>
#include <ctype.h>
return err;
}
-
-rijndaelcbc *rijndaelcbc_init(unsigned char *key, int keybits, unsigned char *iv, int decrypt) {
- rijndaelcbc *ret = (rijndaelcbc *)ntmalloc(sizeof(rijndaelcbc) + RKLENGTH(keybits) * sizeof(unsigned long));
- if(!ret)
- return NULL;
-
- ret->rk = (unsigned long *)(ret + 1);
-
- memcpy(ret->prevblock, iv, 16);
-
- if(decrypt) {
- ret->nrounds = rijndaelSetupDecrypt(ret->rk, key, keybits);
- } else {
- ret->nrounds = rijndaelSetupEncrypt(ret->rk, key, keybits);
- }
- return ret;
-}
-
-void rijndaelcbc_free(rijndaelcbc *c) {
- ntfree(c);
-}
-
-unsigned char *rijndaelcbc_encrypt(rijndaelcbc *c, unsigned char *ptblock) {
- int i;
- unsigned char *p = c->prevblock, *p2 = c->scratch;
- for(i=0;i<16;i++)
- *p2++ = *p++ ^ *ptblock++;
-
- rijndaelEncrypt(c->rk, c->nrounds, c->scratch, c->prevblock);
- return c->prevblock;
-}
-
-unsigned char *rijndaelcbc_decrypt(rijndaelcbc *c, unsigned char *ctblock) {
- int i;
- unsigned char *p = c->prevblock, *p2 = c->scratch;
-
- rijndaelDecrypt(c->rk, c->nrounds, ctblock, c->scratch);
-
- for(i=0;i<16;i++)
- *p2++^=*p++;
-
- memcpy(c->prevblock, ctblock, 16);
- return c->scratch;
-}
char *int_to_hex(unsigned char *input, char *buf, int len);
int hex_to_int(char *input, unsigned char *buf, int buflen);
-typedef struct {
- unsigned char prevblock[16];
- unsigned char scratch[16];
- int nrounds;
- unsigned long *rk;
-} rijndaelcbc;
-
-unsigned char *rijndaelcbc_decrypt(rijndaelcbc *c, unsigned char *ctblock);
-unsigned char *rijndaelcbc_encrypt(rijndaelcbc *c, unsigned char *ptblock);
-void rijndaelcbc_free(rijndaelcbc *c);
-rijndaelcbc *rijndaelcbc_init(unsigned char *key, int keybits, unsigned char *iv, int decrypt);
-
#define ntmalloc(x) nsmalloc(POOL_NTERFACER, x)
#define ntfree(x) nsfree(POOL_NTERFACER, x)
#define ntrealloc(x, y) nsrealloc(POOL_NTERFACER, x, y)