Skip to content

Commit e608502

Browse files
committed
refactor: upgrade aes-gcm to 0.11.0
Updates aes-gcm code to move from crate version 0.10.3 to 0.11.0.
1 parent 2c3b558 commit e608502

6 files changed

Lines changed: 64 additions & 61 deletions

File tree

Cargo.lock

Lines changed: 44 additions & 44 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ test-port-allocator = { path = "crates/test-port-allocator" }
7979
test-utils = { path = "crates/test-utils" }
8080
threshold-signatures = { path = "crates/threshold-signatures" }
8181

82-
aes-gcm = "0.10.3"
82+
aes-gcm = "0.11.0"
8383
anyhow = "1.0.102"
8484
assert_matches = "1.5.0"
8585
async-trait = "0.1.89"

crates/node/src/db.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use aes_gcm::aead::Aead;
2-
use aes_gcm::{AeadCore, Aes128Gcm, AesGcm, KeyInit};
1+
use aes_gcm::aead::{Aead, Generate, Nonce};
2+
use aes_gcm::{Aes128Gcm, AesGcm, KeyInit};
33
use rocksdb::IteratorMode;
44
use std::collections::BTreeSet;
55
use std::fmt::Display;
@@ -67,7 +67,7 @@ impl Display for DBCol {
6767

6868
/// Encrypts a single value with AES-GCM. This encryption is randomized.
6969
pub fn encrypt(cipher: &Aes128Gcm, plaintext: &[u8]) -> Vec<u8> {
70-
let nonce = aes_gcm::Aes128Gcm::generate_nonce(&mut rand::thread_rng());
70+
let nonce = Nonce::<Aes128Gcm>::generate();
7171
let ciphertext = cipher.encrypt(&nonce, plaintext).unwrap();
7272
[nonce.as_ref(), ciphertext.as_slice()].concat()
7373
}
@@ -78,10 +78,11 @@ pub fn decrypt(cipher: &Aes128Gcm, ciphertext: &[u8]) -> anyhow::Result<Vec<u8>>
7878
if ciphertext.len() < NONCE_LEN {
7979
return Err(anyhow::anyhow!("ciphertext is too short"));
8080
}
81-
let nonce = &ciphertext[..NONCE_LEN];
81+
let nonce = Nonce::<Aes128Gcm>::try_from(&ciphertext[..NONCE_LEN])
82+
.map_err(|_| anyhow::anyhow!("invalid nonce length"))?;
8283
let ciphertext = &ciphertext[NONCE_LEN..];
8384
let data = cipher
84-
.decrypt(nonce.into(), ciphertext)
85+
.decrypt(&nonce, ciphertext)
8586
.map_err(|_| anyhow::anyhow!("decryption failed"))?;
8687
Ok(data)
8788
}

crates/node/src/migration_service/web/encryption.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1+
use crate::config::AesKey256;
12
use aes_gcm::{
2-
AeadCore, Aes256Gcm, KeyInit,
3-
aead::{Aead, OsRng},
3+
Aes256Gcm, KeyInit,
4+
aead::{Aead, Generate, Nonce},
45
};
56

6-
use crate::config::AesKey256;
7-
87
const NONCE_LEN: usize = 12;
98

109
pub(crate) fn encrypt_bytes(key: &AesKey256, plaintext: &[u8]) -> anyhow::Result<Vec<u8>> {
1110
let cipher = Aes256Gcm::new(key.into());
12-
let nonce = Aes256Gcm::generate_nonce(&mut OsRng);
11+
let nonce = Nonce::<Aes256Gcm>::generate();
1312
let ciphertext = cipher
1413
.encrypt(&nonce, plaintext)
1514
.map_err(|err| anyhow::anyhow!("encryption failed: {err}"))?;
@@ -25,10 +24,11 @@ pub(crate) fn decrypt_bytes(key: &AesKey256, nonce_and_cipher: &[u8]) -> anyhow:
2524
}
2625

2726
let (nonce_bytes, ciphertext) = nonce_and_cipher.split_at(NONCE_LEN);
28-
27+
let nonce = Nonce::<Aes256Gcm>::try_from(nonce_bytes)
28+
.map_err(|_| anyhow::anyhow!("invalid nonce length"))?;
2929
let cipher = Aes256Gcm::new(key.into());
3030
let plaintext_bytes = cipher
31-
.decrypt(nonce_bytes.into(), ciphertext)
31+
.decrypt(&nonce, ciphertext)
3232
.map_err(|err| anyhow::anyhow!("encryption failed: {err}"))?;
3333
Ok(plaintext_bytes)
3434
}

crates/node/src/migration_service/web/test_utils.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ use std::{
33
sync::Arc,
44
};
55

6-
use aes_gcm::{Aes256Gcm, KeyInit};
6+
use aes_gcm::aead::Generate;
7+
use aes_gcm::{Aes256Gcm, Key};
78
use ed25519_dalek::SigningKey;
89
use near_mpc_contract_interface::types::BackupServiceInfo;
910
use rand::rngs::OsRng;
@@ -32,7 +33,7 @@ pub struct TestSetup {
3233
}
3334

3435
pub async fn setup(port_seed: PortSeed) -> TestSetup {
35-
let backup_encryption_key = Aes256Gcm::generate_key(OsRng);
36+
let backup_encryption_key = Key::<Aes256Gcm>::generate();
3637
let client_key = SigningKey::generate(&mut OsRng);
3738
let server_key = SigningKey::generate(&mut OsRng);
3839

crates/node/src/tests.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use aes_gcm::{Aes256Gcm, KeyInit};
1+
use aes_gcm::{Aes256Gcm, Key, KeyInit};
22
use blstrs::{G1Projective, G2Projective, Scalar};
33
use elliptic_curve::{Field as _, Group as _};
44
use near_mpc_contract_interface::types::ProtocolContractState;
@@ -35,6 +35,7 @@ use crate::tests::common::MockTransactionSender;
3535
use crate::tracking::{self, AutoAbortTask, start_root_task};
3636
use crate::web::recent_transactions::SharedRecentTransactions;
3737
use crate::web::{start_web_server, static_web_data};
38+
use aes_gcm::aead::Generate;
3839
use assert_matches::assert_matches;
3940
use mpc_primitives::domain::{Curve, Protocol};
4041
use near_account_id::AccountId;
@@ -250,7 +251,7 @@ impl IntegrationTestSetup {
250251
near_responder_keys: vec![ed25519_dalek::SigningKey::generate(&mut OsRng)],
251252
},
252253
local_storage_aes_key: rand::random(),
253-
backup_encryption_key: Aes256Gcm::generate_key(OsRng).into(),
254+
backup_encryption_key: Key::<Aes256Gcm>::generate().into(),
254255
};
255256
let (indexer_api, task, currently_running_job_name) = indexer_manager.add_indexer_node(
256257
i.into(),

0 commit comments

Comments
 (0)