aere-quantum/crypto-inventory/test/fixturi/rust/cripto.rs

54 lines
3.3 KiB
Rust

// Fixtura: Rust. Numele din scop vin din `use`, si acelasi nume inseamna alt algoritm dupa crate (SigningKey e Ed25519 in
// ed25519-dalek, ML-DSA in ml-dsa, ECDSA in p256). Un import fara niciun apel recunoscut ramane dovada slaba (unknown).
use sha2::{Digest, Sha256, Sha512};
use sha1::Sha1;
use hmac::{Hmac, Mac};
use hkdf::Hkdf;
use argon2::{Algorithm, Argon2, Params, Version};
use chacha20poly1305::{aead::KeyInit, XChaCha20Poly1305};
use aes_gcm::Aes256Gcm;
use x25519_dalek::{PublicKey, StaticSecret};
use ed25519_dalek::SigningKey;
use ml_dsa::{KeyGen, MlDsa65};
use slh_dsa::{Sha2_128s, SigningKey as SlhSigningKey};
use ml_kem::{KemCore, MlKem768};
use rsa::RsaPrivateKey;
use p256::ecdsa::SigningKey as P256SigningKey;
use libsignal_protocol::kem;
use ring::aead;
use jsonwebtoken::Algorithm as JwtAlg;
use openssl::hash::MessageDigest;
use rustls::crypto::ring as rustls_ring;
use snow::Builder;
use blake2::Blake2b512; // EXPECT: blake2 | unknown
use zeroize::Zeroizing;
type HmacSha256 = Hmac<Sha256>; // EXPECT: HMAC-SHA-256 | quantum-safe
pub fn exemple(data: &[u8], key: &[u8; 32], rng: &mut impl rand_core::CryptoRngCore) {
let h = Sha256::new(); // EXPECT: SHA-256 | quantum-safe
let d = Sha1::digest(data); // EXPECT: SHA-1 | weak-now
let m = Hmac::<Sha512>::new_from_slice(key).unwrap(); // EXPECT: HMAC-SHA-512 | quantum-safe
let hk = Hkdf::<Sha256>::new(None, key); // EXPECT: HKDF | quantum-safe
let argon = Argon2::new(Algorithm::Argon2id, Version::V0x13, Params::default()); // EXPECT: Argon2id | quantum-safe
let aead1 = XChaCha20Poly1305::new_from_slice(key).unwrap(); // EXPECT: XChaCha20-Poly1305 | quantum-safe
let aead2 = Aes256Gcm::new_from_slice(key).unwrap(); // EXPECT: AES-256-GCM | quantum-safe
let bloc = ecb::Encryptor::<aes::Aes128>::new(key[..16].into()); // EXPECT: AES-128-ECB | weak-now
let secret = StaticSecret::random_from_rng(rng); // EXPECT: X25519 | quantum-vulnerable
let pk = PublicKey::from(&secret); // EXPECT: X25519 | quantum-vulnerable
let ed = SigningKey::generate(rng); // EXPECT: Ed25519 | quantum-vulnerable
let kp = MlDsa65::key_gen(rng); // EXPECT: ML-DSA-65 | quantum-safe
let slh = SlhSigningKey::<Sha2_128s>::new(rng); // EXPECT: SLH-DSA-SHA2-128s | quantum-safe
let (dk, ek) = MlKem768::generate(rng); // EXPECT: ML-KEM-768 | quantum-safe
let r = RsaPrivateKey::new(rng, 2048).unwrap(); // EXPECT: RSA-2048 | quantum-vulnerable
let p = P256SigningKey::random(rng); // EXPECT: ECDSA-secp256r1 | quantum-vulnerable
let kt = kem::KeyType::Kyber1024; // EXPECT: Kyber-1024 | quantum-safe
let sealing = aead::UnboundKey::new(&aead::AES_256_GCM, key).unwrap(); // EXPECT: AES-256-GCM | quantum-safe
let alg = JwtAlg::RS256; // EXPECT: JWS RS256 | quantum-vulnerable
let md = MessageDigest::md5(); // EXPECT: MD5 | weak-now
let provider = rustls_ring::default_provider(); // EXPECT: X25519 | quantum-vulnerable
let noise = Builder::new("Noise_XX_25519_ChaChaPoly_SHA256".parse().unwrap()); // EXPECT: X25519 | quantum-vulnerable ; ChaCha20-Poly1305 | quantum-safe ; SHA-256 | quantum-safe
let _ = (h, d, m, hk, argon, aead1, aead2, bloc, pk, ed, kp, slh, dk, ek, r, p, kt, sealing, alg, md, provider, noise, Zeroizing::new(0u8));
let _t: Option<HmacSha256> = None;
}