2022-11-23 14:37:32 +00:00
|
|
|
/// Signature types
|
|
|
|
use std::str::FromStr;
|
|
|
|
|
|
|
|
use crate::errors::ConversionError;
|
2022-11-10 19:06:10 +00:00
|
|
|
|
|
|
|
// Identity proof, version 00
|
|
|
|
pub const PROOF_TYPE_ID_EIP191: &str = "ethereum-eip191-00";
|
|
|
|
|
|
|
|
// Identity proof, version 2022A
|
|
|
|
pub const PROOF_TYPE_ID_MINISIGN: &str = "MitraMinisignSignature2022A";
|
|
|
|
|
|
|
|
// Similar to https://identity.foundation/JcsEd25519Signature2020/
|
|
|
|
// - Canonicalization algorithm: JCS
|
|
|
|
// - Digest algorithm: SHA-256
|
|
|
|
// - Signature algorithm: RSASSA-PKCS1-v1_5
|
2023-01-07 23:06:23 +00:00
|
|
|
pub const PROOF_TYPE_JCS_RSA: &str = "MitraJcsRsaSignature2022";
|
|
|
|
pub const PROOF_TYPE_JCS_RSA_LEGACY: &str = "JcsRsaSignature2022";
|
2022-11-10 19:06:10 +00:00
|
|
|
|
|
|
|
// Similar to EthereumPersonalSignature2021 but with JCS
|
2023-01-07 23:06:23 +00:00
|
|
|
pub const PROOF_TYPE_JCS_EIP191: &str = "MitraJcsEip191Signature2022";
|
|
|
|
pub const PROOF_TYPE_JCS_EIP191_LEGACY: &str ="JcsEip191Signature2022";
|
2022-11-10 18:47:22 +00:00
|
|
|
|
2022-11-19 14:54:33 +00:00
|
|
|
// Similar to Ed25519Signature2020
|
|
|
|
// https://w3c-ccg.github.io/di-eddsa-2020/#ed25519signature2020
|
|
|
|
// - Canonicalization algorithm: JCS
|
|
|
|
// - Digest algorithm: BLAKE2b-512
|
|
|
|
// - Signature algorithm: EdDSA
|
|
|
|
pub const PROOF_TYPE_JCS_ED25519: &str = "MitraJcsEd25519Signature2022";
|
2022-11-23 14:37:32 +00:00
|
|
|
|
|
|
|
#[derive(Debug, PartialEq)]
|
|
|
|
pub enum SignatureType {
|
|
|
|
JcsEip191Signature,
|
|
|
|
JcsEd25519Signature,
|
|
|
|
JcsRsaSignature,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl FromStr for SignatureType {
|
|
|
|
type Err = ConversionError;
|
|
|
|
|
|
|
|
fn from_str(value: &str) -> Result<Self, Self::Err> {
|
|
|
|
let signature_type = match value {
|
|
|
|
PROOF_TYPE_JCS_EIP191 => Self::JcsEip191Signature,
|
2023-01-07 23:06:23 +00:00
|
|
|
PROOF_TYPE_JCS_EIP191_LEGACY => Self::JcsEip191Signature,
|
2022-11-23 14:37:32 +00:00
|
|
|
PROOF_TYPE_JCS_ED25519 => Self::JcsEd25519Signature,
|
|
|
|
PROOF_TYPE_JCS_RSA => Self::JcsRsaSignature,
|
2023-01-07 23:06:23 +00:00
|
|
|
PROOF_TYPE_JCS_RSA_LEGACY => Self::JcsRsaSignature,
|
2022-11-23 14:37:32 +00:00
|
|
|
_ => return Err(ConversionError),
|
|
|
|
};
|
|
|
|
Ok(signature_type)
|
|
|
|
}
|
|
|
|
}
|