Skip to content

Commit

Permalink
Add byte accessors to ElligatorSwiftSharedSecret
Browse files Browse the repository at this point in the history
The inner bytes of `ElligatorSwiftSharedSecret` were almost inaccessible
making the type almost useless, so this commit adds methods to access
inner bytes.

Closes #675
  • Loading branch information
Kixunil committed Jan 30, 2024
1 parent 4dede13 commit 7fe89c4
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/ellswift.rs
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,20 @@ impl ElligatorSwift {
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct ElligatorSwiftSharedSecret([u8; 32]);

impl ElligatorSwiftSharedSecret {
/// Creates shared secret from bytes.
///
/// This is generally not needed except for unusual cases like restoring the secret from a
/// database.
pub const fn from_secret_bytes(bytes: [u8; 32]) -> Self { Self(bytes) }

/// Returns the secret bytes as an array.
pub const fn to_secret_bytes(self) -> [u8; 32] { self.0 }

/// Returns the secret bytes as a reference to an array.
pub const fn as_secret_bytes(&self) -> &[u8; 32] { &self.0 }
}

/// Represents which party we are in the ECDH, A is the initiator, B is the responder.
/// This is important because the hash of the shared secret is different depending on which party
/// we are. In this context, "we" means the party that is using this library, and possesses the
Expand Down

0 comments on commit 7fe89c4

Please sign in to comment.