datex_core/stub/
crypto.rs1use 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 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}