Skip to content

Commit 65c781e

Browse files
committed
fix(cardano-blockchain-types): fix type
Signed-off-by: bkioshn <[email protected]>
1 parent 9f7f22e commit 65c781e

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

rust/cardano-blockchain-types/src/cip36/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use validation::{validate_payment_address_network, validate_signature, validate_
1313
use crate::{MetadatumValue, Network};
1414

1515
/// CIP-36 Catalyst registration
16-
#[derive(Clone)]
16+
#[derive(Clone, Default)]
1717
pub struct Cip36 {
1818
/// Key registration - 61284
1919
pub key_registration: Cip36KeyRegistration,
@@ -24,7 +24,7 @@ pub struct Cip36 {
2424
}
2525

2626
/// CIP36 Validation Report
27-
#[derive(Clone)]
27+
#[derive(Clone, Default)]
2828
pub struct Cip36Validation {
2929
/// Is the signature valid? (signature in 61285)
3030
pub is_valid_signature: bool,
@@ -65,7 +65,7 @@ impl Cip36 {
6565
self.key_registration.raw_nonce
6666
}
6767

68-
pub fn signature(&self) -> ed25519_dalek::Signature {
68+
pub fn signature(&self) -> Option<ed25519_dalek::Signature> {
6969
self.registration_witness.signature.clone()
7070
}
7171
pub fn is_strict_catalyst(&self) -> bool {

rust/cardano-blockchain-types/src/cip36/registration_witness.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ use crate::utils::decode_helper::{decode_bytes, decode_helper, decode_map_len};
1414
/// 1 : $stake_witness
1515
/// }
1616
/// ```
17-
#[derive(Clone)]
17+
#[derive(Clone, Default)]
1818
pub struct Cip36RegistrationWitness {
1919
/// Signature of the registration data.
20-
pub signature: ed25519_dalek::Signature,
20+
pub signature: Option<ed25519_dalek::Signature>,
2121
}
2222

2323
impl Decode<'_, ()> for Cip36RegistrationWitness {
@@ -41,9 +41,7 @@ impl Decode<'_, ()> for Cip36RegistrationWitness {
4141
}
4242

4343
let sig_bytes = decode_bytes(d, "CIP36 Registration Witness signature")?;
44-
let signature = ed25519_dalek::Signature::from_slice(&sig_bytes).map_err(|e| {
45-
decode::Error::message(format!("Invalid CIP36 Registration Witness Signature, {e}"))
46-
})?;
44+
let signature = ed25519_dalek::Signature::from_slice(&sig_bytes).ok();
4745

4846
Ok(Cip36RegistrationWitness { signature })
4947
}

rust/cardano-blockchain-types/src/cip36/validation.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use crate::{MetadatumValue, Network};
21
use super::Cip36;
2+
use crate::{MetadatumValue, Network};
33

44
/// Project Catalyst Purpose
55
pub const PROJECT_CATALYST_PURPOSE: u64 = 0;
@@ -22,13 +22,18 @@ pub(crate) fn validate_signature(
2222
.update(metadata.as_ref())
2323
.finalize();
2424

25-
match cip36
26-
.stake_pk()
27-
.verify_strict(hash.as_bytes(), &cip36.signature())
28-
{
25+
let sig = match cip36.signature() {
26+
Some(sig) => sig,
27+
None => {
28+
validation_report.push(format!("Validate CIP36 Signature, signature is invalid"));
29+
return false;
30+
},
31+
};
32+
33+
match cip36.stake_pk().verify_strict(hash.as_bytes(), &sig) {
2934
Ok(_) => true,
3035
Err(_) => {
31-
validation_report.push(format!("Validate CIP36 Signature, signature is invalid"));
36+
validation_report.push(format!("Validate CIP36 Signature, cannot verify signature"));
3237
false
3338
},
3439
}

0 commit comments

Comments
 (0)