diff --git a/rs/p2p/artifact_downloader/src/fetch_stripped_artifact/types/rpc.rs b/rs/p2p/artifact_downloader/src/fetch_stripped_artifact/types/rpc.rs index 39c4b447c7aa..053c289652dd 100644 --- a/rs/p2p/artifact_downloader/src/fetch_stripped_artifact/types/rpc.rs +++ b/rs/p2p/artifact_downloader/src/fetch_stripped_artifact/types/rpc.rs @@ -155,7 +155,7 @@ impl TryFrom for GetIDkgDealingInBlockRespons fn try_from(value: pb::GetIDkgDealingInBlockResponse) -> Result { Ok(Self { - signed_dealing: try_from_option_field(value.signed_dealing.as_ref(), "signed_dealing")?, + signed_dealing: try_from_option_field(value.signed_dealing, "signed_dealing")?, }) } } @@ -163,7 +163,7 @@ impl TryFrom for GetIDkgDealingInBlockRespons impl From for pb::GetIDkgDealingInBlockResponse { fn from(value: GetIDkgDealingInBlockResponse) -> Self { pb::GetIDkgDealingInBlockResponse { - signed_dealing: Some((&value.signed_dealing).into()), + signed_dealing: Some(value.signed_dealing.into()), } } } diff --git a/rs/types/types/src/consensus/idkg.rs b/rs/types/types/src/consensus/idkg.rs index 5d5314126af5..0661cd2aa6cf 100644 --- a/rs/types/types/src/consensus/idkg.rs +++ b/rs/types/types/src/consensus/idkg.rs @@ -917,7 +917,7 @@ impl IDkgMessage { impl From for pb::IDkgMessage { fn from(value: IDkgMessage) -> Self { use pb::i_dkg_message::Msg; - let msg = match &value { + let msg = match value { IDkgMessage::Dealing(x) => Msg::SignedDealing(x.into()), IDkgMessage::DealingSupport(x) => Msg::DealingSupport(x.into()), IDkgMessage::EcdsaSigShare(x) => Msg::EcdsaSigShare(x.into()), @@ -935,10 +935,10 @@ impl TryFrom for IDkgMessage { fn try_from(proto: pb::IDkgMessage) -> Result { use pb::i_dkg_message::Msg; - let Some(msg) = &proto.msg else { + let Some(msg) = proto.msg else { return Err(ProxyDecodeError::MissingField("IDkgMessage::msg")); }; - Ok(match &msg { + Ok(match msg { Msg::SignedDealing(x) => IDkgMessage::Dealing(x.try_into()?), Msg::DealingSupport(x) => IDkgMessage::DealingSupport(x.try_into()?), Msg::EcdsaSigShare(x) => IDkgMessage::EcdsaSigShare(x.try_into()?), @@ -1443,27 +1443,27 @@ pub struct EcdsaSigShare { pub share: ThresholdEcdsaSigShare, } -impl From<&EcdsaSigShare> for pb::EcdsaSigShare { - fn from(value: &EcdsaSigShare) -> Self { +impl From for pb::EcdsaSigShare { + fn from(value: EcdsaSigShare) -> Self { Self { signer_id: Some(node_id_into_protobuf(value.signer_id)), request_id: Some(pb::RequestId::from(value.request_id)), - sig_share_raw: value.share.sig_share_raw.clone(), + sig_share_raw: value.share.sig_share_raw, } } } -impl TryFrom<&pb::EcdsaSigShare> for EcdsaSigShare { +impl TryFrom for EcdsaSigShare { type Error = ProxyDecodeError; - fn try_from(value: &pb::EcdsaSigShare) -> Result { + fn try_from(value: pb::EcdsaSigShare) -> Result { Ok(Self { - signer_id: node_id_try_from_option(value.signer_id.clone())?, + signer_id: node_id_try_from_option(value.signer_id)?, request_id: try_from_option_field( value.request_id.as_ref(), "EcdsaSigShare::request_id", )?, share: ThresholdEcdsaSigShare { - sig_share_raw: value.sig_share_raw.clone(), + sig_share_raw: value.sig_share_raw, }, }) } @@ -1492,27 +1492,27 @@ pub struct SchnorrSigShare { pub share: ThresholdSchnorrSigShare, } -impl From<&SchnorrSigShare> for pb::SchnorrSigShare { - fn from(value: &SchnorrSigShare) -> Self { +impl From for pb::SchnorrSigShare { + fn from(value: SchnorrSigShare) -> Self { Self { signer_id: Some(node_id_into_protobuf(value.signer_id)), request_id: Some(pb::RequestId::from(value.request_id)), - sig_share_raw: value.share.sig_share_raw.clone(), + sig_share_raw: value.share.sig_share_raw, } } } -impl TryFrom<&pb::SchnorrSigShare> for SchnorrSigShare { +impl TryFrom for SchnorrSigShare { type Error = ProxyDecodeError; - fn try_from(value: &pb::SchnorrSigShare) -> Result { + fn try_from(value: pb::SchnorrSigShare) -> Result { Ok(Self { - signer_id: node_id_try_from_option(value.signer_id.clone())?, + signer_id: node_id_try_from_option(value.signer_id)?, request_id: try_from_option_field( value.request_id.as_ref(), "SchnorrSigShare::request_id", )?, share: ThresholdSchnorrSigShare { - sig_share_raw: value.sig_share_raw.clone(), + sig_share_raw: value.sig_share_raw, }, }) } @@ -1541,31 +1541,29 @@ pub struct VetKdKeyShare { pub share: VetKdEncryptedKeyShare, } -impl From<&VetKdKeyShare> for pb::VetKdKeyShare { - fn from(value: &VetKdKeyShare) -> Self { +impl From for pb::VetKdKeyShare { + fn from(value: VetKdKeyShare) -> Self { Self { signer_id: Some(node_id_into_protobuf(value.signer_id)), request_id: Some(pb::RequestId::from(value.request_id)), - encrypted_key_share: value.share.encrypted_key_share.0.clone(), - node_signature: value.share.node_signature.clone(), + encrypted_key_share: value.share.encrypted_key_share.0, + node_signature: value.share.node_signature, } } } -impl TryFrom<&pb::VetKdKeyShare> for VetKdKeyShare { +impl TryFrom for VetKdKeyShare { type Error = ProxyDecodeError; - fn try_from(value: &pb::VetKdKeyShare) -> Result { + fn try_from(value: pb::VetKdKeyShare) -> Result { Ok(Self { - signer_id: node_id_try_from_option(value.signer_id.clone())?, + signer_id: node_id_try_from_option(value.signer_id)?, request_id: try_from_option_field( value.request_id.as_ref(), "VetKdKeyShare::request_id", )?, share: VetKdEncryptedKeyShare { - encrypted_key_share: VetKdEncryptedKeyShareContent( - value.encrypted_key_share.clone(), - ), - node_signature: value.node_signature.clone(), + encrypted_key_share: VetKdEncryptedKeyShareContent(value.encrypted_key_share), + node_signature: value.node_signature, }, }) } @@ -1638,42 +1636,39 @@ impl SignedIDkgComplaint { } } -impl From<&SignedIDkgComplaint> for pb::SignedIDkgComplaint { - fn from(value: &SignedIDkgComplaint) -> Self { +impl From for pb::SignedIDkgComplaint { + fn from(value: SignedIDkgComplaint) -> Self { Self { - content: Some((&value.content).into()), - signature: Some(value.signature.clone().into()), + content: Some(value.content.into()), + signature: Some(value.signature.into()), } } } -impl TryFrom<&pb::SignedIDkgComplaint> for SignedIDkgComplaint { +impl TryFrom for SignedIDkgComplaint { type Error = ProxyDecodeError; - fn try_from(value: &pb::SignedIDkgComplaint) -> Result { + fn try_from(value: pb::SignedIDkgComplaint) -> Result { Ok(Self { - content: try_from_option_field(value.content.as_ref(), "SignedIDkgComplaint::content")?, - signature: try_from_option_field( - value.signature.clone(), - "SignedIDkgComplaint::signature", - )?, + content: try_from_option_field(value.content, "SignedIDkgComplaint::content")?, + signature: try_from_option_field(value.signature, "SignedIDkgComplaint::signature")?, }) } } -impl From<&IDkgComplaintContent> for pb::IDkgComplaintContent { - fn from(value: &IDkgComplaintContent) -> Self { +impl From for pb::IDkgComplaintContent { + fn from(value: IDkgComplaintContent) -> Self { Self { - idkg_complaint: Some((&value.idkg_complaint).into()), + idkg_complaint: Some(value.idkg_complaint.into()), } } } -impl TryFrom<&pb::IDkgComplaintContent> for IDkgComplaintContent { +impl TryFrom for IDkgComplaintContent { type Error = ProxyDecodeError; - fn try_from(value: &pb::IDkgComplaintContent) -> Result { + fn try_from(value: pb::IDkgComplaintContent) -> Result { Ok(Self { idkg_complaint: try_from_option_field( - value.idkg_complaint.as_ref(), + value.idkg_complaint, "IDkgComplaintContent::idkg_complaint", )?, }) @@ -1718,42 +1713,39 @@ impl SignedIDkgOpening { } } -impl From<&SignedIDkgOpening> for pb::SignedIDkgOpening { - fn from(value: &SignedIDkgOpening) -> Self { +impl From for pb::SignedIDkgOpening { + fn from(value: SignedIDkgOpening) -> Self { Self { - content: Some((&value.content).into()), - signature: Some(value.signature.clone().into()), + content: Some(value.content.into()), + signature: Some(value.signature.into()), } } } -impl TryFrom<&pb::SignedIDkgOpening> for SignedIDkgOpening { +impl TryFrom for SignedIDkgOpening { type Error = ProxyDecodeError; - fn try_from(value: &pb::SignedIDkgOpening) -> Result { + fn try_from(value: pb::SignedIDkgOpening) -> Result { Ok(Self { - content: try_from_option_field(value.content.as_ref(), "SignedIDkgOpening::content")?, - signature: try_from_option_field( - value.signature.clone(), - "SignedIDkgOpening::signature", - )?, + content: try_from_option_field(value.content, "SignedIDkgOpening::content")?, + signature: try_from_option_field(value.signature, "SignedIDkgOpening::signature")?, }) } } -impl From<&IDkgOpeningContent> for pb::IDkgOpeningContent { - fn from(value: &IDkgOpeningContent) -> Self { +impl From for pb::IDkgOpeningContent { + fn from(value: IDkgOpeningContent) -> Self { Self { - idkg_opening: Some((&value.idkg_opening).into()), + idkg_opening: Some(value.idkg_opening.into()), } } } -impl TryFrom<&pb::IDkgOpeningContent> for IDkgOpeningContent { +impl TryFrom for IDkgOpeningContent { type Error = ProxyDecodeError; - fn try_from(value: &pb::IDkgOpeningContent) -> Result { + fn try_from(value: pb::IDkgOpeningContent) -> Result { Ok(Self { idkg_opening: try_from_option_field( - value.idkg_opening.as_ref(), + value.idkg_opening, "IDkgOpeningContent::idkg_opening", )?, }) diff --git a/rs/types/types/src/crypto/canister_threshold_sig/idkg/proto_conversions.rs b/rs/types/types/src/crypto/canister_threshold_sig/idkg/proto_conversions.rs index 937aeb595aa7..fa78bfcb606d 100644 --- a/rs/types/types/src/crypto/canister_threshold_sig/idkg/proto_conversions.rs +++ b/rs/types/types/src/crypto/canister_threshold_sig/idkg/proto_conversions.rs @@ -80,7 +80,7 @@ impl From<&InitialIDkgDealings> for InitialIDkgDealingsProto { let signed_dealings = initial_dealings .dealings() .iter() - .map(signed_idkg_dealing_tuple_proto) + .map(|d| d.clone().into()) .collect(); InitialIDkgDealingsProto { version: CURRENT_INITIAL_IDKG_DEALINGS_VERSION, @@ -105,52 +105,52 @@ impl TryFrom<&InitialIDkgDealingsProto> for InitialIDkgDealings { } } -impl From<&IDkgOpening> for IDkgOpeningProto { - fn from(value: &IDkgOpening) -> Self { +impl From for IDkgOpeningProto { + fn from(value: IDkgOpening) -> Self { Self { transcript_id: Some(IDkgTranscriptIdProto::from(&value.transcript_id)), dealer: Some(node_id_into_protobuf(value.dealer_id)), - raw_opening: value.internal_opening_raw.clone(), + raw_opening: value.internal_opening_raw, } } } -impl TryFrom<&IDkgOpeningProto> for IDkgOpening { +impl TryFrom for IDkgOpening { type Error = ProxyDecodeError; - fn try_from(proto: &IDkgOpeningProto) -> Result { + fn try_from(proto: IDkgOpeningProto) -> Result { Ok(Self { transcript_id: try_from_option_field( proto.transcript_id.as_ref(), "IDkgOpening::transcript_id", )?, - dealer_id: node_id_try_from_option(proto.dealer.clone())?, - internal_opening_raw: proto.raw_opening.clone(), + dealer_id: node_id_try_from_option(proto.dealer)?, + internal_opening_raw: proto.raw_opening, }) } } -impl From<&IDkgComplaint> for IDkgComplaintProto { - fn from(value: &IDkgComplaint) -> Self { +impl From for IDkgComplaintProto { + fn from(value: IDkgComplaint) -> Self { Self { transcript_id: Some(IDkgTranscriptIdProto::from(&value.transcript_id)), dealer: Some(node_id_into_protobuf(value.dealer_id)), - raw_complaint: value.internal_complaint_raw.clone(), + raw_complaint: value.internal_complaint_raw, } } } -impl TryFrom<&IDkgComplaintProto> for IDkgComplaint { +impl TryFrom for IDkgComplaint { type Error = ProxyDecodeError; - fn try_from(proto: &IDkgComplaintProto) -> Result { + fn try_from(proto: IDkgComplaintProto) -> Result { Ok(Self { transcript_id: try_from_option_field( proto.transcript_id.as_ref(), "IDkgComplaint::transcript_id", )?, - dealer_id: node_id_try_from_option(proto.dealer.clone())?, - internal_complaint_raw: proto.raw_complaint.clone(), + dealer_id: node_id_try_from_option(proto.dealer)?, + internal_complaint_raw: proto.raw_complaint, }) } } @@ -174,60 +174,64 @@ impl TryFrom for ExtendedDerivationPath { } } -impl From<&IDkgDealingSupport> for IDkgDealingSupportProto { - fn from(value: &IDkgDealingSupport) -> Self { +impl From for IDkgDealingSupportProto { + fn from(value: IDkgDealingSupport) -> Self { Self { transcript_id: Some(IDkgTranscriptIdProto::from(&value.transcript_id)), dealer: Some(node_id_into_protobuf(value.dealer_id)), - dealing_hash: value.dealing_hash.clone().get().0, - sig_share: Some(BasicSignatureProto::from(value.sig_share.clone())), + dealing_hash: value.dealing_hash.get().0, + sig_share: Some(BasicSignatureProto::from(value.sig_share)), } } } -impl TryFrom<&IDkgDealingSupportProto> for IDkgDealingSupport { +impl TryFrom for IDkgDealingSupport { type Error = ProxyDecodeError; - fn try_from(proto: &IDkgDealingSupportProto) -> Result { + fn try_from(proto: IDkgDealingSupportProto) -> Result { Ok(Self { transcript_id: try_from_option_field( proto.transcript_id.as_ref(), "IDkgDealingSupport::transcript_id", )?, - dealer_id: node_id_try_from_option(proto.dealer.clone())?, - dealing_hash: CryptoHashOf::new(crate::crypto::CryptoHash(proto.dealing_hash.clone())), - sig_share: try_from_option_field( - proto.sig_share.clone(), - "IDkgDealingSupport::sig_share", - )?, + dealer_id: node_id_try_from_option(proto.dealer)?, + dealing_hash: CryptoHashOf::new(crate::crypto::CryptoHash(proto.dealing_hash)), + sig_share: try_from_option_field(proto.sig_share, "IDkgDealingSupport::sig_share")?, }) } } -impl From<&SignedIDkgDealing> for IDkgSignedDealingTupleProto { - fn from(value: &SignedIDkgDealing) -> Self { - signed_idkg_dealing_tuple_proto(value) +impl From for IDkgSignedDealingTupleProto { + fn from(value: SignedIDkgDealing) -> Self { + let dealing = IDkgDealingProto { + transcript_id: Some(IDkgTranscriptIdProto::from(&value.content.transcript_id)), + raw_dealing: value.content.internal_dealing_raw, + }; + IDkgSignedDealingTupleProto { + dealer: Some(node_id_into_protobuf(value.signature.signer)), + dealing: Some(dealing), + signature: value.signature.signature.get().0, + } } } -impl TryFrom<&IDkgSignedDealingTupleProto> for SignedIDkgDealing { +impl TryFrom for SignedIDkgDealing { type Error = ProxyDecodeError; - fn try_from(proto: &IDkgSignedDealingTupleProto) -> Result { + fn try_from(proto: IDkgSignedDealingTupleProto) -> Result { let idkg_dealing_proto = proto .dealing - .as_ref() .ok_or(ProxyDecodeError::Other("Missing IDkgDealing.".to_string()))?; let idkg_dealing = IDkgDealing { transcript_id: try_from_option_field( idkg_dealing_proto.transcript_id.as_ref(), "IDkgDealing::transcript_id", )?, - internal_dealing_raw: idkg_dealing_proto.raw_dealing.clone(), + internal_dealing_raw: idkg_dealing_proto.raw_dealing, }; let basic_signature = BasicSignature { - signature: BasicSigOf::new(BasicSig(proto.signature.clone())), - signer: node_id_try_from_option(proto.dealer.clone())?, + signature: BasicSigOf::new(BasicSig(proto.signature)), + signer: node_id_try_from_option(proto.dealer)?, }; Ok(SignedIDkgDealing { content: idkg_dealing, @@ -500,30 +504,13 @@ fn idkg_transcript_struct(proto: &IDkgTranscriptProto) -> Result IDkgSignedDealingTupleProto { - let idkg_dealing = signed_dealing.idkg_dealing(); - let dealing = IDkgDealingProto { - transcript_id: Some(IDkgTranscriptIdProto::from(&idkg_dealing.transcript_id)), - raw_dealing: idkg_dealing.internal_dealing_raw.clone(), - }; - IDkgSignedDealingTupleProto { - dealer: Some(node_id_into_protobuf(signed_dealing.dealer_id())), - dealing: Some(dealing), - signature: signed_dealing.signature.signature.as_ref().0.clone(), - } -} - fn verified_idkg_dealing_proto( dealer_index: &NodeIndex, signed_dealing: &BatchSignedIDkgDealing, ) -> VerifiedIDkgDealingProto { VerifiedIDkgDealingProto { dealer_index: *dealer_index, - signed_dealing_tuple: Some(signed_idkg_dealing_tuple_proto( - signed_dealing.signed_idkg_dealing(), - )), + signed_dealing_tuple: Some(signed_dealing.signed_idkg_dealing().clone().into()), support_tuples: signed_dealing .signature .signatures_map @@ -550,7 +537,7 @@ fn verified_dealings_map( for proto in verified_protos { let node_index = proto.dealer_index; let signed_dealing: SignedIDkgDealing = try_from_option_field( - proto.signed_dealing_tuple.as_ref(), + proto.signed_dealing_tuple.clone(), "VerifiedIDkgDealing::signed_dealing_tuple", )?; let batch_signed_dealing = BatchSignedIDkgDealing { @@ -586,7 +573,7 @@ fn initial_dealings_vec( ) -> Result, ProxyDecodeError> { let mut result = Vec::new(); for proto in dealing_tuple_protos { - result.push(SignedIDkgDealing::try_from(proto)?); + result.push(SignedIDkgDealing::try_from(proto.clone())?); } Ok(result) } diff --git a/rs/types/types/src/crypto/canister_threshold_sig/idkg/tests/proto_conversions.rs b/rs/types/types/src/crypto/canister_threshold_sig/idkg/tests/proto_conversions.rs index f6eba3f5a06e..74845af0b8db 100644 --- a/rs/types/types/src/crypto/canister_threshold_sig/idkg/tests/proto_conversions.rs +++ b/rs/types/types/src/crypto/canister_threshold_sig/idkg/tests/proto_conversions.rs @@ -31,8 +31,8 @@ use std::convert::TryFrom; #[test] fn should_correctly_serialize_and_deserialize_idkg_opening() { let opening = idkg_opening(); - let proto = IDkgOpeningProto::from(&opening); - let parsing_result = IDkgOpening::try_from(&proto); + let proto = IDkgOpeningProto::from(opening.clone()); + let parsing_result = IDkgOpening::try_from(proto); assert!(parsing_result.is_ok(), "{:?}", parsing_result.err()); let parsed = parsing_result.unwrap(); assert_eq!(opening, parsed); @@ -41,8 +41,8 @@ fn should_correctly_serialize_and_deserialize_idkg_opening() { #[test] fn should_correctly_serialize_and_deserialize_idkg_complaint() { let complaint = idkg_complaint(); - let proto = IDkgComplaintProto::from(&complaint); - let parsing_result = IDkgComplaint::try_from(&proto); + let proto = IDkgComplaintProto::from(complaint.clone()); + let parsing_result = IDkgComplaint::try_from(proto); assert!(parsing_result.is_ok(), "{:?}", parsing_result.err()); let parsed = parsing_result.unwrap(); assert_eq!(complaint, parsed); @@ -75,9 +75,9 @@ fn should_correctly_serialize_and_deserialize_dealing_support() { let rng = &mut reproducible_rng(); for _ in 0..100 { let dealing_support = dummy_dealing_support(rng); - let proto = IDkgDealingSupportProto::from(&dealing_support); + let proto = IDkgDealingSupportProto::from(dealing_support.clone()); assert_matches!( - IDkgDealingSupport::try_from(&proto), + IDkgDealingSupport::try_from(proto), Ok(decoded_dealing_support) if decoded_dealing_support == dealing_support );