F-11201: always use AES encryption schedule for AES-OFB key setup

pull/265/head
Chris Conlon 2026-08-24 14:57:37 -06:00
parent 44be422765
commit a0e320685d
2 changed files with 21 additions and 1 deletions

View File

@ -71,6 +71,7 @@ Java_com_wolfssl_wolfcrypt_AesOfb_native_1set_1key_1internal(
byte* key = NULL;
byte* iv = NULL;
word32 keySz = 0;
(void)opmode;
aes = (Aes*) getNativeStruct(env, this);
if ((*env)->ExceptionOccurred(env)) {
@ -87,7 +88,7 @@ Java_com_wolfssl_wolfcrypt_AesOfb_native_1set_1key_1internal(
}
if (ret == 0) {
ret = wc_AesSetKey(aes, key, keySz, iv, opmode);
ret = wc_AesSetKey(aes, key, keySz, iv, AES_ENCRYPTION);
}
if (ret != 0) {

View File

@ -207,6 +207,25 @@ public class AesOfbTest {
aesOfb.releaseNativeStruct();
}
/**
* A DECRYPT_MODE key schedule must still recover ciphertext produced
* under ENCRYPT_MODE.
*/
@Test
public void aes128OfbDecryptModeSetKeyRoundTrip() {
AesOfb enc = new AesOfb();
enc.setKey(KEY_128, IV_128, AesOfb.ENCRYPT_MODE);
byte[] ciphertext = enc.encrypt(PLAINTEXT_128);
assertArrayEquals(CIPHERTEXT_128, ciphertext);
enc.releaseNativeStruct();
AesOfb dec = new AesOfb();
dec.setKey(KEY_128, IV_128, AesOfb.DECRYPT_MODE);
byte[] decrypted = dec.decrypt(ciphertext);
assertArrayEquals(PLAINTEXT_128, decrypted);
dec.releaseNativeStruct();
}
@Test
public void aes128OfbLongDataTest() {
AesOfb aesOfb = new AesOfb();