Skip to content

Fix AES-256 key unwrap: select ECB cipher from master key length#43

Open
weiherelationalai wants to merge 2 commits into
mainfrom
fix-aes256-key-unwrap
Open

Fix AES-256 key unwrap: select ECB cipher from master key length#43
weiherelationalai wants to merge 2 commits into
mainfrom
fix-aes256-key-unwrap

Conversation

@weiherelationalai

Copy link
Copy Markdown

Production Snowflake stages can return a 32-byte queryStageMasterKey. The previous encrypt_aes_128_ecb / decrypt_aes_128_ecb functions hardcoded aes_128_ecb (16-byte key only) and returned "Invalid key size" for any 32-byte master key.

Replace with encrypt_aes_ecb / decrypt_aes_ecb that select aes_128_ecb for 16-byte keys and aes_256_ecb for 32-byte keys, matching the Snowflake CSE protocol. Also compute key_size in MaterialDescription from the actual decoded key length instead of hardcoding "128".

Both S3 and Azure KMS paths are updated.

Production Snowflake stages can return a 32-byte queryStageMasterKey.
The previous encrypt_aes_128_ecb / decrypt_aes_128_ecb functions
hardcoded aes_128_ecb (16-byte key only) and returned "Invalid key size"
for any 32-byte master key.

Replace with encrypt_aes_ecb / decrypt_aes_ecb that select aes_128_ecb
for 16-byte keys and aes_256_ecb for 32-byte keys, matching the
Snowflake CSE protocol. Also compute key_size in MaterialDescription
from the actual decoded key length instead of hardcoding "128".

Both S3 and Azure KMS paths are updated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
metrics 0.23.0 uses an unsafe lifetime extension in recorder/mod.rs
that a recent Rust compiler update (rust-lang/rust#141402) now rejects
with E0521. 0.23.1 is the patch release that fixes it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant