From a30a0f6d5c60ca373487e8db00b4199f9721f9ab Mon Sep 17 00:00:00 2001 From: Chih-Wei Fang Date: Sun, 15 Feb 2026 12:47:03 -0800 Subject: [PATCH 1/8] feat(vrl): add AES-GCM support to encrypt/decrypt functions --- Cargo.lock | 37 +++++++++++++++++++++++++ Cargo.toml | 2 ++ LICENSE-3rdparty.csv | 3 ++ src/stdlib/decrypt.rs | 61 +++++++++++++++++++++++++++++++++++++++++ src/stdlib/encrypt.rs | 64 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 167 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 1bc5989263..c3e7f12cb5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,6 +38,20 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "aes-siv" version = "0.7.0" @@ -1264,6 +1278,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gimli" version = "0.32.3" @@ -2555,6 +2579,18 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "portable-atomic" version = "1.13.0" @@ -4183,6 +4219,7 @@ name = "vrl" version = "0.30.0" dependencies = [ "aes", + "aes-gcm", "aes-siv", "ansi_term", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index ff311882ca..b474cda0ed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,6 +66,7 @@ stdlib = [ "datadog", "parsing", "dep:aes", + "dep:aes-gcm", "dep:aes-siv", "dep:base16", "dep:base62", @@ -219,6 +220,7 @@ zstd = { version = "0.13", default-features = false, features = ["wasm"], option # Cryptography aes = { version = "0.8", optional = true } +aes-gcm = { version = "0.10.3", optional = true } aes-siv = { version = "0.7.0", optional = true } chacha20poly1305 = { version = "0.10", optional = true } crypto_secretbox = { version = "0.1", features = ["salsa20"], optional = true } diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 5058e74e7c..f47f12ad88 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -3,6 +3,7 @@ addr2line,https://github.com/gimli-rs/addr2line,Apache-2.0 OR MIT,The addr2line adler2,https://github.com/oyvindln/adler2,0BSD OR MIT OR Apache-2.0,"Jonas Schievink , oyvindln " aead,https://github.com/RustCrypto/traits,MIT OR Apache-2.0,RustCrypto Developers aes,https://github.com/RustCrypto/block-ciphers,MIT OR Apache-2.0,RustCrypto Developers +aes-gcm,https://github.com/RustCrypto/AEADs,Apache-2.0 OR MIT,RustCrypto Developers aes-siv,https://github.com/RustCrypto/AEADs,Apache-2.0 OR MIT,RustCrypto Developers ahash,https://github.com/tkaitchuck/ahash,MIT OR Apache-2.0,Tom Kaitchuck aho-corasick,https://github.com/BurntSushi/aho-corasick,Unlicense OR MIT,Andrew Gallant @@ -113,6 +114,7 @@ futures-task,https://github.com/rust-lang/futures-rs,MIT OR Apache-2.0,The futur futures-util,https://github.com/rust-lang/futures-rs,MIT OR Apache-2.0,The futures-util Authors generic-array,https://github.com/fizyk20/generic-array,MIT,"Bartłomiej Kamiński , Aaron Trent " getrandom,https://github.com/rust-random/getrandom,MIT OR Apache-2.0,The Rand Project Developers +ghash,https://github.com/RustCrypto/universal-hashes,Apache-2.0 OR MIT,RustCrypto Developers gimli,https://github.com/gimli-rs/gimli,MIT OR Apache-2.0,The gimli Authors grok,https://github.com/mmastrac/grok,Apache-2.0,"Matt Mastracci , Michael Nitschinger " h2,https://github.com/hyperium/h2,MIT,"Carl Lerche , Sean McArthur " @@ -222,6 +224,7 @@ phf_shared,https://github.com/rust-phf/rust-phf,MIT,Steven Fackler poly1305,https://github.com/RustCrypto/universal-hashes,Apache-2.0 OR MIT,RustCrypto Developers +polyval,https://github.com/RustCrypto/universal-hashes,Apache-2.0 OR MIT,RustCrypto Developers portable-atomic,https://github.com/taiki-e/portable-atomic,Apache-2.0 OR MIT,The portable-atomic Authors potential_utf,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers powerfmt,https://github.com/jhpratt/powerfmt,MIT OR Apache-2.0,Jacob Pratt diff --git a/src/stdlib/decrypt.rs b/src/stdlib/decrypt.rs index 0eb28bc41c..91015816ca 100644 --- a/src/stdlib/decrypt.rs +++ b/src/stdlib/decrypt.rs @@ -3,8 +3,10 @@ use crate::value::Value; use aes::cipher::{ AsyncStreamCipher, BlockDecryptMut, KeyIvInit, StreamCipher, block_padding::{AnsiX923, Iso7816, Iso10126, Pkcs7}, + consts::{U12, U16}, generic_array::GenericArray, }; +use aes_gcm::{Aes128Gcm, Aes256Gcm, AesGcm}; use aes_siv::{Aes128SivAead, Aes256SivAead}; use cfb_mode::Decryptor as Cfb; use chacha20poly1305::{ChaCha20Poly1305, KeyInit, XChaCha20Poly1305, aead::Aead}; @@ -18,6 +20,12 @@ type Aes128Cbc = cbc::Decryptor; type Aes192Cbc = cbc::Decryptor; type Aes256Cbc = cbc::Decryptor; +type Aes192Gcm = AesGcm; + +type Aes128Gcm16 = AesGcm; +type Aes192Gcm16 = AesGcm; +type Aes256Gcm16 = AesGcm; + macro_rules! decrypt { ($algorithm:ty, $ciphertext:expr_2021, $key:expr_2021, $iv:expr_2021) => {{ let mut buffer = vec![0; $ciphertext.len()]; @@ -63,6 +71,17 @@ macro_rules! decrypt_stream { }}; } +macro_rules! decrypt_gcm { + ($algorithm:ty, $ciphertext:expr_2021, $key:expr_2021, $iv:expr_2021) => {{ + <$algorithm>::new(&GenericArray::from(get_key_bytes($key)?)) + .decrypt( + &GenericArray::from(get_iv_bytes($iv)?), + $ciphertext.as_ref(), + ) + .map_err(|e| format!("Decryption failed: {e}"))? + }}; +} + fn decrypt(ciphertext: Value, algorithm: &str, key: Value, iv: Value) -> Resolved { let ciphertext = ciphertext.try_bytes()?; @@ -99,6 +118,12 @@ fn decrypt(ciphertext: Value, algorithm: &str, key: Value, iv: Value) -> Resolve "AES-128-CBC-ISO10126" => decrypt_padded!(Aes128Cbc, Iso10126, ciphertext, key, iv), "AES-128-SIV" => decrypt_stream!(Aes128SivAead, ciphertext, key, iv), "AES-256-SIV" => decrypt_stream!(Aes256SivAead, ciphertext, key, iv), + "AES-128-GCM" => decrypt_gcm!(Aes128Gcm, ciphertext, key, iv), + "AES-192-GCM" => decrypt_gcm!(Aes192Gcm, ciphertext, key, iv), + "AES-256-GCM" => decrypt_gcm!(Aes256Gcm, ciphertext, key, iv), + "AES-128-GCM-16" => decrypt_gcm!(Aes128Gcm16, ciphertext, key, iv), + "AES-192-GCM-16" => decrypt_gcm!(Aes192Gcm16, ciphertext, key, iv), + "AES-256-GCM-16" => decrypt_gcm!(Aes256Gcm16, ciphertext, key, iv), "CHACHA20-POLY1305" => decrypt_stream!(ChaCha20Poly1305, ciphertext, key, iv), "XCHACHA20-POLY1305" => decrypt_stream!(XChaCha20Poly1305, ciphertext, key, iv), "XSALSA20-POLY1305" => decrypt_stream!(XSalsa20Poly1305, ciphertext, key, iv), @@ -447,6 +472,42 @@ mod tests { tdef: TypeDef::bytes().fallible(), } + aes_128_gcm { + args: func_args![ciphertext: value!(b"\xc2\xf1\x8b\t\xd5\x0c\xad/B\x08W\xcb\x13\xdb\xe2$\x96A\xcc\xb8T`+\x99f\x0cc/\x08B\x083\xb1m\xb8\x05"), algorithm: "AES-128-GCM", key: b"16_bytes_xxxxxxx", iv: b"12_bytes_xxx"], + want: Ok(value!("morethan1blockofdata")), + tdef: TypeDef::bytes().fallible(), + } + + aes_192_gcm { + args: func_args![ciphertext: value!(b",\x8fI\xe6\x15\x8c\xeb\x95lq}\xe52\xfc\x0e\x808\x8b@\xca\\\xe5\xd0uR\x9cS\x02\xf6\xad\xa1\xb2W\xf47\xe2"), algorithm: "AES-192-GCM", key: b"24_bytes_xxxxxxxxxxxxxxx", iv: b"12_bytes_xxx"], + want: Ok(value!("morethan1blockofdata")), + tdef: TypeDef::bytes().fallible(), + } + + aes_256_gcm { + args: func_args![ciphertext: value!(b"\xc7\x03\xe0\xbd\xf7=N\x8cg\xc5\x94\xa3[\xa0\x1b; type Aes192Cbc = cbc::Encryptor; type Aes256Cbc = cbc::Encryptor; +type Aes192Gcm = AesGcm; + +type Aes128Gcm16 = AesGcm; +type Aes192Gcm16 = AesGcm; +type Aes256Gcm16 = AesGcm; + pub(crate) fn get_key_bytes(key: Value) -> ExpressionResult<[u8; N]> { let bytes = key.try_bytes()?; if bytes.len() != N { @@ -89,6 +97,14 @@ macro_rules! encrypt_stream { }}; } +macro_rules! encrypt_gcm { + ($algorithm:ty, $plaintext:expr_2021, $key:expr_2021, $iv:expr_2021) => {{ + <$algorithm>::new(&GenericArray::from(get_key_bytes($key)?)) + .encrypt(&GenericArray::from(get_iv_bytes($iv)?), $plaintext.as_ref()) + .map_err(|e| format!("Encryption failed: {e}"))? + }}; +} + pub(crate) fn is_valid_algorithm(algorithm: &str) -> bool { matches!( algorithm, @@ -121,6 +137,12 @@ pub(crate) fn is_valid_algorithm(algorithm: &str) -> bool { | "AES-128-CBC-ISO10126" | "AES-128-SIV" | "AES-256-SIV" + | "AES-128-GCM" + | "AES-192-GCM" + | "AES-256-GCM" + | "AES-128-GCM-16" + | "AES-192-GCM-16" + | "AES-256-GCM-16" | "CHACHA20-POLY1305" | "XCHACHA20-POLY1305" | "XSALSA20-POLY1305" @@ -162,6 +184,12 @@ fn encrypt(plaintext: Value, algorithm: &str, key: Value, iv: Value) -> Resolved "AES-128-CBC-ISO10126" => encrypt_padded!(Aes128Cbc, Iso10126, plaintext, key, iv), "AES-128-SIV" => encrypt_stream!(Aes128SivAead, plaintext, key, iv), "AES-256-SIV" => encrypt_stream!(Aes256SivAead, plaintext, key, iv), + "AES-128-GCM" => encrypt_gcm!(Aes128Gcm, plaintext, key, iv), + "AES-192-GCM" => encrypt_gcm!(Aes192Gcm, plaintext, key, iv), + "AES-256-GCM" => encrypt_gcm!(Aes256Gcm, plaintext, key, iv), + "AES-128-GCM-16" => encrypt_gcm!(Aes128Gcm16, plaintext, key, iv), + "AES-192-GCM-16" => encrypt_gcm!(Aes192Gcm16, plaintext, key, iv), + "AES-256-GCM-16" => encrypt_gcm!(Aes256Gcm16, plaintext, key, iv), "CHACHA20-POLY1305" => encrypt_stream!(ChaCha20Poly1305, plaintext, key, iv), "XCHACHA20-POLY1305" => encrypt_stream!(XChaCha20Poly1305, plaintext, key, iv), "XSALSA20-POLY1305" => encrypt_stream!(XSalsa20Poly1305, plaintext, key, iv), @@ -509,6 +537,42 @@ mod tests { tdef: TypeDef::bytes().fallible(), } + aes_128_gcm { + args: func_args![plaintext: value!("morethan1blockofdata"), algorithm: "AES-128-GCM", key: b"16_bytes_xxxxxxx", iv: b"12_bytes_xxx"], + want: Ok(value!(b"\xc2\xf1\x8b\t\xd5\x0c\xad/B\x08W\xcb\x13\xdb\xe2$\x96A\xcc\xb8T`+\x99f\x0cc/\x08B\x083\xb1m\xb8\x05")), + tdef: TypeDef::bytes().fallible(), + } + + aes_192_gcm { + args: func_args![plaintext: value!("morethan1blockofdata"), algorithm: "AES-192-GCM", key: b"24_bytes_xxxxxxxxxxxxxxx", iv: b"12_bytes_xxx"], + want: Ok(value!(b",\x8fI\xe6\x15\x8c\xeb\x95lq}\xe52\xfc\x0e\x808\x8b@\xca\\\xe5\xd0uR\x9cS\x02\xf6\xad\xa1\xb2W\xf47\xe2")), + tdef: TypeDef::bytes().fallible(), + } + + aes_256_gcm { + args: func_args![plaintext: value!("morethan1blockofdata"), algorithm: "AES-256-GCM", key: b"32_bytes_xxxxxxxxxxxxxxxxxxxxxxx", iv: b"12_bytes_xxx"], + want: Ok(value!(b"\xc7\x03\xe0\xbd\xf7=N\x8cg\xc5\x94\xa3[\xa0\x1b Date: Sun, 15 Feb 2026 12:53:57 -0800 Subject: [PATCH 2/8] Update changelog Signed-off-by: Chih-Wei Fang --- changelog.d/1641.feature.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog.d/1641.feature.md diff --git a/changelog.d/1641.feature.md b/changelog.d/1641.feature.md new file mode 100644 index 0000000000..7b87fd1bb0 --- /dev/null +++ b/changelog.d/1641.feature.md @@ -0,0 +1,3 @@ +Added AES-GCM support to decrypt/encrypt functions. + +author: dodo0822 From e2c7192315f356543da84242192efa4b797373c8 Mon Sep 17 00:00:00 2001 From: Chih-Wei Fang Date: Wed, 13 May 2026 01:31:22 +0800 Subject: [PATCH 3/8] Update Cargo.lock --- Cargo.lock | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index f2188da263..755c240f1a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1330,6 +1330,16 @@ dependencies = [ "wasip3", ] +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gimli" version = "0.32.3" From 2928751acdc9082fbef7e2eb2b1d5b87782aa1ee Mon Sep 17 00:00:00 2001 From: Chih-Wei Fang Date: Wed, 13 May 2026 05:12:25 +0800 Subject: [PATCH 4/8] Add entries to usage --- src/stdlib/decrypt.rs | 6 ++++++ src/stdlib/encrypt.rs | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/stdlib/decrypt.rs b/src/stdlib/decrypt.rs index ed6894c1b8..37204075f0 100644 --- a/src/stdlib/decrypt.rs +++ b/src/stdlib/decrypt.rs @@ -176,6 +176,12 @@ impl Function for Decrypt { * AES-256-CBC-ISO10126 (key = 32 bytes, iv = 16 bytes) * AES-192-CBC-ISO10126 (key = 24 bytes, iv = 16 bytes) * AES-128-CBC-ISO10126 (key = 16 bytes, iv = 16 bytes) + * AES-128-GCM (key = 16 bytes, iv = 12 bytes) + * AES-192-GCM (key = 24 bytes, iv = 12 bytes) + * AES-256-GCM (key = 32 bytes, iv = 12 bytes) + * AES-128-GCM-16 (key = 16 bytes, iv = 16 bytes) + * AES-192-GCM-16 (key = 24 bytes, iv = 16 bytes) + * AES-256-GCM-16 (key = 32 bytes, iv = 16 bytes) * CHACHA20-POLY1305 (key = 32 bytes, iv = 12 bytes) * XCHACHA20-POLY1305 (key = 32 bytes, iv = 24 bytes) * XSALSA20-POLY1305 (key = 32 bytes, iv = 24 bytes) diff --git a/src/stdlib/encrypt.rs b/src/stdlib/encrypt.rs index 253aef2964..06350a1b06 100644 --- a/src/stdlib/encrypt.rs +++ b/src/stdlib/encrypt.rs @@ -242,6 +242,12 @@ impl Function for Encrypt { * AES-256-CBC-ISO10126 (key = 32 bytes, iv = 16 bytes) * AES-192-CBC-ISO10126 (key = 24 bytes, iv = 16 bytes) * AES-128-CBC-ISO10126 (key = 16 bytes, iv = 16 bytes) + * AES-128-GCM (key = 16 bytes, iv = 12 bytes) + * AES-192-GCM (key = 24 bytes, iv = 12 bytes) + * AES-256-GCM (key = 32 bytes, iv = 12 bytes) + * AES-128-GCM-16 (key = 16 bytes, iv = 16 bytes) + * AES-192-GCM-16 (key = 24 bytes, iv = 16 bytes) + * AES-256-GCM-16 (key = 32 bytes, iv = 16 bytes) * CHACHA20-POLY1305 (key = 32 bytes, iv = 12 bytes) * XCHACHA20-POLY1305 (key = 32 bytes, iv = 24 bytes) * XSALSA20-POLY1305 (key = 32 bytes, iv = 24 bytes) From 61c93c488da7212b03d240c060cc0e2ac1e7aab0 Mon Sep 17 00:00:00 2001 From: Pavlos Rontidis Date: Wed, 1 Jul 2026 13:16:38 -0400 Subject: [PATCH 5/8] fix checks --- LICENSE-3rdparty.csv | 46 +++++++++++++++---------------------- docs/generated/decrypt.json | 2 +- docs/generated/encrypt.json | 2 +- 3 files changed, 20 insertions(+), 30 deletions(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index dd3262d31e..d3244e6396 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -1,5 +1,4 @@ Component,Origin,License,Copyright -addr2line,https://github.com/gimli-rs/addr2line,Apache-2.0 OR MIT,The addr2line Authors adler2,https://github.com/oyvindln/adler2,0BSD OR MIT OR Apache-2.0,"Jonas Schievink , oyvindln " aead,https://github.com/RustCrypto/traits,MIT OR Apache-2.0,RustCrypto Developers aes,https://github.com/RustCrypto/block-ciphers,MIT OR Apache-2.0,RustCrypto Developers @@ -19,7 +18,6 @@ arbitrary,https://github.com/rust-fuzz/arbitrary,MIT OR Apache-2.0,"The Rust-Fuz arrayvec,https://github.com/bluss/arrayvec,MIT OR Apache-2.0,bluss async-trait,https://github.com/dtolnay/async-trait,MIT OR Apache-2.0,David Tolnay atomic-waker,https://github.com/smol-rs/atomic-waker,Apache-2.0 OR MIT,"Stjepan Glavina , Contributors to futures-rs" -backtrace,https://github.com/rust-lang/backtrace-rs,MIT OR Apache-2.0,The Rust Project Developers base16,https://github.com/thomcc/rust-base16,CC0-1.0,Thom Chiovoloni base62,https://github.com/fbernier/base62,MIT,"François Bernier , Chai T. Rex " base64,https://github.com/marshallpierce/rust-base64,MIT OR Apache-2.0,Marshall Pierce @@ -35,7 +33,6 @@ bumpalo,https://github.com/fitzgen/bumpalo,MIT OR Apache-2.0,Nick Fitzgerald , Joshua Landau " bytes,https://github.com/tokio-rs/bytes,MIT,"Carl Lerche , Sean McArthur " cbc,https://github.com/RustCrypto/block-modes,MIT OR Apache-2.0,RustCrypto Developers -cesu8,https://github.com/emk/cesu8-rs,Apache-2.0 OR MIT,Eric Kidd cfb-mode,https://github.com/RustCrypto/block-modes,MIT OR Apache-2.0,RustCrypto Developers cfg-if,https://github.com/rust-lang/cfg-if,MIT OR Apache-2.0,Alex Crichton chacha20,https://github.com/RustCrypto/stream-ciphers,MIT OR Apache-2.0,RustCrypto Developers @@ -90,7 +87,7 @@ doc-comment,https://github.com/GuillaumeGomez/doc-comment,MIT,Guillaume Gomez domain-macros,https://github.com/nlnetlabs/domain,BSD-3-Clause,NLnet Labs dyn-clone,https://github.com/dtolnay/dyn-clone,MIT OR Apache-2.0,David Tolnay -either,https://github.com/rayon-rs/either,MIT OR Apache-2.0,bluss +either,https://github.com/rayon-rs/either,MIT OR Apache-2.0,The either Authors email_address,https://github.com/johnstonskj/rust-email_address,MIT,Simon Johnston encode_unicode,https://github.com/tormol/encode_unicode,Apache-2.0 OR MIT,Torbjørn Birch Moltu encoding_rs,https://github.com/hsivonen/encoding_rs,(Apache-2.0 OR MIT) AND BSD-3-Clause,Henri Sivonen @@ -120,7 +117,6 @@ futures-util,https://github.com/rust-lang/futures-rs,MIT OR Apache-2.0,The futur generic-array,https://github.com/fizyk20/generic-array,MIT,"Bartłomiej Kamiński , Aaron Trent " getrandom,https://github.com/rust-random/getrandom,MIT OR Apache-2.0,The Rand Project Developers ghash,https://github.com/RustCrypto/universal-hashes,Apache-2.0 OR MIT,RustCrypto Developers -gimli,https://github.com/gimli-rs/gimli,MIT OR Apache-2.0,The gimli Authors grok,https://github.com/mmastrac/grok,Apache-2.0,"Matt Mastracci , Michael Nitschinger " h2,https://github.com/hyperium/h2,MIT,"Carl Lerche , Sean McArthur " half,https://github.com/VoidStarKat/half-rs,MIT OR Apache-2.0,Kathryn Long @@ -149,7 +145,6 @@ icu_normalizer_data,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X P icu_properties,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers icu_properties_data,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers icu_provider,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers -id-arena,https://github.com/fitzgen/id-arena,MIT OR Apache-2.0,"Nick Fitzgerald , Aleksey Kladov " idna,https://github.com/servo/rust-url,MIT OR Apache-2.0,The rust-url developers idna_adapter,https://github.com/hsivonen/idna_adapter,Apache-2.0 OR MIT,The rust-url developers indexmap,https://github.com/indexmap-rs/indexmap,Apache-2.0 OR MIT,The indexmap Authors @@ -164,14 +159,15 @@ itertools,https://github.com/rust-itertools/itertools,MIT OR Apache-2.0,bluss itoa,https://github.com/dtolnay/itoa,MIT OR Apache-2.0,David Tolnay jiff,https://github.com/BurntSushi/jiff,Unlicense OR MIT,Andrew Gallant jiff-static,https://github.com/BurntSushi/jiff,Unlicense OR MIT,Andrew Gallant -jni,https://github.com/jni-rs/jni-rs,MIT OR Apache-2.0,Josh Chase -jni-sys,https://github.com/sfackler/rust-jni-sys,MIT OR Apache-2.0,Steven Fackler +jni,https://github.com/jni-rs/jni-rs,MIT OR Apache-2.0,jni team +jni-macros,https://github.com/jni-rs/jni-rs,MIT OR Apache-2.0,The jni-macros Authors +jni-sys,https://github.com/jni-rs/jni-sys,MIT OR Apache-2.0,"Steven Fackler , Robert Bragg " +jni-sys-macros,https://github.com/jni-rs/jni-sys,MIT OR Apache-2.0,Robert Bragg js-sys,https://github.com/wasm-bindgen/wasm-bindgen/tree/master/crates/js-sys,MIT OR Apache-2.0,The wasm-bindgen Developers jsonschema,https://github.com/Stranger6667/jsonschema,MIT,Dmitry Dygalo keccak,https://github.com/RustCrypto/sponges,Apache-2.0 OR MIT,RustCrypto Developers lalrpop-util,https://github.com/lalrpop/lalrpop,Apache-2.0 OR MIT,Niko Matsakis lazy_static,https://github.com/rust-lang-nursery/lazy-static.rs,MIT OR Apache-2.0,Marvin Löbel -leb128fmt,https://github.com/bluk/leb128fmt,MIT OR Apache-2.0,Bryant Luk libc,https://github.com/rust-lang/libc,MIT OR Apache-2.0,The Rust Project Developers libredox,https://gitlab.redox-os.org/redox-os/libredox,MIT,4lDO2 <4lDO2@protonmail.com> linux-raw-sys,https://github.com/sunfishcode/linux-raw-sys,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Dan Gohman @@ -204,7 +200,6 @@ num-traits,https://github.com/rust-num/num-traits,MIT OR Apache-2.0,The Rust Pro objc2,https://github.com/madsmtm/objc2,MIT,Mads Marquart objc2-encode,https://github.com/madsmtm/objc2,MIT,Mads Marquart objc2-foundation,https://github.com/madsmtm/objc2,MIT,The objc2-foundation Authors -object,https://github.com/gimli-rs/object,Apache-2.0 OR MIT,The object Authors octseq,https://github.com/NLnetLabs/octets,BSD-3-Clause,NLnet Labs ofb,https://github.com/RustCrypto/block-modes,MIT OR Apache-2.0,RustCrypto Developers once_cell,https://github.com/matklad/once_cell,MIT OR Apache-2.0,Aleksey Kladov @@ -236,7 +231,6 @@ portable-atomic-util,https://github.com/taiki-e/portable-atomic-util,Apache-2.0 potential_utf,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers ppv-lite86,https://github.com/cryptocorrosion/cryptocorrosion,MIT OR Apache-2.0,The CryptoCorrosion Contributors prettydiff,https://github.com/romankoblov/prettydiff,MIT,Roman Koblov -prettyplease,https://github.com/dtolnay/prettyplease,MIT OR Apache-2.0,David Tolnay prettytable-rs,https://github.com/phsym/prettytable-rs,BSD-3-Clause,Pierre-Henri Symoneaux proc-macro-error-attr2,https://github.com/GnomedDev/proc-macro-error-2,MIT OR Apache-2.0,"CreepySkeleton , GnomedDev " proc-macro-error2,https://github.com/GnomedDev/proc-macro-error-2,MIT OR Apache-2.0,"CreepySkeleton , GnomedDev " @@ -280,7 +274,6 @@ retry-policies,https://github.com/TrueLayer/retry-policies,MIT OR Apache-2.0,Luc ring,https://github.com/briansmith/ring,Apache-2.0 AND ISC,The ring Authors roxmltree,https://github.com/RazrFalcon/roxmltree,MIT OR Apache-2.0,Yevhenii Reizner rust_decimal,https://github.com/paupino/rust-decimal,MIT,Paul Mason -rustc-demangle,https://github.com/rust-lang/rustc-demangle,MIT OR Apache-2.0,Alex Crichton rustc-hash,https://github.com/rust-lang/rustc-hash,Apache-2.0 OR MIT,The Rust Project Developers rustix,https://github.com/bytecodealliance/rustix,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,"Dan Gohman , Jakub Konka " rustls,https://github.com/rustls/rustls,Apache-2.0 OR ISC OR MIT,The rustls Authors @@ -297,7 +290,6 @@ scopeguard,https://github.com/bluss/scopeguard,MIT OR Apache-2.0,bluss seahash,https://gitlab.redox-os.org/redox-os/seahash,MIT,"ticki , Tom Almeida " security-framework,https://github.com/kornelski/rust-security-framework,MIT OR Apache-2.0,"Steven Fackler , Kornel " security-framework-sys,https://github.com/kornelski/rust-security-framework,MIT OR Apache-2.0,"Steven Fackler , Kornel " -semver,https://github.com/dtolnay/semver,MIT OR Apache-2.0,David Tolnay serde,https://github.com/serde-rs/serde,MIT OR Apache-2.0,"Erick Tryzelaar , David Tolnay " serde_core,https://github.com/serde-rs/serde,MIT OR Apache-2.0,"Erick Tryzelaar , David Tolnay " serde_derive,https://github.com/serde-rs/serde,MIT OR Apache-2.0,"Erick Tryzelaar , David Tolnay " @@ -308,6 +300,7 @@ sha1,https://github.com/RustCrypto/hashes,MIT OR Apache-2.0,RustCrypto Developer sha2,https://github.com/RustCrypto/hashes,MIT OR Apache-2.0,RustCrypto Developers sha3,https://github.com/RustCrypto/hashes,MIT OR Apache-2.0,RustCrypto Developers simd-adler32,https://github.com/mcountryman/simd-adler32,MIT,Marvin Countryman +simd_cesu8,https://github.com/seancroach/simd_cesu8,Apache-2.0 OR MIT,Sean C. Roach simdutf8,https://github.com/rusticstuff/simdutf8,MIT OR Apache-2.0,Hans Kratz siphasher,https://github.com/jedisct1/rust-siphash,MIT OR Apache-2.0,Frank Denis slab,https://github.com/tokio-rs/slab,MIT,Carl Lerche @@ -356,7 +349,6 @@ unicode-general-category,https://github.com/yeslogic/unicode-general-category,Ap unicode-ident,https://github.com/dtolnay/unicode-ident,(MIT OR Apache-2.0) AND Unicode-3.0,David Tolnay unicode-segmentation,https://github.com/unicode-rs/unicode-segmentation,MIT OR Apache-2.0,"kwantam , Manish Goregaokar " unicode-width,https://github.com/unicode-rs/unicode-width,MIT OR Apache-2.0,"kwantam , Manish Goregaokar " -unicode-xid,https://github.com/unicode-rs/unicode-xid,MIT OR Apache-2.0,"erick.tryzelaar , kwantam , Manish Goregaokar " universal-hash,https://github.com/RustCrypto/traits,MIT OR Apache-2.0,RustCrypto Developers unsafe-libyaml,https://github.com/dtolnay/unsafe-libyaml,MIT,David Tolnay untrusted,https://github.com/briansmith/untrusted,ISC,Brian Smith @@ -373,16 +365,11 @@ wait-timeout,https://github.com/alexcrichton/wait-timeout,MIT OR Apache-2.0,Alex want,https://github.com/seanmonstar/want,MIT,Sean McArthur wasi,https://github.com/bytecodealliance/wasi,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,The Cranelift Project Developers wasip2,https://github.com/bytecodealliance/wasi-rs,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,The wasip2 Authors -wasip3,https://github.com/bytecodealliance/wasi-rs,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,The wasip3 Authors wasm-bindgen,https://github.com/wasm-bindgen/wasm-bindgen,MIT OR Apache-2.0,The wasm-bindgen Developers -wasm-bindgen-backend,https://github.com/wasm-bindgen/wasm-bindgen/tree/master/crates/backend,MIT OR Apache-2.0,The wasm-bindgen Developers wasm-bindgen-futures,https://github.com/wasm-bindgen/wasm-bindgen/tree/master/crates/futures,MIT OR Apache-2.0,The wasm-bindgen Developers wasm-bindgen-macro,https://github.com/wasm-bindgen/wasm-bindgen/tree/master/crates/macro,MIT OR Apache-2.0,The wasm-bindgen Developers wasm-bindgen-macro-support,https://github.com/wasm-bindgen/wasm-bindgen/tree/master/crates/macro-support,MIT OR Apache-2.0,The wasm-bindgen Developers wasm-bindgen-shared,https://github.com/wasm-bindgen/wasm-bindgen/tree/master/crates/shared,MIT OR Apache-2.0,The wasm-bindgen Developers -wasm-encoder,https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasm-encoder,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Nick Fitzgerald -wasm-metadata,https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasm-metadata,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,The wasm-metadata Authors -wasmparser,https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasmparser,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Yury Delendik wasmtimer,https://github.com/whizsid/wasmtimer-rs,MIT,"WhizSid , Pierre Krieger " web-sys,https://github.com/wasm-bindgen/wasm-bindgen/tree/master/crates/web-sys,MIT OR Apache-2.0,The wasm-bindgen Developers web-time,https://github.com/daxpedda/web-time,MIT OR Apache-2.0,The web-time Authors @@ -391,30 +378,33 @@ winapi,https://github.com/retep998/winapi-rs,MIT OR Apache-2.0,Peter Atashian winapi-util,https://github.com/BurntSushi/winapi-util,Unlicense OR MIT,Andrew Gallant winapi-x86_64-pc-windows-gnu,https://github.com/retep998/winapi-rs,MIT OR Apache-2.0,Peter Atashian -windows-core,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows-core,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-core Authors windows-implement,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-implement Authors windows-interface,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-interface Authors -windows-link,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft windows-link,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-link Authors -windows-result,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft -windows-strings,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows-result,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-result Authors +windows-strings,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-strings Authors windows-sys,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft windows-sys,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-sys Authors windows-targets,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows-targets,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-targets Authors windows_aarch64_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_aarch64_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_aarch64_gnullvm Authors windows_aarch64_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_aarch64_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_aarch64_msvc Authors windows_i686_gnu,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_i686_gnu,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_i686_gnu Authors windows_i686_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_i686_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_i686_gnullvm Authors windows_i686_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_i686_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_i686_msvc Authors windows_x86_64_gnu,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_x86_64_gnu,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_x86_64_gnu Authors windows_x86_64_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_x86_64_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_x86_64_gnullvm Authors windows_x86_64_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_x86_64_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_x86_64_msvc Authors wit-bindgen,https://github.com/bytecodealliance/wit-bindgen,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Alex Crichton -wit-bindgen-core,https://github.com/bytecodealliance/wit-bindgen,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Alex Crichton -wit-bindgen-rust,https://github.com/bytecodealliance/wit-bindgen,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Alex Crichton -wit-bindgen-rust-macro,https://github.com/bytecodealliance/wit-bindgen,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Alex Crichton -wit-component,https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wit-component,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Peter Huene -wit-parser,https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wit-parser,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Alex Crichton woothee,https://github.com/woothee/woothee-rust,Apache-2.0,hhatto writeable,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers xxhash-rust,https://github.com/DoumanAsh/xxhash-rust,BSL-1.0,Douman diff --git a/docs/generated/decrypt.json b/docs/generated/decrypt.json index 3e9a7ca1a4..4cc66e512f 100644 --- a/docs/generated/decrypt.json +++ b/docs/generated/decrypt.json @@ -2,7 +2,7 @@ "anchor": "decrypt", "name": "decrypt", "category": "Cryptography", - "description": "Decrypts a string with a symmetric encryption algorithm.\n\nSupported Algorithms:\n\n* AES-256-CFB (key = 32 bytes, iv = 16 bytes)\n* AES-192-CFB (key = 24 bytes, iv = 16 bytes)\n* AES-128-CFB (key = 16 bytes, iv = 16 bytes)\n* AES-256-OFB (key = 32 bytes, iv = 16 bytes)\n* AES-192-OFB (key = 24 bytes, iv = 16 bytes)\n* AES-128-OFB (key = 16 bytes, iv = 16 bytes)\n* AES-128-SIV (key = 32 bytes, iv = 16 bytes)\n* AES-256-SIV (key = 64 bytes, iv = 16 bytes)\n* Deprecated - AES-256-CTR (key = 32 bytes, iv = 16 bytes)\n* Deprecated - AES-192-CTR (key = 24 bytes, iv = 16 bytes)\n* Deprecated - AES-128-CTR (key = 16 bytes, iv = 16 bytes)\n* AES-256-CTR-LE (key = 32 bytes, iv = 16 bytes)\n* AES-192-CTR-LE (key = 24 bytes, iv = 16 bytes)\n* AES-128-CTR-LE (key = 16 bytes, iv = 16 bytes)\n* AES-256-CTR-BE (key = 32 bytes, iv = 16 bytes)\n* AES-192-CTR-BE (key = 24 bytes, iv = 16 bytes)\n* AES-128-CTR-BE (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-PKCS7 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-PKCS7 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-PKCS7 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ANSIX923 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ANSIX923 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ANSIX923 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ISO7816 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ISO7816 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ISO7816 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ISO10126 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ISO10126 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ISO10126 (key = 16 bytes, iv = 16 bytes)\n* CHACHA20-POLY1305 (key = 32 bytes, iv = 12 bytes)\n* XCHACHA20-POLY1305 (key = 32 bytes, iv = 24 bytes)\n* XSALSA20-POLY1305 (key = 32 bytes, iv = 24 bytes)", + "description": "Decrypts a string with a symmetric encryption algorithm.\n\nSupported Algorithms:\n\n* AES-256-CFB (key = 32 bytes, iv = 16 bytes)\n* AES-192-CFB (key = 24 bytes, iv = 16 bytes)\n* AES-128-CFB (key = 16 bytes, iv = 16 bytes)\n* AES-256-OFB (key = 32 bytes, iv = 16 bytes)\n* AES-192-OFB (key = 24 bytes, iv = 16 bytes)\n* AES-128-OFB (key = 16 bytes, iv = 16 bytes)\n* AES-128-SIV (key = 32 bytes, iv = 16 bytes)\n* AES-256-SIV (key = 64 bytes, iv = 16 bytes)\n* Deprecated - AES-256-CTR (key = 32 bytes, iv = 16 bytes)\n* Deprecated - AES-192-CTR (key = 24 bytes, iv = 16 bytes)\n* Deprecated - AES-128-CTR (key = 16 bytes, iv = 16 bytes)\n* AES-256-CTR-LE (key = 32 bytes, iv = 16 bytes)\n* AES-192-CTR-LE (key = 24 bytes, iv = 16 bytes)\n* AES-128-CTR-LE (key = 16 bytes, iv = 16 bytes)\n* AES-256-CTR-BE (key = 32 bytes, iv = 16 bytes)\n* AES-192-CTR-BE (key = 24 bytes, iv = 16 bytes)\n* AES-128-CTR-BE (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-PKCS7 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-PKCS7 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-PKCS7 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ANSIX923 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ANSIX923 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ANSIX923 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ISO7816 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ISO7816 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ISO7816 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ISO10126 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ISO10126 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ISO10126 (key = 16 bytes, iv = 16 bytes)\n* AES-128-GCM (key = 16 bytes, iv = 12 bytes)\n* AES-192-GCM (key = 24 bytes, iv = 12 bytes)\n* AES-256-GCM (key = 32 bytes, iv = 12 bytes)\n* AES-128-GCM-16 (key = 16 bytes, iv = 16 bytes)\n* AES-192-GCM-16 (key = 24 bytes, iv = 16 bytes)\n* AES-256-GCM-16 (key = 32 bytes, iv = 16 bytes)\n* CHACHA20-POLY1305 (key = 32 bytes, iv = 12 bytes)\n* XCHACHA20-POLY1305 (key = 32 bytes, iv = 24 bytes)\n* XSALSA20-POLY1305 (key = 32 bytes, iv = 24 bytes)", "arguments": [ { "name": "ciphertext", diff --git a/docs/generated/encrypt.json b/docs/generated/encrypt.json index 6d4268bbfe..cc7f6bb4d6 100644 --- a/docs/generated/encrypt.json +++ b/docs/generated/encrypt.json @@ -2,7 +2,7 @@ "anchor": "encrypt", "name": "encrypt", "category": "Cryptography", - "description": "Encrypts a string with a symmetric encryption algorithm.\n\nSupported Algorithms:\n\n* AES-256-CFB (key = 32 bytes, iv = 16 bytes)\n* AES-192-CFB (key = 24 bytes, iv = 16 bytes)\n* AES-128-CFB (key = 16 bytes, iv = 16 bytes)\n* AES-256-OFB (key = 32 bytes, iv = 16 bytes)\n* AES-192-OFB (key = 24 bytes, iv = 16 bytes)\n* AES-128-OFB (key = 16 bytes, iv = 16 bytes)\n* AES-128-SIV (key = 32 bytes, iv = 16 bytes)\n* AES-256-SIV (key = 64 bytes, iv = 16 bytes)\n* Deprecated - AES-256-CTR (key = 32 bytes, iv = 16 bytes)\n* Deprecated - AES-192-CTR (key = 24 bytes, iv = 16 bytes)\n* Deprecated - AES-128-CTR (key = 16 bytes, iv = 16 bytes)\n* AES-256-CTR-LE (key = 32 bytes, iv = 16 bytes)\n* AES-192-CTR-LE (key = 24 bytes, iv = 16 bytes)\n* AES-128-CTR-LE (key = 16 bytes, iv = 16 bytes)\n* AES-256-CTR-BE (key = 32 bytes, iv = 16 bytes)\n* AES-192-CTR-BE (key = 24 bytes, iv = 16 bytes)\n* AES-128-CTR-BE (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-PKCS7 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-PKCS7 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-PKCS7 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ANSIX923 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ANSIX923 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ANSIX923 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ISO7816 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ISO7816 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ISO7816 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ISO10126 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ISO10126 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ISO10126 (key = 16 bytes, iv = 16 bytes)\n* CHACHA20-POLY1305 (key = 32 bytes, iv = 12 bytes)\n* XCHACHA20-POLY1305 (key = 32 bytes, iv = 24 bytes)\n* XSALSA20-POLY1305 (key = 32 bytes, iv = 24 bytes)", + "description": "Encrypts a string with a symmetric encryption algorithm.\n\nSupported Algorithms:\n\n* AES-256-CFB (key = 32 bytes, iv = 16 bytes)\n* AES-192-CFB (key = 24 bytes, iv = 16 bytes)\n* AES-128-CFB (key = 16 bytes, iv = 16 bytes)\n* AES-256-OFB (key = 32 bytes, iv = 16 bytes)\n* AES-192-OFB (key = 24 bytes, iv = 16 bytes)\n* AES-128-OFB (key = 16 bytes, iv = 16 bytes)\n* AES-128-SIV (key = 32 bytes, iv = 16 bytes)\n* AES-256-SIV (key = 64 bytes, iv = 16 bytes)\n* Deprecated - AES-256-CTR (key = 32 bytes, iv = 16 bytes)\n* Deprecated - AES-192-CTR (key = 24 bytes, iv = 16 bytes)\n* Deprecated - AES-128-CTR (key = 16 bytes, iv = 16 bytes)\n* AES-256-CTR-LE (key = 32 bytes, iv = 16 bytes)\n* AES-192-CTR-LE (key = 24 bytes, iv = 16 bytes)\n* AES-128-CTR-LE (key = 16 bytes, iv = 16 bytes)\n* AES-256-CTR-BE (key = 32 bytes, iv = 16 bytes)\n* AES-192-CTR-BE (key = 24 bytes, iv = 16 bytes)\n* AES-128-CTR-BE (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-PKCS7 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-PKCS7 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-PKCS7 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ANSIX923 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ANSIX923 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ANSIX923 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ISO7816 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ISO7816 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ISO7816 (key = 16 bytes, iv = 16 bytes)\n* AES-256-CBC-ISO10126 (key = 32 bytes, iv = 16 bytes)\n* AES-192-CBC-ISO10126 (key = 24 bytes, iv = 16 bytes)\n* AES-128-CBC-ISO10126 (key = 16 bytes, iv = 16 bytes)\n* AES-128-GCM (key = 16 bytes, iv = 12 bytes)\n* AES-192-GCM (key = 24 bytes, iv = 12 bytes)\n* AES-256-GCM (key = 32 bytes, iv = 12 bytes)\n* AES-128-GCM-16 (key = 16 bytes, iv = 16 bytes)\n* AES-192-GCM-16 (key = 24 bytes, iv = 16 bytes)\n* AES-256-GCM-16 (key = 32 bytes, iv = 16 bytes)\n* CHACHA20-POLY1305 (key = 32 bytes, iv = 12 bytes)\n* XCHACHA20-POLY1305 (key = 32 bytes, iv = 24 bytes)\n* XSALSA20-POLY1305 (key = 32 bytes, iv = 24 bytes)", "arguments": [ { "name": "plaintext", From 2ecfcc1fc466825c1161f9142086ee68218a7479 Mon Sep 17 00:00:00 2001 From: Pavlos Rontidis Date: Wed, 1 Jul 2026 13:27:59 -0400 Subject: [PATCH 6/8] fix(wasm): add missing getrandom 0.2 wasm_js override and normalize aliases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit aes-siv 0.7, crypto_secretbox 0.1, and ipcrypt-rs 0.9 pull in getrandom 0.2 (via aead 0.5 → rand_core 0.6), which requires the "js" feature for wasm32-unknown-unknown builds. Alias naming is now versioned consistently: getrandom02/03 for legacy versions, plain getrandom for the current 0.4. --- Cargo.lock | 1 + Cargo.toml | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 57b4b8e536..d46a3e09fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4472,6 +4472,7 @@ dependencies = [ "exitcode", "fancy-regex", "flate2", + "getrandom 0.2.17", "getrandom 0.3.4", "getrandom 0.4.3", "grok", diff --git a/Cargo.toml b/Cargo.toml index b0734a2bd5..df250c38d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -312,8 +312,9 @@ jsonschema = { version = "0.38.1", default-features = false } # Dependencies used for WASM [target.'cfg(target_arch = "wasm32")'.dependencies] -getrandom = { version = "0.3", features = ["wasm_js"] } -getrandom04 = { package = "getrandom", version = "0.4", features = ["wasm_js"] } +getrandom02 = { package = "getrandom", version = "0.2", features = ["js"] } +getrandom03 = { package = "getrandom", version = "0.3", features = ["wasm_js"] } +getrandom = { package = "getrandom", version = "0.4", features = ["wasm_js"] } uuid = { version = "1", features = ["v4", "v7", "js"], optional = true } [dev-dependencies] From c9da46788c898b534b1d69a45caf9f557e5a745a Mon Sep 17 00:00:00 2001 From: Pavlos Rontidis Date: Wed, 1 Jul 2026 13:31:45 -0400 Subject: [PATCH 7/8] chore: link wasm getrandom overrides to tracking issue #1845 --- Cargo.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index df250c38d9..6c06d3d5c3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -312,6 +312,9 @@ jsonschema = { version = "0.38.1", default-features = false } # Dependencies used for WASM [target.'cfg(target_arch = "wasm32")'.dependencies] +# Three getrandom overrides are needed because aes-siv/crypto_secretbox/ipcrypt-rs (aead 0.5), +# rand 0.9, and the new RustCrypto stack (aead 0.6) each pin a different major version. +# Track consolidation: https://github.com/vectordotdev/vrl/issues/1845 getrandom02 = { package = "getrandom", version = "0.2", features = ["js"] } getrandom03 = { package = "getrandom", version = "0.3", features = ["wasm_js"] } getrandom = { package = "getrandom", version = "0.4", features = ["wasm_js"] } From 4e60cffe6637ddfe430a935d8272245d90e57d24 Mon Sep 17 00:00:00 2001 From: Pavlos Rontidis Date: Wed, 1 Jul 2026 13:38:36 -0400 Subject: [PATCH 8/8] edit changelog --- changelog.d/1641.feature.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/1641.feature.md b/changelog.d/1641.feature.md index 7b87fd1bb0..f8d8319a21 100644 --- a/changelog.d/1641.feature.md +++ b/changelog.d/1641.feature.md @@ -1,3 +1,3 @@ Added AES-GCM support to decrypt/encrypt functions. -author: dodo0822 +authors: dodo0822