serde_encrypt/key/
key_pair.rs

1//! X25519 key-pair (public-key and private-key).
2
3use serde_encrypt_core::key::key_pair::{
4    private_key::{ReceiverPrivateKey, SenderPrivateKey},
5    public_key::{ReceiverPublicKey, SenderPublicKey},
6    ReceiverKeyPairCore, SenderKeyPairCore,
7};
8
9use crate::random::RngSingletonImpl;
10
11/// Message sender's key pair
12#[derive(Clone, Debug)]
13pub struct SenderKeyPair {
14    sender_private_key: SenderPrivateKey,
15    sender_public_key: SenderPublicKey,
16}
17
18impl SenderKeyPairCore for SenderKeyPair {
19    type R = RngSingletonImpl;
20
21    fn new(sender_private_key: SenderPrivateKey, sender_public_key: SenderPublicKey) -> Self
22    where
23        Self: Sized,
24    {
25        Self {
26            sender_private_key,
27            sender_public_key,
28        }
29    }
30
31    fn private_key(&self) -> &SenderPrivateKey {
32        &self.sender_private_key
33    }
34
35    fn public_key(&self) -> &SenderPublicKey {
36        &self.sender_public_key
37    }
38}
39
40/// Message receiver's key pair
41#[derive(Clone, Debug)]
42pub struct ReceiverKeyPair {
43    receiver_private_key: ReceiverPrivateKey,
44    receiver_public_key: ReceiverPublicKey,
45}
46
47impl ReceiverKeyPairCore for ReceiverKeyPair {
48    type R = RngSingletonImpl;
49
50    fn new(receiver_private_key: ReceiverPrivateKey, receiver_public_key: ReceiverPublicKey) -> Self
51    where
52        Self: Sized,
53    {
54        Self {
55            receiver_private_key,
56            receiver_public_key,
57        }
58    }
59
60    fn private_key(&self) -> &ReceiverPrivateKey {
61        &self.receiver_private_key
62    }
63
64    fn public_key(&self) -> &ReceiverPublicKey {
65        &self.receiver_public_key
66    }
67}