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