examples-features/ctap: Add the PrivateKey type

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
diff --git a/Cargo.toml b/Cargo.toml
index 002ccaa..62b382c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -26,6 +26,9 @@
 # with the nightly toolchain used by libtock-rs.
 serde = { version = "=1.0.114", default-features = false, features = ["derive"] }
 ctap2-authenticator = { git = "https://gitlab.com/ctap2-authenticator/ctap2-authenticator.git" }
+p256 = { version = "0.5.0" , default-features = false, features = ["arithmetic", "ecdsa", "ecdsa-core"] }
+subtle = { version = "2.3.0", default-features = false, features = ["i128"] }
+generic-array = { version = "0.14.3" }
 
 [[example]]
 name = "alloc_error"
diff --git a/examples-features/ctap.rs b/examples-features/ctap.rs
index 63753ea..9715af9 100644
--- a/examples-features/ctap.rs
+++ b/examples-features/ctap.rs
@@ -15,11 +15,38 @@
 use ctap2_authenticator::{
     AuthenticatorPlatform, CredentialDescriptorList, CtapOptions, PublicKey, Signature,
 };
+use generic_array::GenericArray;
 use libtock::ctap::{CtapRecvBuffer, CtapSendBuffer};
 use libtock::hmac::HmacDriverFactory;
 use libtock::println;
 use libtock::result::TockResult;
 use libtock::syscalls;
+use p256::elliptic_curve::ff::PrimeField;
+use p256::Scalar;
+use subtle::{Choice, ConditionallySelectable};
+
+#[derive(Debug, Clone, PartialEq, Eq, Copy)]
+pub struct PrivateKey(Scalar);
+
+impl ConditionallySelectable for PrivateKey {
+    fn conditional_select(a: &Self, b: &Self, choice: Choice) -> Self {
+        Self(ConditionallySelectable::conditional_select(
+            &a.0, &b.0, choice,
+        ))
+    }
+}
+
+impl Default for PrivateKey {
+    fn default() -> Self {
+        Self(Scalar::default())
+    }
+}
+
+impl PrivateKey {
+    pub fn from_bytes(bytes: &[u8; 32]) -> Option<Self> {
+        Scalar::from_repr(GenericArray::clone_from_slice(bytes)).map(|s| Self(s))
+    }
+}
 
 /// This is the provided implementation of `CtapHidPlatform` to be used in the `UsbContext`
 pub(crate) struct UsbKeyHidPlatform {}