You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "dmitry-chirkov-dremio (via GitHub)" <gi...@apache.org> on 2026/10/14 17:50:48 UTC
[I] [C++][Gandiva] Modernize AES functions: add authenticated encryption (CBC/GCM) via ENCRYPT/DECRYPT [arrow]
dmitry-chirkov-dremio opened a new issue, #53776:
URL: https://github.com/apache/arrow/issues/53776
### Describe the enhancement requested
### Describe the enhancement requested
Gandiva's `aes_encrypt` / `aes_decrypt` (ARROW-14431) support only AES-ECB and operate on VARCHAR. ECB is deterministic and unauthenticated: identical plaintext blocks give identical ciphertext, there is no IV, and tampering goes undetected. VARCHAR is also a poor fit for ciphertext, which is arbitrary bytes.
This adds binary `encrypt` / `decrypt` functions with modern cipher modes:
encrypt(data, key, mode)
encrypt(data, key, mode, iv)
encrypt(data, key, mode, iv, aad) -- decrypt has the same overloads
All arguments and results are `binary`.
- Modes: `AES-ECB`, `AES-CBC` (PKCS#7 by default, `-NONE` variants), `AES-GCM`; 16/24/32-byte keys.
- GCM: caller-supplied nonce and optional AAD. Output is `ciphertext || 16-byte tag`; `decrypt` verifies the tag and errors on any key, IV, AAD or ciphertext mismatch.
- IV and AAD are caller-managed and not embedded in the output. A NULL argument yields NULL. Failures are reported as Gandiva function errors with the OpenSSL diagnostic.
- The registry functions `aes_encrypt` / `aes_decrypt` keep their signatures and output and are routed through the new implementation. They stay ECB-only and are not recommended for new use.
Testing: all modes and key sizes, invalid key/IV/padding, GCM tag and AAD mismatch, block-aligned inputs, and known-answer vectors from the GCM specification (McGrew and Viega, test cases 4-6; 12-, 8- and 60-byte IVs).
Related: #50522 (output sizing in the current `aes_encrypt` stub; the new implementation sizes buffers independently of key length), #45693, #29995.
A PR will follow.
### Component(s)
C++, Gandiva
### Component(s)
C++, Gandiva
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@arrow.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] [C++][Gandiva] Modernize AES functions: add authenticated encryption (CBC/GCM) via ENCRYPT/DECRYPT [arrow]
Posted by "dmitry-chirkov-dremio (via GitHub)" <gi...@apache.org>.
dmitry-chirkov-dremio commented on issue #53776:
URL: https://github.com/apache/arrow/issues/53776#issuecomment-6174722634
take
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org