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::{Crypto, CryptoResult};
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>(_to_digest: &'a [u8]) -> CryptoResult<'a, [u8; 32]> {
31        unimplemented!()
32    }
33
34    fn hkdf_sha256<'a>(
35        _ikm: &'a [u8],
36        _salt: &'a [u8],
37    ) -> CryptoResult<'a, [u8; 32]> {
38        unimplemented!()
39    }
40
41    fn gen_ed25519<'a>() -> CryptoResult<'a, (Vec<u8>, Vec<u8>)> {
42        unimplemented!()
43    }
44
45    fn sig_ed25519<'a>(
46        _pri_key: &'a [u8],
47        _data: &'a [u8],
48    ) -> CryptoResult<'a, [u8; 64]> {
49        unimplemented!()
50    }
51
52    fn ver_ed25519<'a>(
53        _pub_key: &'a [u8],
54        _sig: &'a [u8],
55        _data: &'a [u8],
56    ) -> CryptoResult<'a, bool> {
57        unimplemented!()
58    }
59
60    fn aes_ctr_encrypt<'a>(
61        _key: &'a [u8; 32],
62        _iv: &'a [u8; 16],
63        _plaintext: &'a [u8],
64    ) -> CryptoResult<'a, Vec<u8>> {
65        unimplemented!()
66    }
67
68    fn aes_ctr_decrypt<'a>(
69        _key: &'a [u8; 32],
70        _iv: &'a [u8; 16],
71        _cipher: &'a [u8],
72    ) -> CryptoResult<'a, Vec<u8>> {
73        unimplemented!()
74    }
75
76    fn key_upwrap<'a>(
77        _kek_bytes: &'a [u8; 32],
78        _rb: &'a [u8; 32],
79    ) -> CryptoResult<'a, [u8; 40]> {
80        unimplemented!()
81    }
82
83    fn key_unwrap<'a>(
84        _kek_bytes: &'a [u8; 32],
85        _cipher: &'a [u8; 40],
86    ) -> CryptoResult<'a, [u8; 32]> {
87        unimplemented!()
88    }
89
90    fn gen_x25519<'a>() -> CryptoResult<'a, ([u8; 44], [u8; 48])> {
91        unimplemented!()
92    }
93
94    fn derive_x25519<'a>(
95        _pri_key: &'a [u8; 48],
96        _peer_pub: &'a [u8; 44],
97    ) -> CryptoResult<'a, Vec<u8>> {
98        unimplemented!()
99    }
100}