Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
Co-authored-by: Marcel Feldmann <feldmann@filancore.com>
Co-authored-by: Andrej Krakau <krakau@filancore.com>
  • Loading branch information
3 people committed Apr 1, 2021
1 parent f4d0ea5 commit 628e7be
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 4 deletions.
9 changes: 8 additions & 1 deletion identity-comm/src/envelope/plaintext.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@

use identity_core::convert::ToJson as _;
use serde::Serialize;
use serde::Deserialize;

use crate::{envelope::EnvelopeExt, error::Result};
use crate::{envelope::EnvelopeExt, error::Result, error::Error};

/// A DIDComm Plaintext Message
///
Expand All @@ -20,6 +21,12 @@ impl Envelope {
pub fn from_message<T: Serialize>(message: &T) -> Result<Self> {
message.to_json().map_err(Into::into).map(Self)
}
pub fn to_message<'a, T>(&'a self) -> Result<T>
where
T: Deserialize<'a> {
serde_json::from_str(&self.0).map_err(Error::from)
}

}

impl EnvelopeExt for Envelope {
Expand Down
7 changes: 6 additions & 1 deletion identity-comm/src/envelope/signed.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
use identity_core::{crypto::KeyPair, utils::encode_b58};
use libjose::{
jose::JoseTokenType,
jws::{Encoder, JwsAlgorithm, JwsFormat, JwsHeader},
jws::{Encoder, JwsAlgorithm, JwsFormat, JwsHeader,Decoder},
};
use serde::Serialize;
use serde::Deserialize;


use crate::{
Expand Down Expand Up @@ -64,6 +65,10 @@ impl Envelope {
.map_err(Into::into)
.map(Self)
}
pub fn to_message<'a, T>(&'a self, algorithm: Algorithm, keypair: &KeyPair) -> Result<T>
where T: Deserialize<'a> {
Decoder::new(keypair.public().as_bytes()).format(JwsFormat::Compact).algorithm(algorithm).decode(self.as_bytes()).map_err(Into::into)
}
}

impl EnvelopeExt for Envelope {
Expand Down
2 changes: 2 additions & 0 deletions identity-comm/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,6 @@ pub enum Error {
JoseError(#[from] libjose::error::Error),
#[error("DID Document Error: {0}")]
DocumentError(#[from] did_doc::Error),
#[error("JSON Error: {0}")]
JsonError(#[from] serde_json::error::Error)
}
12 changes: 10 additions & 2 deletions identity-comm/src/message/trustping.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,15 +191,23 @@ impl Message for TrustpingResponse{}

mod tests {
use std::str::FromStr;
use super::*;
use did_doc::Signature;

use super::*;
use crate::message::message::AsEnvelope;
use crate::envelope::EnvelopeExt;
use crate::envelope::SignatureAlgorithm;
use identity_core::crypto::KeyPair;
#[test]
pub fn test_setter() {
let mut message = Trustping::new(Url::from_str("https://example.com").unwrap());
message.set_response_requested(Some(true));
let plain_envelope = message.pack_plain().unwrap();
let bytes = plain_envelope.as_bytes();
dbg!(bytes);
let message2:Trustping = plain_envelope.to_message().unwrap();
dbg!(message2);
let keypair = KeyPair::new_ed25519().unwrap();
let message3 = message.pack_non_repudiable(SignatureAlgorithm::EdDSA,&keypair).unwrap();
dbg!(message3);
}
}

0 comments on commit 628e7be

Please sign in to comment.