Skip to main content

datex_core/stub/
crypto.rs

1use crate::prelude::*;
2use core::{
3    cell::OnceCell,
4    sync::atomic::{AtomicU32, Ordering},
5};
6use datex_crypto_facade::crypto::{AsyncCryptoResult, Crypto};
7
8pub struct CryptoStub;
9
10#[thread_local]
11static UUID_COUNTER: OnceCell<AtomicU32> = OnceCell::new();
12
13fn generate_pseudo_uuid() -> String {
14    let counter = UUID_COUNTER.get_or_init(|| AtomicU32::new(1));
15    let count = counter.fetch_add(1, Ordering::Relaxed);
16
17    // Encode counter into last segment, keeping UUID-like structure
18    format!("00000000-0000-0000-0000-{count:012x}")
19}
20
21impl Crypto for CryptoStub {
22    fn create_uuid() -> String {
23        generate_pseudo_uuid()
24    }
25
26    fn random_bytes(length: usize) -> Vec<u8> {
27        vec![0u8; length]
28    }
29
30    fn hash_sha256<'a>(
31        _to_digest: &'a [u8],
32    ) -> AsyncCryptoResult<'a, [u8; 32], Self::Sha256Error> {
33        unimplemented!()
34    }
35
36    fn hkdf_sha256<'a>(
37        _ikm: &'a [u8],
38        _salt: &'a [u8],
39    ) -> AsyncCryptoResult<'a, [u8; 32], Self::HkdfError> {
40        unimplemented!()
41    }
42
43    fn gen_ed25519<'a>()
44    -> AsyncCryptoResult<'a, (Vec<u8>, Vec<u8>), Self::Ed25519GenError> {
45        unimplemented!()
46    }
47
48    fn sig_ed25519<'a>(
49        _pri_key: &'a [u8],
50        _data: &'a [u8],
51    ) -> AsyncCryptoResult<'a, [u8; 64], Self::Ed25519SignError> {
52        unimplemented!()
53    }
54
55    fn ver_ed25519<'a>(
56        _pub_key: &'a [u8],
57        _sig: &'a [u8],
58        _data: &'a [u8],
59    ) -> AsyncCryptoResult<'a, bool, Self::Ed25519VerifyError> {
60        unimplemented!()
61    }
62
63    fn aes_ctr_encrypt<'a>(
64        _key: &'a [u8; 32],
65        _iv: &'a [u8; 16],
66        _plaintext: &'a [u8],
67    ) -> AsyncCryptoResult<'a, Vec<u8>, Self::AesCtrError> {
68        unimplemented!()
69    }
70
71    fn aes_ctr_decrypt<'a>(
72        _key: &'a [u8; 32],
73        _iv: &'a [u8; 16],
74        _cipher: &'a [u8],
75    ) -> AsyncCryptoResult<'a, Vec<u8>, Self::AesCtrError> {
76        unimplemented!()
77    }
78
79    fn key_wrap_rfc3394<'a>(
80        _kek: &'a [u8; 32],
81        _key_to_wrap: &'a [u8; 32],
82    ) -> AsyncCryptoResult<'a, [u8; 40], Self::KeyWrapError> {
83        unimplemented!()
84    }
85
86    fn key_unwrap_rfc3394<'a>(
87        _kek: &'a [u8; 32],
88        _wrapped: &'a [u8; 40],
89    ) -> AsyncCryptoResult<'a, [u8; 32], Self::KeyUnwrapError> {
90        unimplemented!()
91    }
92
93    fn gen_x25519<'a>()
94    -> AsyncCryptoResult<'a, ([u8; 44], [u8; 48]), Self::X25519GenError> {
95        unimplemented!()
96    }
97
98    fn derive_x25519<'a>(
99        _pri_key: &'a [u8; 48],
100        _peer_pub: &'a [u8; 44],
101    ) -> AsyncCryptoResult<'a, [u8; 32], Self::X25519DeriveError> {
102        unimplemented!()
103    }
104}