aboutsummaryrefslogtreecommitdiffstats
path: root/src/locked.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/locked.rs')
-rw-r--r--src/locked.rs37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/locked.rs b/src/locked.rs
index 611e57e..4ddf021 100644
--- a/src/locked.rs
+++ b/src/locked.rs
@@ -32,7 +32,7 @@ impl Vec {
pub fn zero(&mut self) {
self.truncate(0);
- self.data.extend(std::iter::repeat(0).take(LEN))
+ self.data.extend(std::iter::repeat(0).take(LEN));
}
pub fn extend(&mut self, it: impl Iterator<Item = u8>) {
@@ -51,6 +51,15 @@ impl Drop for Vec {
}
}
+impl Clone for Vec {
+ fn clone(&self) -> Self {
+ let mut new_vec = Self::new();
+ new_vec.extend(self.data().iter().copied());
+ new_vec
+ }
+}
+
+#[derive(Clone)]
pub struct Password {
password: Vec,
}
@@ -65,6 +74,7 @@ impl Password {
}
}
+#[derive(Clone)]
pub struct Keys {
keys: Vec,
}
@@ -83,6 +93,7 @@ impl Keys {
}
}
+#[derive(Clone)]
pub struct PasswordHash {
hash: Vec,
}
@@ -97,6 +108,7 @@ impl PasswordHash {
}
}
+#[derive(Clone)]
pub struct PrivateKey {
private_key: Vec,
}
@@ -110,3 +122,26 @@ impl PrivateKey {
self.private_key.data()
}
}
+
+#[derive(Clone)]
+pub struct ApiKey {
+ client_id: Password,
+ client_secret: Password,
+}
+
+impl ApiKey {
+ pub fn new(client_id: Password, client_secret: Password) -> Self {
+ Self {
+ client_id,
+ client_secret,
+ }
+ }
+
+ pub fn client_id(&self) -> &[u8] {
+ self.client_id.password()
+ }
+
+ pub fn client_secret(&self) -> &[u8] {
+ self.client_secret.password()
+ }
+}