add cfb8-aes modes

This commit is contained in:
Love Hornquist Astrand
2010-06-03 17:20:40 -07:00
parent efa5a314a8
commit 91020dd11d
10 changed files with 360 additions and 9 deletions

View File

@@ -119,3 +119,26 @@ AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
}
}
}
void
AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
unsigned long size, const AES_KEY *key,
unsigned char *iv, int forward_encrypt)
{
int i;
for (i = 0; i < size; i++) {
unsigned char tmp[AES_BLOCK_SIZE + 1];
memcpy(tmp, iv, AES_BLOCK_SIZE);
AES_encrypt(iv, iv, key);
if (!forward_encrypt) {
tmp[AES_BLOCK_SIZE] = in[i];
}
out[i] = in[i] ^ iv[0];
if (forward_encrypt) {
tmp[AES_BLOCK_SIZE] = out[i];
}
memcpy(iv, &tmp[1], AES_BLOCK_SIZE);
}
}