|
3 | 3 | use serde::{Deserialize, Deserializer, Serialize, Serializer}; |
4 | 4 | use tree_hash::TreeHash; |
5 | 5 |
|
6 | | -use base64::Engine as _; |
7 | 6 | use pluto_eth2api::{ |
8 | 7 | spec::{ |
9 | 8 | altair, bellatrix, capella, deneb, electra, phase0, serde_legacy_builder_version, |
@@ -94,57 +93,16 @@ struct VersionedRawAggregateAndProofJson<T> { |
94 | 93 |
|
95 | 94 | /// Converts an ETH2 signature to a core signature. |
96 | 95 | pub fn sig_from_eth2(sig: phase0::BLSSignature) -> Signature { |
97 | | - Signature::new(sig) |
| 96 | + sig |
98 | 97 | } |
99 | 98 |
|
100 | 99 | fn sig_to_eth2(sig: &Signature) -> phase0::BLSSignature { |
101 | | - *sig.as_ref() |
102 | | -} |
103 | | - |
104 | | -impl serde::Serialize for Signature { |
105 | | - fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> |
106 | | - where |
107 | | - S: serde::Serializer, |
108 | | - { |
109 | | - let encoded = base64::engine::general_purpose::STANDARD.encode(self.as_ref()); |
110 | | - serializer.serialize_str(&encoded) |
111 | | - } |
112 | | -} |
113 | | - |
114 | | -impl<'de> serde::Deserialize<'de> for Signature { |
115 | | - fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> |
116 | | - where |
117 | | - D: serde::Deserializer<'de>, |
118 | | - { |
119 | | - let encoded = String::deserialize(deserializer)?; |
120 | | - let bytes = base64::engine::general_purpose::STANDARD |
121 | | - .decode(encoded) |
122 | | - .map_err(|err| serde::de::Error::custom(format!("invalid base64 signature: {err}")))?; |
123 | | - let sig: [u8; 96] = bytes.try_into().map_err(|bytes: Vec<u8>| { |
124 | | - serde::de::Error::custom(format!( |
125 | | - "invalid signature length: got {}, want 96", |
126 | | - bytes.len() |
127 | | - )) |
128 | | - })?; |
129 | | - Ok(Signature::new(sig)) |
130 | | - } |
131 | | -} |
132 | | - |
133 | | -impl Signature { |
134 | | - /// Converts the signature to an ETH2 signature. |
135 | | - pub fn to_eth2(&self) -> phase0::BLSSignature { |
136 | | - sig_to_eth2(self) |
137 | | - } |
138 | | - |
139 | | - /// Creates a partially signed signature wrapper. |
140 | | - pub fn new_partial(sig: Self, share_idx: u64) -> ParSignedData { |
141 | | - ParSignedData::new(sig, share_idx) |
142 | | - } |
| 100 | + *sig |
143 | 101 | } |
144 | 102 |
|
145 | 103 | impl SignedData for Signature { |
146 | 104 | fn signature(&self) -> Result<Signature, SignedDataError> { |
147 | | - Ok(self.clone()) |
| 105 | + Ok(*self) |
148 | 106 | } |
149 | 107 |
|
150 | 108 | fn set_signature(&self, signature: Signature) -> Result<Self, SignedDataError> { |
@@ -1361,7 +1319,7 @@ mod tests { |
1361 | 1319 | } |
1362 | 1320 |
|
1363 | 1321 | fn sample_signature(byte: u8) -> Signature { |
1364 | | - Signature::new([byte; 96]) |
| 1322 | + [byte; 96] |
1365 | 1323 | } |
1366 | 1324 |
|
1367 | 1325 | fn sample_root(byte: u8) -> phase0::Root { |
@@ -2563,37 +2521,17 @@ mod tests { |
2563 | 2521 | #[test] |
2564 | 2522 | fn signature() { |
2565 | 2523 | let sig1 = sample_signature(0x22); |
2566 | | - let sig2 = sig1.clone(); |
| 2524 | + let sig2 = sig1; |
2567 | 2525 |
|
2568 | 2526 | assert!(matches!( |
2569 | 2527 | sig1.message_root(), |
2570 | 2528 | Err(SignedDataError::UnsupportedSignatureMessageRoot) |
2571 | 2529 | )); |
2572 | 2530 | assert_eq!(sig1, sig1.signature().unwrap()); |
2573 | | - assert_eq!(sig1.to_eth2(), sig2.signature().unwrap().to_eth2()); |
| 2531 | + assert_eq!(sig1, sig2.signature().unwrap()); |
2574 | 2532 |
|
2575 | 2533 | let ss = sig1.set_signature(sig2.signature().unwrap()).unwrap(); |
2576 | 2534 | assert_eq!(sig2, ss); |
2577 | | - |
2578 | | - let js = serde_json::to_vec(&sig1).unwrap(); |
2579 | | - let sig3: Signature = serde_json::from_slice(&js).unwrap(); |
2580 | | - assert_eq!(sig1, sig3); |
2581 | | - } |
2582 | | - |
2583 | | - #[test] |
2584 | | - fn signature_json_errors() { |
2585 | | - let invalid_base64 = serde_json::from_slice::<Signature>(br#""%%%""#); |
2586 | | - assert!(matches!( |
2587 | | - invalid_base64, |
2588 | | - Err(err) if matches!(err.classify(), serde_json::error::Category::Data) |
2589 | | - )); |
2590 | | - |
2591 | | - let short = base64::engine::general_purpose::STANDARD.encode([0x11_u8; 95]); |
2592 | | - let wrong_len = serde_json::from_slice::<Signature>(format!("\"{short}\"").as_bytes()); |
2593 | | - assert!(matches!( |
2594 | | - wrong_len, |
2595 | | - Err(err) if matches!(err.classify(), serde_json::error::Category::Data) |
2596 | | - )); |
2597 | 2535 | } |
2598 | 2536 |
|
2599 | 2537 | #[test_case(false ; "unblinded")] |
@@ -2751,7 +2689,7 @@ mod tests { |
2751 | 2689 | assert_ne!(msg_root, [0_u8; 32]); |
2752 | 2690 |
|
2753 | 2691 | let signature = sample_signature(0x99); |
2754 | | - let updated = wrapped.set_signature(signature.clone()).unwrap(); |
| 2692 | + let updated = wrapped.set_signature(signature).unwrap(); |
2755 | 2693 | assert_eq!(signature, updated.signature().unwrap()); |
2756 | 2694 |
|
2757 | 2695 | let js = serde_json::to_vec(&wrapped).unwrap(); |
|
0 commit comments