oasis_contract_sdk/
env.rs1use oasis_contract_sdk_types::address::Address;
3
4use crate::types::{
5 env::{QueryRequest, QueryResponse},
6 InstanceId,
7};
8
9pub trait Env {
11 fn query<Q: Into<QueryRequest>>(&self, query: Q) -> QueryResponse;
13
14 fn address_for_instance(&self, instance_id: InstanceId) -> Address;
16
17 #[cfg(feature = "debug-utils")]
19 fn debug_print(&self, msg: &str);
20}
21
22#[derive(Debug, thiserror::Error)]
24pub enum CryptoError {
25 #[error("decryption or additional data authentication failed")]
26 DecryptionFailed,
27}
28
29pub trait Crypto {
31 fn ecdsa_recover(&self, input: &[u8]) -> [u8; 65];
33
34 fn signature_verify_ed25519(&self, key: &[u8], message: &[u8], signature: &[u8]) -> bool;
36
37 fn signature_verify_secp256k1(&self, key: &[u8], message: &[u8], signature: &[u8]) -> bool;
39
40 fn signature_verify_sr25519(
42 &self,
43 key: &[u8],
44 context: &[u8],
45 message: &[u8],
46 signature: &[u8],
47 ) -> bool;
48
49 fn x25519_derive_symmetric(&self, public_key: &[u8], private_key: &[u8]) -> [u8; 32];
51
52 fn deoxysii_seal(
54 &self,
55 key: &[u8],
56 nonce: &[u8],
57 message: &[u8],
58 additional_data: &[u8],
59 ) -> Result<Vec<u8>, CryptoError>;
60
61 fn deoxysii_open(
63 &self,
64 key: &[u8],
65 nonce: &[u8],
66 message: &[u8],
67 additional_data: &[u8],
68 ) -> Result<Vec<u8>, CryptoError>;
69
70 fn random_bytes(&self, pers: &[u8], dst: &mut [u8]) -> usize;
74}