From c75feffbdb06113274a9a25b31501618a37f4e0f Mon Sep 17 00:00:00 2001 From: librelois <c@elo.tf> Date: Wed, 17 Mar 2021 17:33:20 +0100 Subject: [PATCH] =?UTF-8?q?[feat]=20gva:bca:=C2=A0add=20req=20ProofServerP?= =?UTF-8?q?ubkey?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rust-libs/modules/gva/bca/src/exec_req_type.rs | 10 ++++++++++ rust-libs/modules/gva/bca/src/lib.rs | 2 +- rust-libs/modules/gva/bca/types/src/lib.rs | 8 +++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/rust-libs/modules/gva/bca/src/exec_req_type.rs b/rust-libs/modules/gva/bca/src/exec_req_type.rs index ea3a3a193..3134f3d3e 100644 --- a/rust-libs/modules/gva/bca/src/exec_req_type.rs +++ b/rust-libs/modules/gva/bca/src/exec_req_type.rs @@ -16,6 +16,8 @@ mod members_count; mod prepare_simple_payment; +use dubp::crypto::keys::KeyPair; + use crate::*; #[derive(Debug, PartialEq)] @@ -40,6 +42,14 @@ pub(super) async fn execute_req_type( BcaReqTypeV0::PrepareSimplePayment(params) => { prepare_simple_payment::exec_req_prepare_simple_payment(bca_executor, params).await } + BcaReqTypeV0::ProofServerPubkey { challenge } => Ok(BcaRespTypeV0::ProofServerPubkey { + challenge, + server_pubkey: bca_executor.self_keypair.public_key(), + sig: bca_executor + .self_keypair + .generate_signator() + .sign(&challenge), + }), BcaReqTypeV0::Ping => Ok(BcaRespTypeV0::Pong), } } diff --git a/rust-libs/modules/gva/bca/src/lib.rs b/rust-libs/modules/gva/bca/src/lib.rs index 45119cfdc..414872e77 100644 --- a/rust-libs/modules/gva/bca/src/lib.rs +++ b/rust-libs/modules/gva/bca/src/lib.rs @@ -32,7 +32,7 @@ use crate::exec_req_type::ExecReqTypeError; use crate::utils::AsyncReader; use async_bincode::AsyncBincodeReader; use bincode::Options as _; -use dubp::crypto::keys::ed25519::Ed25519KeyPair; +use dubp::crypto::keys::{ed25519::Ed25519KeyPair, Signator}; use duniter_bca_types::{BcaReq, BcaReqTypeV0, BcaResp, BcaRespTypeV0, BcaRespV0, ReqExecError}; use duniter_dbs::{FileBackend, SharedDbs}; use futures::{prelude::stream::FuturesUnordered, StreamExt, TryStream, TryStreamExt}; diff --git a/rust-libs/modules/gva/bca/types/src/lib.rs b/rust-libs/modules/gva/bca/types/src/lib.rs index b9cef49b3..7b870f839 100644 --- a/rust-libs/modules/gva/bca/types/src/lib.rs +++ b/rust-libs/modules/gva/bca/types/src/lib.rs @@ -26,7 +26,7 @@ pub mod prepare_payment; use crate::prepare_payment::{PrepareSimplePayment, PrepareSimplePaymentResp}; use dubp::crypto::hashs::Hash; -use dubp::crypto::keys::ed25519::PublicKey; +use dubp::crypto::keys::ed25519::{PublicKey, Signature}; use dubp::wallet::prelude::*; use serde::{Deserialize, Serialize}; //use smallvec::SmallVec; @@ -47,6 +47,7 @@ pub struct BcaReqV0 { pub enum BcaReqTypeV0 { MembersCount, PrepareSimplePayment(PrepareSimplePayment), + ProofServerPubkey { challenge: [u8; 16] }, Ping, } @@ -65,6 +66,11 @@ pub struct BcaRespV0 { #[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)] pub enum BcaRespTypeV0 { Error(String), + ProofServerPubkey { + challenge: [u8; 16], + server_pubkey: PublicKey, + sig: Signature, + }, MembersCount(u64), PrepareSimplePayment(PrepareSimplePaymentResp), Pong, -- GitLab