add cfb8-aes modes
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user