diff --git a/crates/claims/crates/data-integrity/src/any/suite/mod.rs b/crates/claims/crates/data-integrity/src/any/suite/mod.rs index ca480e07e..21c91ed6c 100644 --- a/crates/claims/crates/data-integrity/src/any/suite/mod.rs +++ b/crates/claims/crates/data-integrity/src/any/suite/mod.rs @@ -27,11 +27,18 @@ macros::crypto_suites! { #[cfg(all(feature = "w3c", feature = "ed25519"))] ed25519_signature_2020: Ed25519Signature2020, - /// W3C EdDSA Cryptosuite v2022. + /// W3C `eddsa-2022` cryptosuite, a draft version of the `eddsa-rdfc-2022` + /// cryptosuite. /// - /// See: + /// See: #[cfg(all(feature = "w3c", feature = "ed25519"))] - ed_dsa_2022: EdDsa2022, + eddsa_2022: EdDsa2022, + + /// W3C `eddsa-rdfc-2022` cryptosuite. + /// + /// See: + #[cfg(all(feature = "w3c", feature = "ed25519"))] + eddsa_rdfc_2022: EdDsaRdfc2022, /// W3C Ecdsa Secp256k1 Signature 2019. /// diff --git a/crates/claims/crates/data-integrity/suites/src/suites/w3c.rs b/crates/claims/crates/data-integrity/suites/src/suites/w3c.rs index f4fe60639..dd61fb741 100644 --- a/crates/claims/crates/data-integrity/suites/src/suites/w3c.rs +++ b/crates/claims/crates/data-integrity/suites/src/suites/w3c.rs @@ -23,6 +23,11 @@ pub mod eddsa_2022; #[cfg(feature = "ed25519")] pub use eddsa_2022::EdDsa2022; +#[cfg(feature = "ed25519")] +pub mod eddsa_rdfc_2022; +#[cfg(feature = "ed25519")] +pub use eddsa_rdfc_2022::EdDsaRdfc2022; + #[cfg(feature = "secp256k1")] pub mod ecdsa_secp256k1_signature_2019; #[cfg(feature = "secp256k1")] diff --git a/crates/claims/crates/data-integrity/suites/src/suites/w3c/eddsa_2022.rs b/crates/claims/crates/data-integrity/suites/src/suites/w3c/eddsa_2022.rs index 81c1b5911..e94ac94a9 100644 --- a/crates/claims/crates/data-integrity/suites/src/suites/w3c/eddsa_2022.rs +++ b/crates/claims/crates/data-integrity/suites/src/suites/w3c/eddsa_2022.rs @@ -1,8 +1,3 @@ -//! EdDSA Cryptosuite v2022 implementation. -//! -//! This is the successor of the EdDSA Cryptosuite v2020. -//! -//! See: use k256::sha2::Sha256; use ssi_data_integrity_core::{ canonicalization::{CanonicalizeClaimsAndConfiguration, HashCanonicalClaimsAndConfiguration}, @@ -13,12 +8,13 @@ use ssi_data_integrity_core::{ use ssi_verification_methods::Multikey; use static_iref::iri; -/// EdDSA Cryptosuite v2020. +/// The `eddsa-2022` cryptosuite, a draft version of the `eddsa-rdfc-2022` +/// cryptosuite. /// -/// This is a legacy cryptographic suite for the usage of the EdDSA algorithm -/// and Curve25519. It is recommended to use `edssa-2022` instead. +/// This is only provided for compatibility with applications based on the +/// EDDSA cryptosuite draft. /// -/// See: +/// See: #[derive(Debug, Default, Clone, Copy)] pub struct EdDsa2022; diff --git a/crates/claims/crates/data-integrity/suites/src/suites/w3c/eddsa_rdfc_2022.rs b/crates/claims/crates/data-integrity/suites/src/suites/w3c/eddsa_rdfc_2022.rs new file mode 100644 index 000000000..2b3aa0efc --- /dev/null +++ b/crates/claims/crates/data-integrity/suites/src/suites/w3c/eddsa_rdfc_2022.rs @@ -0,0 +1,39 @@ +use k256::sha2::Sha256; +use ssi_data_integrity_core::{ + canonicalization::{CanonicalizeClaimsAndConfiguration, HashCanonicalClaimsAndConfiguration}, + signing::{Base58Btc, MultibaseSigning}, + suite::NoConfiguration, + CryptosuiteStr, StandardCryptographicSuite, TypeRef, +}; +use ssi_verification_methods::Multikey; +use static_iref::iri; + +/// The `eddsa-rdfc-2022` cryptosuite. +/// +/// See: +#[derive(Debug, Default, Clone, Copy)] +pub struct EdDsaRdfc2022; + +impl EdDsaRdfc2022 { + pub const NAME: &'static str = "DataIntegrityProof"; + + pub const IRI: &'static iref::Iri = iri!("https://w3id.org/security#DataIntegrityProof"); +} + +impl StandardCryptographicSuite for EdDsaRdfc2022 { + type Configuration = NoConfiguration; + + type Transformation = CanonicalizeClaimsAndConfiguration; + + type Hashing = HashCanonicalClaimsAndConfiguration; + + type VerificationMethod = Multikey; + + type SignatureAlgorithm = MultibaseSigning; + + type ProofOptions = (); + + fn type_(&self) -> TypeRef { + TypeRef::DataIntegrityProof(CryptosuiteStr::new("eddsa-rdfc-2022").unwrap()) + } +}