mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-10-24 04:09:07 +03:00
wc_AesGetKeySize() reports aes->keylen for a key a crypto callback device owns, so the MAX3266X ECB and CBC entry points, which take a zero return from it as proof of a key, ran the TPU on the wiped all-zero aes->key after a claim and returned success. They now check WC_AES_KEY_IS_SET() first and return MISSING_KEY, as the generic modes do. The check is only in effect with MAX3266X_CB, which is also the only MAX3266X build where a device can claim a key. The wipe before a claim left aes->tmp and aes->left, so the keystream of the old key buffered by CTR, CFB or OFB stayed in the context. The generic, ARM32 and PPC set-key now clear both as well. The docs told a callback to build a software schedule by calling wc_AesSetKey() with aes->devId set to INVALID_DEVID. Under WOLF_CRYPTO_CB_FIND the find callback can map INVALID_DEVID back to the same device, so that call recurses into the callback without end. The docs now ask for a devId no device is registered under, as the test devices in tests/api.c already use.