struct transform {
closure_t cl;
- uint32_t line;
struct transform_if ops;
uint32_t max_seq_skew;
};
#define PKCS5_MASK 15
-static bool_t transform_setkey(void *sst, uint8_t *key, uint32_t keylen)
+static bool_t transform_setkey(void *sst, uint8_t *key, int32_t keylen)
{
struct transform_inst *ti=sst;
{
struct transform_inst *ti=sst;
- memset(&ti->cryptkey,0,sizeof(ti->cryptkey));
- memset(&ti->mackey,0,sizeof(ti->mackey));
+ FILLZERO(ti->cryptkey);
+ FILLZERO(ti->mackey);
ti->keyed=False;
}
{
struct transform_inst *ti=sst;
uint8_t *padp;
- unsigned padlen;
+ int padlen;
int i;
uint32_t seqnum, skew;
uint8_t iv[16];
return 1;
}
+ if (buf->size < 4 + 16 + 16) {
+ *errmsg="msg too short";
+ return 1;
+ }
/* CBC */
memset(iv,0,16);
/* Assert bufsize is multiple of blocksize */
if (buf->size&0xf) {
*errmsg="msg not multiple of cipher blocksize";
+ return 1;
}
serpent_encrypt(&ti->cryptkey,iv,iv);
for (n=buf->start; n<buf->start+buf->size; n+=16)
{
struct transform_inst *st=sst;
- memset(st,0,sizeof(*st)); /* Destroy key material */
+ FILLZERO(*st); /* Destroy key material */
free(st);
}
return new_closure(&st->cl);
}
-init_module transform_module;
void transform_module(dict_t *dict)
{
struct keyInstance k;