Skip to content

Commit

Permalink
add test for decrypting external encrypted weight data from Python im…
Browse files Browse the repository at this point in the history
…plementation
  • Loading branch information
steinerkelvin committed Oct 31, 2024
1 parent 5e6321d commit 0e3949e
Showing 1 changed file with 41 additions and 1 deletion.
42 changes: 41 additions & 1 deletion tests/src/offworker/encryption.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use ow_extensions::OffworkerExtension;
use rand::rngs::OsRng;
use rsa::{
pkcs1::EncodeRsaPrivateKey, traits::PublicKeyParts, BigUint, Pkcs1v15Encrypt, RsaPrivateKey,
pkcs1::{DecodeRsaPrivateKey, EncodeRsaPrivateKey}, traits::PublicKeyParts, BigUint, Pkcs1v15Encrypt, RsaPrivateKey,
RsaPublicKey,
};
use sp_core::{sr25519, Pair};
Expand Down Expand Up @@ -206,3 +206,43 @@ fn encrypt_and_decrypt() {
assert_eq!(decrypted_weights, weights.clone());
assert_eq!(decrypted_key, validator_key.clone());
}

#[test]
fn decrypt_external() {
let weights = vec![(1, 2), (3, 4)];
let validator_key = vec![11, 22, 33, 44];

// Encrypted data from Python implementation
let encrypted = "62724424d1ca39a8873b391ca7feb3fde3b2676f19283a42b2afa13544f987eba8124b1ce494ebc51e8afe3a1ef4326713b774928c0034d45c7af85f9c2e6f5b0c33cb53074a403d44892da60bd78672bc223714f96c4eeb877ffc1088b249cedfd3ae40d892d86696d518eb7c20feffa7dfd8b55c80113106bdcc2cce4ab09f";
let encrypted = hex::decode(encrypted).unwrap();

let rsa_key_pem = "
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDXQNAmQOmL78ISODmSBenbpbcR0jfQbfBswq9vksOddikukMNN
BJOeOj4YUgSCt2K+auiFnw+fE9B1sACoiSv8AiVym8n82E0sQUk0cjFVf0Z4JBqv
PAgKR8M6ofTJCu58rPaU3e6+mru/Ixqf26QQr7vI96Pp93aiZQTOShmC6QIDAQAB
AoGBAIixPf2s5yLYZLPRRK34V2QGvlTw3ETeK/nFQEdoOhT6fnh1sbBtIZkvf1NO
clLYRjqKBZMlSXRJzu2NkT11rpm1hTTuc99w0SjZDHFpj0TppXtagmJYwHBYt5Ac
oNan6ALTlUbxEHtIj4rGghJAJBOVTq0pi8PdVgAQgq3cArUBAkEA2f9SFOmDWN7w
PO6yHZfj7e8i65W8v4HZXV/EWv3kCZW5KZsM3OBlqqx1txIljxF146C7ZpBLLQEK
ubVOqKqPsQJBAPzHBuczD6GziSbN9sjgj4sAxGwExp8Z747rxGVlB56ak68aqFt1
GDuwib0NIrrDUuGlQUKIWUm6amSwu/UJbLkCQDsZS8Bdmf0y20A5mdIKBoHPrdDe
VEA6zJnSx6G/aN3sWDleTntm3kkJ3hPWeJYzrpkaTxO8FJVLzgOQkpWJP9ECQQD1
q0EsRlX05BZx3k7w4D7h67b6/JFFY+GNV9qiaNRE8xqBXjkt2dnZeTQExtVwChFt
ODz6uqV8oG5yucmS1rwRAkA1KjcZDPBRZ05wlf8VZuJjWYIRbVx3PBpQJPbtW7Vg
fvRuW5JF+WZtGddyU4751JNNNhmwbwGmsmphy7EOHHaC
-----END RSA PRIVATE KEY-----";

let rsa_key = RsaPrivateKey::from_pkcs1_pem(rsa_key_pem).unwrap();
let mock_offworker_ext = MockOffworkerExt {
key: Some(rsa_key),
};

println!("weights = {:?}", weights);
println!("validator_key = {:?}", validator_key);

let (decrypted_weights, decrypted_key) = mock_offworker_ext.decrypt_weight(encrypted).unwrap();

assert_eq!(decrypted_weights, weights.clone());
assert_eq!(decrypted_key, validator_key.clone());
}

0 comments on commit 0e3949e

Please sign in to comment.