Enable remote OPRF seed support (#373)

This commit is contained in:
daxpedda
2025-05-05 04:12:54 -07:00
committed by GitHub
parent b16cf8ce05
commit 58b4d746c0
5 changed files with 321 additions and 105 deletions
+12 -12
View File
@@ -23,20 +23,20 @@ use crate::key_exchange::tripledh::DiffieHellman;
feature = "serde",
derive(serde::Deserialize, serde::Serialize),
serde(bound(
deserialize = "S: serde::Deserialize<'de>",
serialize = "S: serde::Serialize"
deserialize = "SK: serde::Deserialize<'de>",
serialize = "SK: serde::Serialize"
))
)]
#[derive_where(Clone)]
#[derive_where(Debug, Eq, Hash, Ord, PartialEq, PartialOrd; KG::Pk, S)]
pub struct KeyPair<KG: KeGroup, S: Clone = PrivateKey<KG>> {
#[derive_where(Debug, Eq, Hash, Ord, PartialEq, PartialOrd; KG::Pk, SK)]
pub struct KeyPair<KG: KeGroup, SK: Clone = PrivateKey<KG>> {
pk: PublicKey<KG>,
sk: S,
sk: SK,
}
impl<KG: KeGroup, S: Clone> KeyPair<KG, S> {
impl<KG: KeGroup, SK: Clone> KeyPair<KG, SK> {
/// Creates a new [`KeyPair`] from the given keys.
pub fn new(sk: S, pk: PublicKey<KG>) -> Self {
pub fn new(sk: SK, pk: PublicKey<KG>) -> Self {
Self { pk, sk }
}
@@ -46,7 +46,7 @@ impl<KG: KeGroup, S: Clone> KeyPair<KG, S> {
}
/// The private key component
pub fn private(&self) -> &S {
pub fn private(&self) -> &SK {
&self.sk
}
}
@@ -171,9 +171,9 @@ impl<'de, KG: KeGroup> serde::Deserialize<'de> for PrivateKey<KG> {
#[cfg(feature = "serde")]
impl<KG: KeGroup> serde::Serialize for PrivateKey<KG> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
fn serialize<SK>(&self, serializer: SK) -> Result<SK::Ok, SK::Error>
where
S: serde::Serializer,
SK: serde::Serializer,
{
KG::serialize_sk(self.0).serialize(serializer)
}
@@ -217,9 +217,9 @@ impl<'de, KG: KeGroup> serde::Deserialize<'de> for PublicKey<KG> {
#[cfg(feature = "serde")]
impl<KG: KeGroup> serde::Serialize for PublicKey<KG> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
fn serialize<SK>(&self, serializer: SK) -> Result<SK::Ok, SK::Error>
where
S: serde::Serializer,
SK: serde::Serializer,
{
KG::serialize_pk(self.0).serialize(serializer)
}