radix_transactions/model/v1/
intent_signatures.rs1use super::*;
2use crate::internal_prelude::*;
3
4#[cfg_attr(
6 feature = "serde",
7 derive(serde::Serialize, serde::Deserialize),
8 serde(tag = "type")
9)]
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, ManifestSbor, ScryptoSbor)]
11pub enum SignatureWithPublicKeyV1 {
12 Secp256k1 {
13 signature: Secp256k1Signature,
14 },
15 Ed25519 {
16 public_key: Ed25519PublicKey,
17 signature: Ed25519Signature,
18 },
19}
20
21impl SignatureWithPublicKeyV1 {
22 pub fn signature(&self) -> SignatureV1 {
23 match &self {
24 Self::Secp256k1 { signature } => signature.clone().into(),
25 Self::Ed25519 { signature, .. } => signature.clone().into(),
26 }
27 }
28}
29
30impl From<Secp256k1Signature> for SignatureWithPublicKeyV1 {
31 fn from(signature: Secp256k1Signature) -> Self {
32 Self::Secp256k1 { signature }
33 }
34}
35
36impl From<(Ed25519PublicKey, Ed25519Signature)> for SignatureWithPublicKeyV1 {
37 fn from((public_key, signature): (Ed25519PublicKey, Ed25519Signature)) -> Self {
38 Self::Ed25519 {
39 public_key,
40 signature,
41 }
42 }
43}
44
45#[derive(Debug, Clone, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
46#[sbor(transparent)]
47pub struct IntentSignatureV1(pub SignatureWithPublicKeyV1);
48
49#[derive(Debug, Clone, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
50#[sbor(transparent)]
51pub struct IntentSignaturesV1 {
52 pub signatures: Vec<IntentSignatureV1>,
53}
54
55#[allow(deprecated)]
56pub type PreparedIntentSignaturesV1 = SummarizedRawFullValue<IntentSignaturesV1>;