ssi_security/lib.rs
1use iref::Iri;
2use static_iref::iri;
3// use treeldr_rust_macros::tldr;
4
5mod ethereum_adress;
6pub use ethereum_adress::*;
7
8pub mod multibase;
9pub use multibase::{Multibase, MultibaseBuf};
10
11// #[tldr("ssi-vc/src/schema/sec.ttl")]
12// pub mod schema {
13// #[prefix("http://www.w3.org/2002/07/owl#")]
14// pub mod owl {}
15
16// #[prefix("http://www.w3.org/1999/02/22-rdf-syntax-ns#")]
17// pub mod rdf {}
18
19// #[prefix("http://www.w3.org/2000/01/rdf-schema#")]
20// pub mod rdfs {}
21
22// #[prefix("http://www.w3.org/2001/XMLSchema#")]
23// pub mod xsd {}
24
25// #[prefix("https://treeldr.org/")]
26// pub mod tldr {}
27
28// #[prefix("https://w3id.org/security#")]
29// pub mod sec {}
30// }
31
32// pub use schema::sec::*;
33
34pub const CRYPTOSUITE: &Iri = iri!("https://w3id.org/security#cryptosuite");
35
36pub const VERIFICATION_METHOD: &Iri = iri!("https://w3id.org/security#verificationMethod");
37
38pub const PROOF_PURPOSE: &Iri = iri!("https://w3id.org/security#proofPurpose");
39
40pub const PROOF_VALUE: &Iri = iri!("https://w3id.org/security#proofValue");
41
42pub const PROOF: &Iri = iri!("https://w3id.org/security#proof");
43
44pub const JWS: &Iri = iri!("https://w3id.org/security#jws");
45
46pub const SIGNATURE_VALUE: &Iri = iri!("https://w3id.org/security#signatureValue");
47
48/// Multibase datatype.
49///
50/// Range of the `publicKeyMultibase` property.
51pub const MULTIBASE: &Iri = iri!("https://w3id.org/security#multibase");
52
53/// Multibase-encoded public key property.
54pub const PUBLIC_KEY_MULTIBASE: &Iri = iri!("https://w3id.org/security#publicKeyMultibase");
55
56/// JWK public key property.
57///
58/// This property is missing from the `https://w3id.org/security/v1` context,
59/// but is defined in `https://w3id.org/security/v3-unstable`.
60pub const PUBLIC_KEY_JWK: &Iri = iri!("https://w3id.org/security#publicKeyJwk");
61
62/// Hex-encoded public key property (deprecated).
63///
64/// This property is missing from the `https://w3id.org/security/v1` context,
65/// but is defined in `https://w3id.org/security/v3-unstable`.
66pub const PUBLIC_KEY_HEX: &Iri = iri!("https://w3id.org/security#publicKeyHex");
67
68/// Ethereum address property (deprecated).
69///
70/// An `ethereumAddress` property is used to specify the Ethereum address.
71///
72/// As per the Ethereum Yellow Paper ["Ethereum: a secure decentralised
73/// generalised transaction ledger"][1] in consists of a prefix "0x", a common
74/// identifier for hexadecimal, concatenated with the rightmost 20 bytes of the
75/// Keccak-256 hash (big endian) of the ECDSA public key (the curve used is the
76/// so-called secp256k1). In hexadecimal, 2 digits represent a byte, meaning
77/// addresses contain 40 hexadecimal digits. The Ethereum address should also
78/// contain a checksum as per [EIP-55][2].
79///
80/// [1]: <https://ethereum.github.io/yellowpaper/paper.pdf>
81/// [2]: <https://eips.ethereum.org/EIPS/eip-55>
82pub const ETHEREUM_ADDRESS: &Iri = iri!("https://w3id.org/security#ethereumAddress");
83
84/// Blockchain Account Id property (deprecated).
85///
86/// A `blockchainAccountId` property is used to specify a blockchain account
87/// identifier, as per the [CAIP-10Account ID Specification][1].
88///
89/// [1]: <https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-10.md>
90pub const BLOCKCHAIN_ACCOUNT_ID: &Iri = iri!("https://w3id.org/security#blockchainAccountId");