diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 24dc55d..e3e68fe 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,6 +15,7 @@ jobs: backend_feature: - - --features ristretto255 + - --features ristretto255,kem - --features curve25519 - --features ecdsa - --features ed25519 @@ -73,6 +74,7 @@ jobs: backend_feature: - - --features ristretto255 + - --features ristretto255,kem - --features curve25519 - --features ecdsa - --features ed25519 @@ -167,6 +169,7 @@ jobs: matrix: backend_feature: - --features ristretto255 + - --features ristretto255,kem - steps: - name: Checkout sources @@ -204,7 +207,7 @@ jobs: uses: actions-rs/cargo@v1 with: command: clippy - args: --all-targets --features argon2,std,curve25519,ecdsa,ed25519 -- -D warnings + args: --all-targets --features argon2,std,curve25519,ecdsa,ed25519,kem -- -D warnings format: name: cargo fmt @@ -233,7 +236,7 @@ jobs: RUSTDOCFLAGS: -D warnings with: command: doc - args: --no-deps --document-private-items --features argon2,std,curve25519,ecdsa,ed25519 + args: --no-deps --document-private-items --features argon2,std,curve25519,ecdsa,ed25519,kem taplo: name: Taplo diff --git a/Cargo.toml b/Cargo.toml index 5cce949..90a7f98 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,7 @@ curve25519 = ["dep:curve25519-dalek"] default = ["ristretto255", "serde"] ecdsa = ["dep:ecdsa", "dep:rfc6979"] ed25519 = ["dep:curve25519-dalek", "dep:ed25519-dalek"] +kem = ["dep:ml-kem"] ristretto255 = ["dep:curve25519-dalek", "voprf/ristretto255-ciphersuite"] serde = [ "dep:serde", @@ -53,6 +54,9 @@ elliptic-curve = { version = "0.13", features = ["hash2curve", "sec1"] } generic-array = "=0.14.7" # pinned to avoid deprecation warnings hkdf = "0.12" hmac = "0.12" +ml-kem = { version = "0.2", default-features = false, features = [ + "zeroize", +], optional = true } rand = { version = "0.8", default-features = false } rfc6979 = { version = "0.4", optional = true } serde = { version = "1", default-features = false, features = [ diff --git a/src/errors.rs b/src/errors.rs index 971eba9..a9d931b 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -24,6 +24,8 @@ pub enum InternalError { HmacError, /// Computing the key stretching function failed KsfError, + /// Error while performing a KEM operation + KemError, /** This error occurs when the envelope seal open hmac check fails HMAC check in seal open failed. */ SealOpenHmacError, @@ -43,6 +45,7 @@ impl Debug for InternalError { Self::HkdfError => f.debug_tuple("HkdfError").finish(), Self::HmacError => f.debug_tuple("HmacError").finish(), Self::KsfError => f.debug_tuple("KsfError").finish(), + Self::KemError => f.debug_tuple("KemError").finish(), Self::SealOpenHmacError => f.debug_tuple("SealOpenHmacError").finish(), Self::IncompatibleEnvelopeModeError => { f.debug_tuple("IncompatibleEnvelopeModeError").finish() diff --git a/src/key_exchange/mod.rs b/src/key_exchange/mod.rs index 8c5f87d..ed766da 100644 --- a/src/key_exchange/mod.rs +++ b/src/key_exchange/mod.rs @@ -13,6 +13,8 @@ pub mod group; pub(crate) mod shared; pub mod sigma_i; pub mod tripledh; +#[cfg(feature = "kem")] +pub mod tripledh_kem; use core::iter; use core::ops::Add; diff --git a/src/key_exchange/tripledh_kem.rs b/src/key_exchange/tripledh_kem.rs new file mode 100644 index 0000000..ef7553c --- /dev/null +++ b/src/key_exchange/tripledh_kem.rs @@ -0,0 +1,696 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. +// +// This source code is dual-licensed under either the MIT license found in the +// LICENSE-MIT file in the root directory of this source tree or the Apache +// License, Version 2.0 found in the LICENSE-APACHE file in the root directory +// of this source tree. You may select, at your option, one of the above-listed +// licenses. + +//! TripleDH-KEM is a variant of the OPAQUE Triple Diffie-Hellman handshake in +//! which the client supplies a KEM public key in KE1 and the server performs a +//! KEM encapsulation in KE2 instead of relying solely on the final Diffie- +//! Hellman hop. The server bundles the KEM ciphertext alongside the classic +//! `TripleDH` payload, both parties absorb the ciphertext into the transcript +//! and mix the encapsulated shared secret with the three Diffie-Hellman +//! products when deriving handshake keys, and the client decapsulates during +//! KE3 to recover that shared secret before validating the server MAC. This +//! file contains the data model and trait glue that layer +//! the generic `ml-kem` abstractions into the existing OPAQUE key-exchange +//! pipeline. + +use core::convert::TryFrom; +use core::fmt::Debug; +use core::marker::PhantomData; +use core::ops::Add; + +use derive_where::derive_where; +use digest::core_api::BlockSizeUser; +use digest::{Digest, Output}; +use generic_array::sequence::Concat; +use generic_array::typenum::{IsLess, Le, NonZero, Sum, U256}; +use generic_array::{ArrayLength, GenericArray}; +use ml_kem::kem::{Decapsulate, Encapsulate}; +use ml_kem::{ + Ciphertext as MlKemCiphertext, Encoded, EncodedSizeUser, KemCore, SharedKey as MlKemSharedKey, +}; +use rand::{CryptoRng, RngCore}; +use subtle::{ConstantTimeEq, CtOption}; +use zeroize::{Zeroize, ZeroizeOnDrop}; + +use super::shared::{self, Ke1Message, Ke1State, NonceLen}; +use super::{ + Deserialize, GenerateKe1Result, GenerateKe2Result, GenerateKe3Result, KeyExchange, Serialize, + SerializedContext, SerializedCredentialRequest, SerializedCredentialResponse, + SerializedIdentifiers, +}; +use crate::ciphersuite::{CipherSuite, KeGroup}; +use crate::errors::{InternalError, ProtocolError}; +use crate::hash::{Hash, OutputSize, ProxyHash}; +use crate::key_exchange::group::Group; +use crate::keypair::{PrivateKey, PublicKey}; +use crate::opaque::Identifiers; +use crate::serialization::SliceExt; + +/// Adapter trait that augments the `ml-kem` core traits with the metadata +/// required by OPAQUE (e.g. fixed lengths and serialization hooks). +pub trait KemCoreWrapper { + /// Public key type used for encapsulation operations. + type EncapsulationKey: Clone; + + /// Secret key type used for decapsulation operations. + type DecapsulationKey: Clone + ZeroizeOnDrop; + + /// Length (in bytes) of the serialized public key. + type EncapsulationKeyLen: ArrayLength; + /// Length (in bytes) of the serialized secret key. + type DecapsulationKeyLen: ArrayLength; + /// Length (in bytes) of the encapsulated ciphertext. + type CiphertextLen: ArrayLength; + /// Length (in bytes) of the shared secret output by the KEM. + type SharedSecretLen: ArrayLength; + + /// Generates a fresh KEM key pair. + fn generate( + rng: &mut R, + ) -> Result<(Self::DecapsulationKey, Self::EncapsulationKey), ProtocolError>; + + /// Serializes the public encapsulation key. + fn serialize_encapsulation_key( + key: &Self::EncapsulationKey, + ) -> GenericArray; + + /// Deserializes the public encapsulation key, advancing the input slice. + fn deserialize_encapsulation_key( + input: &mut &[u8], + ) -> Result; + + /// Serializes the secret decapsulation key. + fn serialize_decapsulation_key( + key: &Self::DecapsulationKey, + ) -> GenericArray; + + /// Deserializes the secret decapsulation key, advancing the input slice. + fn deserialize_decapsulation_key( + input: &mut &[u8], + ) -> Result; + + /// Encapsulates to the given public key, returning the ciphertext and + /// shared secret. + #[allow(clippy::type_complexity)] + fn encapsulate( + key: &Self::EncapsulationKey, + rng: &mut R, + ) -> Result< + ( + GenericArray, + GenericArray, + ), + ProtocolError, + >; + + /// Decapsulates the shared secret from the provided ciphertext. + fn decapsulate( + key: &Self::DecapsulationKey, + encapsulated_key: &GenericArray, + ) -> Result, ProtocolError>; +} + +type RcEncapsulationKeyLen = <::EncapsulationKey as EncodedSizeUser>::EncodedSize; +type RcDecapsulationKeyLen = <::DecapsulationKey as EncodedSizeUser>::EncodedSize; +type RcCiphertextLen = ::CiphertextSize; +type RcSharedSecretLen = ::SharedKeySize; + +impl KemCoreWrapper for K +where + K: KemCore, + K::EncapsulationKey: Encapsulate, MlKemSharedKey> + Clone, + K::DecapsulationKey: Decapsulate, MlKemSharedKey> + Clone + ZeroizeOnDrop, + RcEncapsulationKeyLen: ArrayLength, + RcDecapsulationKeyLen: ArrayLength, + RcCiphertextLen: ArrayLength, + RcSharedSecretLen: ArrayLength, +{ + type EncapsulationKey = K::EncapsulationKey; + type DecapsulationKey = K::DecapsulationKey; + type EncapsulationKeyLen = RcEncapsulationKeyLen; + type DecapsulationKeyLen = RcDecapsulationKeyLen; + type CiphertextLen = RcCiphertextLen; + type SharedSecretLen = RcSharedSecretLen; + + fn generate( + rng: &mut R, + ) -> Result<(Self::DecapsulationKey, Self::EncapsulationKey), ProtocolError> { + Ok(K::generate(rng)) + } + + fn serialize_encapsulation_key( + key: &Self::EncapsulationKey, + ) -> GenericArray { + GenericArray::clone_from_slice(key.as_bytes().as_slice()) + } + + fn deserialize_encapsulation_key( + input: &mut &[u8], + ) -> Result { + let bytes: GenericArray> = + input.take_array("kem encapsulation key")?; + let encoded = Encoded::::try_from(bytes.as_slice()) + .map_err(|_| ProtocolError::SerializationError)?; + Ok(K::EncapsulationKey::from_bytes(&encoded)) + } + + fn serialize_decapsulation_key( + key: &Self::DecapsulationKey, + ) -> GenericArray { + GenericArray::clone_from_slice(key.as_bytes().as_slice()) + } + + fn deserialize_decapsulation_key( + input: &mut &[u8], + ) -> Result { + let bytes: GenericArray> = + input.take_array("kem decapsulation key")?; + let encoded = Encoded::::try_from(bytes.as_slice()) + .map_err(|_| ProtocolError::SerializationError)?; + Ok(K::DecapsulationKey::from_bytes(&encoded)) + } + + fn encapsulate( + key: &Self::EncapsulationKey, + rng: &mut R, + ) -> Result< + ( + GenericArray, + GenericArray, + ), + ProtocolError, + > { + key.encapsulate(rng) + .map(|(ciphertext, shared)| { + ( + GenericArray::clone_from_slice(ciphertext.as_slice()), + GenericArray::clone_from_slice(shared.as_slice()), + ) + }) + .map_err(|_| ProtocolError::LibraryError(InternalError::KemError)) + } + + fn decapsulate( + key: &Self::DecapsulationKey, + encapsulated_key: &GenericArray, + ) -> Result, ProtocolError> { + let ciphertext = MlKemCiphertext::::try_from(encapsulated_key.as_slice()) + .map_err(|_| ProtocolError::SerializationError)?; + key.decapsulate(&ciphertext) + .map(|shared| GenericArray::clone_from_slice(shared.as_slice())) + .map_err(|_| ProtocolError::LibraryError(InternalError::KemError)) + } +} +/// Triple Diffie-Hellman-style key exchange that offloads the second hop to a +/// generic KEM. +#[derive(Clone, Debug)] +pub struct TripleDhKem(PhantomData<(G, H, K)>); + +/// Client state combining the classic `TripleDH` state with a KEM secret key. +#[cfg_attr( + feature = "serde", + derive(serde::Deserialize, serde::Serialize), + serde(bound( + deserialize = "Ke1State: serde::Deserialize<'de>, K::DecapsulationKey: \ + serde::Deserialize<'de>", + serialize = "Ke1State: serde::Serialize, K::DecapsulationKey: serde::Serialize", + )) +)] +#[derive_where(Clone, ZeroizeOnDrop)] +#[derive_where(Debug, Eq, Hash, Ord, PartialEq, PartialOrd; Ke1State, K::DecapsulationKey)] +pub struct KemKe1State { + dh_state: Ke1State, + kem_decapsulation_key: K::DecapsulationKey, +} + +/// Client message including the ephemeral Diffie-Hellman component alongside a +/// serialized KEM public key. +#[cfg_attr( + feature = "serde", + derive(serde::Deserialize, serde::Serialize), + serde(bound( + deserialize = "Ke1Message: serde::Deserialize<'de>", + serialize = "Ke1Message: serde::Serialize", + )) +)] +#[derive_where(Clone, ZeroizeOnDrop)] +#[derive_where(Debug, Eq, Hash, Ord, PartialEq, PartialOrd; Ke1Message)] +pub struct KemKe1Message { + dh_message: Ke1Message, + kem_encapsulation_key: GenericArray, +} + +/// Server state mirrors the `TripleDH` state and carries the client’s KEM +/// public key for later use. +#[cfg_attr( + feature = "serde", + derive(serde::Deserialize, serde::Serialize), + serde(bound = "") +)] +#[derive_where(Clone, ZeroizeOnDrop)] +#[derive_where(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct KemKe2State +where + H::Core: ProxyHash, + ::BlockSize: IsLess, + Le<::BlockSize, U256>: NonZero, +{ + base_state: super::tripledh::Ke2State, + kem_encapsulation_key: GenericArray, + server_kem_ciphertext: GenericArray, +} + +/// Server builder placeholder capturing the data needed to finish the KEM +/// exchange. +#[derive_where(Clone)] +pub struct KemKe2Builder +where + H::Core: ProxyHash, + ::BlockSize: IsLess, + Le<::BlockSize, U256>: NonZero, +{ + server_nonce: GenericArray, + transcript_hasher: H, + client_e_pk: PublicKey, + server_e_pk: PublicKey, + shared_secret_1: GenericArray, + shared_secret_3: GenericArray, + kem_encapsulation_key: GenericArray, + kem_ciphertext: GenericArray, + kem_shared_secret: GenericArray, +} + +/// Server message bundles the `TripleDH` payload with the KEM encapsulation. +#[cfg_attr( + feature = "serde", + derive(serde::Deserialize, serde::Serialize), + serde(bound( + deserialize = "super::tripledh::Ke2Message: serde::Deserialize<'de>", + serialize = "super::tripledh::Ke2Message: serde::Serialize", + )) +)] +#[derive_where(Clone, ZeroizeOnDrop)] +#[derive_where(Debug, Eq, Hash, Ord, PartialEq, PartialOrd; super::tripledh::Ke2Message)] +pub struct KemKe2Message +where + H::Core: ProxyHash, + ::BlockSize: IsLess, + Le<::BlockSize, U256>: NonZero, +{ + dh_message: super::tripledh::Ke2Message, + kem_ciphertext: GenericArray, +} + +/// Third message remains the same as `TripleDH`. +pub type KemKe3Message = super::tripledh::Ke3Message; + +impl Drop for KemKe2Builder +where + G: Group, + H: Hash, + H::Core: ProxyHash, + ::BlockSize: IsLess, + Le<::BlockSize, U256>: NonZero, + K: KemCoreWrapper, +{ + fn drop(&mut self) { + self.server_nonce.zeroize(); + self.transcript_hasher.reset(); + self.shared_secret_1.zeroize(); + self.shared_secret_3.zeroize(); + self.kem_shared_secret.zeroize(); + self.kem_ciphertext.zeroize(); + } +} + +impl ZeroizeOnDrop for KemKe2Builder +where + G: Group, + H: Hash, + H::Core: ProxyHash, + ::BlockSize: IsLess, + Le<::BlockSize, U256>: NonZero, + K: KemCoreWrapper, +{ +} + +impl KeyExchange for TripleDhKem +where + G: Group + 'static, + G::Sk: shared::DiffieHellman, + H: Hash, + H::Core: ProxyHash, + ::BlockSize: IsLess, + Le<::BlockSize, U256>: NonZero, + K: KemCoreWrapper, + NonceLen: Add, + Sum: ArrayLength, +{ + type Group = G; + type Hash = H; + + type KE1State = KemKe1State; + type KE2State = KemKe2State; + type KE1Message = KemKe1Message; + type KE2Builder<'a, CS: CipherSuite> = KemKe2Builder; + type KE2BuilderData<'a, CS: 'static + CipherSuite> = ( + &'a PublicKey, + &'a GenericArray, + ); + type KE2BuilderInput = GenericArray; + type KE2Message = KemKe2Message; + type KE3Message = KemKe3Message; + + fn generate_ke1( + rng: &mut R, + ) -> Result, ProtocolError> { + let base = super::tripledh::TripleDh::::generate_ke1(rng)?; + let (kem_secret, kem_public) = K::generate(rng)?; + let kem_encapsulation_key = K::serialize_encapsulation_key(&kem_public); + + Ok(GenerateKe1Result { + state: KemKe1State { + dh_state: base.state, + kem_decapsulation_key: kem_secret, + }, + message: KemKe1Message { + dh_message: base.message, + kem_encapsulation_key, + }, + }) + } + + fn ke2_builder<'a, CS: CipherSuite, R: RngCore + CryptoRng>( + rng: &mut R, + credential_request: SerializedCredentialRequest, + ke1_message: Self::KE1Message, + credential_response: SerializedCredentialResponse, + client_s_pk: PublicKey, + identifiers: SerializedIdentifiers<'_, KeGroup>, + context: SerializedContext<'a>, + ) -> Result, ProtocolError> { + let shared::Ke2BuilderCommon { + server_nonce, + transcript_hasher, + client_e_pk, + server_e_pk, + shared_secret_1, + shared_secret_3, + } = shared::ke2_builder_common::( + rng, + credential_request, + ke1_message.dh_message.clone(), + credential_response, + client_s_pk, + identifiers, + context, + )?; + + let mut kem_bytes_slice: &[u8] = ke1_message.kem_encapsulation_key.as_slice(); + let encapsulation_key = K::deserialize_encapsulation_key(&mut kem_bytes_slice)?; + let (kem_ciphertext, kem_shared_secret) = K::encapsulate(&encapsulation_key, rng)?; + + let mut transcript_hasher = transcript_hasher; + transcript_hasher.update(ke1_message.kem_encapsulation_key.as_slice()); + transcript_hasher.update(kem_ciphertext.as_slice()); + + Ok(KemKe2Builder { + server_nonce, + transcript_hasher, + client_e_pk, + server_e_pk, + shared_secret_1, + shared_secret_3, + kem_encapsulation_key: ke1_message.kem_encapsulation_key.clone(), + kem_ciphertext, + kem_shared_secret, + }) + } + + fn ke2_builder_data<'a, CS: 'static + CipherSuite>( + builder: &'a Self::KE2Builder<'_, CS>, + ) -> Self::KE2BuilderData<'a, CS> { + (&builder.client_e_pk, &builder.kem_encapsulation_key) + } + + fn generate_ke2_input, R: CryptoRng + RngCore>( + builder: &Self::KE2Builder<'_, CS>, + _: &mut R, + server_s_sk: &PrivateKey, + ) -> Self::KE2BuilderInput { + server_s_sk.ke_diffie_hellman(&builder.client_e_pk) + } + + fn build_ke2>( + mut builder: Self::KE2Builder<'_, CS>, + shared_secret_2: Self::KE2BuilderInput, + ) -> Result, ProtocolError> { + let transcript_digest = builder.transcript_hasher.clone().finalize(); + let derived_keys = shared::derive_keys::( + [ + builder.shared_secret_1.as_slice(), + shared_secret_2.as_slice(), + builder.shared_secret_3.as_slice(), + builder.kem_shared_secret.as_slice(), + ] + .into_iter(), + &transcript_digest, + )?; + + let (mac, expected_mac) = shared::compute_ke2_macs( + &mut builder.transcript_hasher, + &derived_keys, + &transcript_digest, + )?; + + Ok(GenerateKe2Result { + state: KemKe2State { + base_state: super::tripledh::Ke2State { + session_key: derived_keys.session_key.clone(), + expected_mac, + }, + kem_encapsulation_key: builder.kem_encapsulation_key.clone(), + server_kem_ciphertext: builder.kem_ciphertext.clone(), + }, + message: KemKe2Message { + dh_message: super::tripledh::Ke2Message { + server_nonce: builder.server_nonce, + server_e_pk: builder.server_e_pk.clone(), + mac, + }, + kem_ciphertext: builder.kem_ciphertext.clone(), + }, + #[cfg(test)] + handshake_secret: derived_keys.handshake_secret, + #[cfg(test)] + km2: derived_keys.km2, + }) + } + + fn generate_ke3, R: CryptoRng + RngCore>( + _rng: &mut R, + credential_request: SerializedCredentialRequest, + ke1_message: Self::KE1Message, + credential_response: SerializedCredentialResponse, + ke1_state: &Self::KE1State, + ke2_message: Self::KE2Message, + server_s_pk: PublicKey, + client_s_sk: PrivateKey, + identifiers: SerializedIdentifiers<'_, KeGroup>, + context: SerializedContext<'_>, + ) -> Result, ProtocolError> { + let mut transcript_hasher = shared::transcript( + &context, + &identifiers, + &credential_request, + &ke1_message.dh_message.to_iter(), + &credential_response, + ke2_message.dh_message.server_nonce, + &ke2_message.dh_message.server_e_pk.serialize(), + ); + transcript_hasher.update(ke1_message.kem_encapsulation_key.as_slice()); + transcript_hasher.update(ke2_message.kem_ciphertext.as_slice()); + + let shared_secret_1 = ke1_state + .dh_state + .client_e_sk + .ke_diffie_hellman(&ke2_message.dh_message.server_e_pk); + let shared_secret_2 = ke1_state + .dh_state + .client_e_sk + .ke_diffie_hellman(&server_s_pk); + let shared_secret_3 = client_s_sk.ke_diffie_hellman(&ke2_message.dh_message.server_e_pk); + let kem_shared_secret = K::decapsulate( + &ke1_state.kem_decapsulation_key, + &ke2_message.kem_ciphertext, + )?; + + let (derived_keys, client_mac) = shared::finalize_ke3_transcript( + &mut transcript_hasher, + [ + shared_secret_1.as_slice(), + shared_secret_2.as_slice(), + shared_secret_3.as_slice(), + kem_shared_secret.as_slice(), + ] + .into_iter(), + &ke2_message.dh_message.mac, + )?; + + Ok(GenerateKe3Result { + session_key: derived_keys.session_key, + message: super::tripledh::Ke3Message { mac: client_mac }, + #[cfg(test)] + handshake_secret: derived_keys.handshake_secret, + #[cfg(test)] + km3: derived_keys.km3, + }) + } + + fn finish_ke( + ke2_state: &Self::KE2State, + ke3_message: Self::KE3Message, + _identifiers: Identifiers<'_>, + _context: SerializedContext<'_>, + ) -> Result, ProtocolError> { + CtOption::new( + ke2_state.base_state.session_key.clone(), + ke2_state.base_state.expected_mac.ct_eq(&ke3_message.mac), + ) + .into_option() + .ok_or(ProtocolError::InvalidLoginError) + } +} + +/// Serialization logic will be implemented once the concrete KEM wiring is in +/// place. +impl Deserialize for KemKe1State { + fn deserialize_take(input: &mut &[u8]) -> Result { + Ok(Self { + dh_state: Ke1State::::deserialize_take(input)?, + kem_decapsulation_key: K::deserialize_decapsulation_key(input)?, + }) + } +} + +impl Serialize for KemKe1State +where + Ke1State: Serialize, + as Serialize>::Len: Add, + Sum< as Serialize>::Len, K::DecapsulationKeyLen>: ArrayLength, +{ + type Len = Sum< as Serialize>::Len, K::DecapsulationKeyLen>; + + fn serialize(&self) -> GenericArray { + self.dh_state + .serialize() + .concat(K::serialize_decapsulation_key(&self.kem_decapsulation_key)) + } +} + +impl Deserialize for KemKe1Message { + fn deserialize_take(input: &mut &[u8]) -> Result { + Ok(Self { + dh_message: Ke1Message::::deserialize_take(input)?, + kem_encapsulation_key: input.take_array("kem encapsulation key")?, + }) + } +} + +impl Serialize for KemKe1Message +where + Ke1Message: Serialize, + as Serialize>::Len: Add, + Sum< as Serialize>::Len, K::EncapsulationKeyLen>: ArrayLength, +{ + type Len = Sum< as Serialize>::Len, K::EncapsulationKeyLen>; + + fn serialize(&self) -> GenericArray { + self.dh_message + .serialize() + .concat(self.kem_encapsulation_key.clone()) + } +} + +impl Deserialize for KemKe2State +where + H::Core: ProxyHash, + ::BlockSize: IsLess, + Le<::BlockSize, U256>: NonZero, +{ + fn deserialize_take(input: &mut &[u8]) -> Result { + Ok(Self { + base_state: super::tripledh::Ke2State::::deserialize_take(input)?, + kem_encapsulation_key: input.take_array("kem encapsulation key")?, + server_kem_ciphertext: input.take_array("kem ciphertext")?, + }) + } +} + +impl Serialize for KemKe2State +where + H::Core: ProxyHash, + ::BlockSize: IsLess, + Le<::BlockSize, U256>: NonZero, + super::tripledh::Ke2State: Serialize, + as Serialize>::Len: Add, + Sum< as Serialize>::Len, K::EncapsulationKeyLen>: + ArrayLength + Add, + Sum< + Sum< as Serialize>::Len, K::EncapsulationKeyLen>, + K::CiphertextLen, + >: ArrayLength, +{ + type Len = Sum< + Sum< as Serialize>::Len, K::EncapsulationKeyLen>, + K::CiphertextLen, + >; + + fn serialize(&self) -> GenericArray { + self.base_state + .serialize() + .concat(self.kem_encapsulation_key.clone()) + .concat(self.server_kem_ciphertext.clone()) + } +} + +impl Deserialize for KemKe2Message +where + H::Core: ProxyHash, + ::BlockSize: IsLess, + Le<::BlockSize, U256>: NonZero, +{ + fn deserialize_take(input: &mut &[u8]) -> Result { + Ok(Self { + dh_message: super::tripledh::Ke2Message::::deserialize_take(input)?, + kem_ciphertext: input.take_array("kem ciphertext")?, + }) + } +} + +impl Serialize for KemKe2Message +where + H::Core: ProxyHash, + ::BlockSize: IsLess, + Le<::BlockSize, U256>: NonZero, + NonceLen: Add, + Sum: ArrayLength + Add>, + Sum, OutputSize>: ArrayLength, + super::tripledh::Ke2Message: Serialize, + as Serialize>::Len: Add, + < as Serialize>::Len as Add>::Output: + ArrayLength, +{ + type Len = Sum< as Serialize>::Len, K::CiphertextLen>; + + fn serialize(&self) -> GenericArray { + self.dh_message + .serialize() + .concat(self.kem_ciphertext.clone()) + } +} diff --git a/src/lib.rs b/src/lib.rs index 96fb441..8f5a447 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -706,6 +706,38 @@ //! # Ok::<(), ProtocolError>(()) //! ``` //! +//! ## `TripleDhKem` Key Exchange +//! +//! `TripleDhKem` extends the default [`TripleDh`] handshake by mixing a +//! KEM shared secret into the transcript alongside the three Diffie-Hellman +//! products. This hybrid exchange offers a post-quantum (PQ) upgrade path while +//! preserving backwards-compatible session keys and transcript bindings. +//! +//! Note that this key exchange does not provide full PQ security +//! for OPAQUE, as the OPRF used in the protocol is still not PQ-secure. +//! Morever, we only use ephemeral KEM keys to provide confidentiality, +//! implicitly delegating the authentication guarantees to the static (and +//! classical) Diffie-Hellman keys. This is intended as a stopgap measure to +//! provide some level of confidentiality against passive quantum attackers (as +//! opposed to active ones). See [RFC 9807, Appendix B](https://www.rfc-editor.org/rfc/rfc9807.html#appendix-B) +//! for a more detailed discussion of the security guarantees. +//! +//! This can be enabled with the `kem` feature to compile the integration with +//! the [`ml-kem`](https://docs.rs/ml-kem/latest/ml_kem/) crate and instantiating +//! the ciphersuite as follows: +//! +//! ```ignore +//! use opaque_ke::CipherSuite; +//! +//! struct KemSuite; +//! +//! impl CipherSuite for KemSuite { +//! type OprfCs = opaque_ke::Ristretto255; +//! type KeyExchange = opaque_ke::TripleDhKem; +//! type Ksf = opaque_ke::ksf::Identity; +//! } +//! ``` +//! //! ## Custom Identifiers //! //! Typically when applications use OPAQUE to authenticate a client to a server, @@ -1314,6 +1346,10 @@ //! - The `ed25519` feature enables using [`Ed25519`]s with [`PureEddsa`] and //! [`HashEddsa`] for [`SigmaI`]s signature algorithm. //! +//! - The `kem` feature enables the [`TripleDhKem`] key exchange, adding support +//! for KEM-based handshakes backed by the `ml-kem` crate. Disabling the +//! feature removes those types and their associated tests from the build. +//! //! [`alloc`]: https://doc.rust-lang.org/alloc //! [curve25519-dalek]: https://docs.rs/curve25519-dalek/4/curve25519_dalek/index.html#backends @@ -1362,6 +1398,8 @@ pub use crate::key_exchange::sigma_i::ecdsa::Ecdsa; pub use crate::key_exchange::sigma_i::hash_eddsa::HashEddsa; pub use crate::key_exchange::sigma_i::pure_eddsa::PureEddsa; pub use crate::key_exchange::tripledh::TripleDh; +#[cfg(feature = "kem")] +pub use crate::key_exchange::tripledh_kem::TripleDhKem; pub use crate::messages::{ CredentialFinalization, CredentialFinalizationLen, CredentialRequest, CredentialRequestLen, CredentialResponse, CredentialResponseLen, RegistrationRequest, RegistrationRequestLen, diff --git a/src/tests/full_test.rs b/src/tests/full_test.rs index 09fd1ce..1afc333 100644 --- a/src/tests/full_test.rs +++ b/src/tests/full_test.rs @@ -16,6 +16,8 @@ use std::{format, println, vec}; use digest::Output; use generic_array::typenum::{Sum, Unsigned}; use generic_array::{ArrayLength, GenericArray}; +#[cfg(feature = "kem")] +use ml_kem::MlKem768; use rand::SeedableRng; use rand::rngs::OsRng; use rand_chacha::ChaCha20Rng; @@ -29,6 +31,8 @@ use crate::errors::*; use crate::hash::OutputSize; use crate::key_exchange::group::Group; use crate::key_exchange::shared::NonceLen; +#[cfg(feature = "kem")] +use crate::key_exchange::tripledh_kem::TripleDhKem; use crate::key_exchange::{ Deserialize, Ke1MessageLen, Ke1StateLen, Ke2MessageLen, KeyExchange, Serialize, }; @@ -156,6 +160,27 @@ macro_rules! triple_dh_ciphersuites { }; } +#[cfg(feature = "kem")] +macro_rules! triple_dh_kem_ciphersuites { + ($macro:ident!$par:tt) => { + oprf_ciphersuites!( + $macro!$par => [ + #[cfg(feature = "ristretto255")] [ + TripleDhKemRistretto255, + TripleDhKem, + ], + [TripleDhKemP256, TripleDhKem], + [TripleDhKemP384, TripleDhKem], + [TripleDhKemP521, TripleDhKem], + #[cfg(feature = "curve25519")] [ + TripleDhKemCurve25519, + TripleDhKem, + ], + ] + ); + }; +} + macro_rules! sigma_i_ciphersuites { ($macro:ident!$par:tt) => { sigma_i_ciphersuites!( @@ -192,6 +217,8 @@ macro_rules! sigma_i_ciphersuites { } triple_dh_ciphersuites!(ciphersuite_types!()); +#[cfg(feature = "kem")] +triple_dh_kem_ciphersuites!(ciphersuite_types!()); sigma_i_ciphersuites!(ciphersuite_types!()); pub struct TestVectorParameters { @@ -741,6 +768,8 @@ fn generate_test_vectors() -> Result<(), ProtocolError> { ); triple_dh_ciphersuites!(generate!(output)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(generate!(output)); sigma_i_ciphersuites!(generate!(output)); if let Ok(path) = std::env::var("FULL_TEST_VECTORS_FILE") { @@ -776,6 +805,8 @@ fn test_registration_request() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) @@ -808,6 +839,8 @@ fn test_serialization() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) @@ -847,6 +880,8 @@ fn test_registration_response() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) @@ -896,6 +931,8 @@ fn test_registration_upload() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) @@ -926,6 +963,8 @@ fn test_password_file() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) @@ -969,6 +1008,8 @@ fn test_credential_request() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) @@ -1037,6 +1078,8 @@ fn test_credential_response() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) @@ -1089,6 +1132,8 @@ fn test_credential_finalization() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) @@ -1124,6 +1169,8 @@ fn test_server_login_finish() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) @@ -1201,6 +1248,12 @@ fn test_complete_flow_success() -> Result<(), ProtocolError> { b"good password", b"good password" )); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!( + test_complete_flow, + b"good password", + b"good password" + )); sigma_i_ciphersuites!(run_all!( test_complete_flow, b"good password", @@ -1216,6 +1269,12 @@ fn test_complete_flow_fail() -> Result<(), ProtocolError> { b"good password", b"bad password" )); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!( + test_complete_flow, + b"good password", + b"bad password" + )); sigma_i_ciphersuites!(run_all!( test_complete_flow, b"good password", @@ -1259,6 +1318,8 @@ fn test_scalar_always_nonzero() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) @@ -1304,6 +1365,8 @@ fn test_reflected_value_error_registration() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) @@ -1364,6 +1427,8 @@ fn test_reflected_value_error_login() -> Result<(), ProtocolError> { } triple_dh_ciphersuites!(run_all!(inner)); + #[cfg(feature = "kem")] + triple_dh_kem_ciphersuites!(run_all!(inner)); sigma_i_ciphersuites!(run_all!(inner)); Ok(()) diff --git a/src/tests/full_test_vectors.rs b/src/tests/full_test_vectors.rs index 025b1a3..56bb712 100644 --- a/src/tests/full_test_vectors.rs +++ b/src/tests/full_test_vectors.rs @@ -804,6 +804,799 @@ pub static TEST_VECTOR_P521_TRIPLE_DH_CURVE25519: &str = r#" "session_key": "d40e639b9dae532ec8788fe690063890caa5564455edca59af3db3f5744163ac18a69c71f1a2436cdd509c0109344535ae8086b65f97c0521201c99e9b976263" } "#; +#[cfg(feature = "ristretto255")] +#[cfg(feature = "ristretto255")] +pub static TEST_VECTOR_RISTRETTO255_TRIPLE_DH_KEM_RISTRETTO255: &str = r#" +{ + "client_s_pk": "c41eb92d55956815fdf80e5e60ce88bd7e28da597280cb534291bbcb5fa7a50f", + "client_s_sk": "6c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f", + "client_e_pk": "a2d5ba995f1410b7d5f97005ccc734e230c1a130e4e710d51561d2a1cdf9e705", + "client_e_sk": "990dfc03f42284a4a9d5cf73fae1a8f7d721a2a7ea81d5af8be73bbb03efc606", + "server_s_pk": "d2b41f860732d185185f5a40320a7a335557bd94d26f0eb8b2e61d9f23d1f832", + "server_s_sk": "f443f3f76b1fe9256b071acbb8f7812b51a0185e47927858f3d352311535610f", + "server_e_pk": "c0a6e4df610e29db5a668cabda1d018c2082539e6b20c8c746cc2f58dc139309", + "server_e_sk": "961e68e0956e057a265adef1b745b2a8954bcaad7af6e12d437b0ee699c9cf0d", + "dummy_client_pk": "b68d5e93478904db6b442b965dcf8d4e070967ad87017022b344f1b80a55b070", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "e6b5a66409921dac759fa642ce40cd6ac6935d8a84c4b8098dc9d73795d4e302", + "oprf_seed": "83d121ef67bef278e93f0d1026ce1fc6f986681ea7c95b482711cd1540bcaa83ad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd", + "dummy_masking_key": "698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf", + "masking_nonce": "ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52ea4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "envelope_nonce": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "client_nonce": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "server_nonce": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "server_sig_rng": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5b", + "client_sig_rng": "d198aa66d474460a0959f960309cf180439288da0e67df1ac388da3984197d4d", + "context": "636f6e74657874", + "registration_request": "368ae23cfac76038d7ecd5fb57687c9d6dc664d5bb4d016e7d874953781bef44", + "registration_response": "52926b176496fca74648d0bb7be06dff55d31634143b648c38f1f9e43e681748d2b41f860732d185185f5a40320a7a335557bd94d26f0eb8b2e61d9f23d1f832", + "registration_upload": "b2dfea72bb9ea93ab47cb7aa60de281e5040bbc56445fd2de61ac1dc5846d14c1f08c0cc740cec36c5229cc291774dcbce698c97103217c677d864391c1aa87838a7bf20d32e1b5bff19f135ecd4e080ce52e4f9c55f1bf8ba8fb95f194ea4466c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f4a0f14903fb1baa3ee37946e6b0b4d89dec9ff5a1a4fee3f89d657816f96ce944a4f0124c0b94d7257de7fa9a420c531f7c15b1734c9eaa17e254881d57eea7b", + "credential_request": "368ae23cfac76038d7ecd5fb57687c9d6dc664d5bb4d016e7d874953781bef44d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182701da2b287adf9f808b0ba41bca08cd5b4af452092db4b30b682de57f7715e55059229fd6bb46984114f4b6fb90555d59b86e4a73d199b0e023964ee3bad3b6349275757849186d33877efb59b025ac4b3eb5a88e4aeb0d84c3b543d2d29a19fb258069c8a701c8172890e1a05bdcae46512e382abf54114c320001858e2a65e92b60d3a60ccc423cb6887c8f3c6660505338c20b22b7abd475209a9632d677264256a1562e42c08700813ba5521749c6ef044da588f4b082c4ad43b2cd1bb545659a6422be5420a5e283746b2b0abba7e50e1cc513288efc6bc734a0d22b1a7a161aafb098b5483cfe4958376c9304f7701804c806033c46ad81fea3a273374976f6a347a1bad82d18b741b8ce0c08fd233aa814347490c622aba0175272de1db1e4f6434f71894f4eca3a4a4442303b1d19047e4f7bc3b77c7268bae5e1903c9fc6a4a754820941e90f57c5c2caa12c089e930bd11d68c7fe5a800a25aa87bcdacf1c321323f62c357d55a5de328c8d7a920d8029d2e75a47f66a7c1a94fdeeba784f739c7c08203b72089b65f5458850fe24ba1688d9bd7bd36d592a37bace99152815171a9f6c331fb8bdcd780627376fc3416da428cafba9f315c9767da92e2410d2d270adebcbe9dec5073b0970e44bda8d8818e049d57ca9b175c21c10192b1622fbdd0925a6541f3442c18432a67e894a077a9c0db8ab86a080264005b9b3cb891cc29862e64e600a546a3b53274799aabc7f1b57ac00db776c6768581c4eb1b62b96c03bc1065e073f6c79411c5b3ede334fa36b132820f3a20b3ca601d67e18029a895d00b987a2c928f984f85db6c52c66e7d660d9c5b44edf708cbc843971b3a4f1b0d0a90aad122b45840c84237761241c78c742b398297f2f131f654147f637586871872751bea78bd2439cd804453aec85e6135aa41bb4861a12e8ec53341660e787186ac97493508541af55510f94cd8b191f240447ab90caa74a97ab9b254d44da4408c7de263ea20070be2a09d142a12678fc758c8c77927516b1fa04793a2f161adc04592743d12ebb586a1ad3c7780a59823add36b2b716f3b40988665142cd69838f29e45d064bb3b49c9a0ce7ec16f4f29bd73173d3c90b0f1f3547d39929e5590d2431a88ec14e63967bb37341aeaa7b0675fc4f7a3a947b25f4a6c1af2544a9767d7826233987b8eb97201602ef892cc937871cc49aff8ab2218145628882dd36a002aa0a2c19670f616010532ce869c1afa214522bb5911da5bac5458a76687c4d606e80c38193b82cc77c473745d212a9e7541c07efa40e285b51fd8c30d229692d072835a8ba3214b55c20ff1c288ed4c35c70a61e432802cbc112a533d97077e1a11ce3a0b360d670f821446707835e3fb7fbfe397f71b9e86e88a46e98717e1c5e83c591df2486c655a75a46ff1a006357421c7749d3bdb2bb8560f1f2bbaff366b27864c39a033e8d5031e49b6872baf696054843b0a7e648f4bfa7d28ca06abf17f16889052060d54774646b70499942b15099824b05be0f33d7fd5ce20db0e1bc637ddc0759fbb0f9c361ebe1c616d3b1a8b8c0061873d4a3714689c72a8c617609801adbb4d45a6b43e753a9ab7635545764d679937647d25e2098ad66197977945011b32c14a2a4b175d81096979a58d1b6019bb8db4cb60cd7d8a060863a269ac6870cad2d2b13c95ef041ac7e6e7", + "credential_response": "52926b176496fca74648d0bb7be06dff55d31634143b648c38f1f9e43e681748ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52eb8d47864f528e9b75aa6c827c6952e56af4cb076cd03a59c2b31f84925c82b97b1475a61969768f0ceb6c118324ed4dc5ad88758e150e5a8132df5703d94eaaad8ed0e8b19a76af41763a4dfc809185eec70c9bffdcd416f8114aff3224addca363a4ebec27c197eedf8d779a342717e48f6b3f552179cdf2e28aa28e348b5c2961e68e0956e057a265adef1b745b2a8954bcaad7af6e12d437b0ee699c9cf0d9e3035f7adb60b8460c51ed16961b65b46d03d11bd44d8206352d6fbb1bca8775523fd864a352a2784f23606d26cf32fa6ee7f352d8e4322fadb1d136957b3f3bcacafaf53532c157cdef6ecc411e57f22cda5c9a64a3f730a73d9348f637b24bcd7c73428b506226f1f9276610347f7585f5b74b42362f3dfe5a81c9422443244b6b094ff4cefeb0bd2262a547b16051b93716d439f0ef8e93fc59a14739b813191d09e31962be97a7c79621e189d3dd7feac68225b99fbb2df418eb55b2253636f3a7f9e142579dad9801298ab031aa56741b4cc964c6e81718611621cc2c60ed4f2bb96cca02cf5131b4f306ab7115f92e0f9e9d88893c6b9b3de3f4fe6b73e7db4dc8b6a24c0ff8ac35563ef1319fb4e8c210723c53f5d9e9662d7cd071edd55ebb4a4299d5ddf52a8e6916bea1f1e82cfcd1c6cfc1230f461ddcf03333126c921d8139a62e86f8a17a9b554d7a70e6ea15e6143e23ca02f9c8e7ca730e7108d10d2a6f785b50d50d030a64196af9ad199b9971905e7c153662370b3070003e27b0db09dfa9c440a801580ffd900f5665426ddba60b2bc085b8a59c9ebb1ed0e25613ad742c7920b90506117904a6e92f733e4af05a49edc5f7875a70923f65eab679ad12e19b3d8c7c3ba7717858ffb60d3f0032ce64dad1a27b0a02d05cc9578f9ab424d5451e0e3a43751d620bbc2c49a665f4f51e0d96ad0195365b216648297deda3be84e3e486ca835be789e9d81ad9522af1ced2067a78422c3086626ba6a59a188808b60beb68680ab536d667d81a11d470530165cc16f30ad6e7181903cff7faf65374499e8199697a9adddca6026f06631571ec3e7dff05b53514fd1a325b3338130f47f80506d3c03dfb522c4da53d4392d35775ed6f6b545be6a3653c10c1c5de14d5eceb54fbf13be24320ede77f375c07c635fe765217338cf8f8fc389011f0d850f9733132f100ee2d3f26fe646dd9e57a0bf2a934afe60ad3c53f40404c0af3dd614cbf4f9685a55cf5c39051dc33320863429a931e54a100ae866b784eeff5fc4f1937e8ffdc9e3512fd9eaa3f3205da57af71e7d8036133e22878c4e925d9f96763497fb52aad7f563a78c135aec2356e5fddcd9de91bcb62948d856e73215be92924288980a7c5a1cede239d38b19deee85eb686950b2d6d2364ae97bedd85d82b2100ff66b111f221d6ba75150e6cc69a5205a417f2c545f4d14a0f8ae1152af81167efdd8e175caf4488567d758025292a05ec8672afe769addd7e9706d549a18f7784a6ebce5c057d60aa3e673ad5e3f7e653f59d638571fe606a144ae7d785e94097aba7edd1c2b1f3dfe0e0f8c7fc01bf0af501070e1b97df143b522a9ab62dac28e5725c2a2e9146e93cb856fb8c38a0ecc40e19e34450904167b1810f151c43bc52c49baeb3fea02560895d85864e7eaaa68c92432426d794cf0a37c033e7cf51e86cf47353a5b7afc4d40fbe5b2b2fc0d39598577631315176dd66d750c62621253fcf73723d207d15cfe593e06926c7088225e3c0322411bd5fc5c57ea55b4cd6cfb61afe6468cd13613eba87eee723a81142faffd327608f1afa2fa5637b98fd89e3cd903ea552457859b87668f0c5aa1971becfd9bf510250154d958b551e7d29042e549f51416efceb0f637a4a2ff", + "credential_finalization": "9f3c830c137e41163a8656c690aaa11e0708d2c19ec50a129d6c2642b1b4b4d68b7a86a0481071ed28d2b5b97d60768f89a58df855cac11ab4d7de96162f6104", + "client_registration_state": "e6b5a66409921dac759fa642ce40cd6ac6935d8a84c4b8098dc9d73795d4e302368ae23cfac76038d7ecd5fb57687c9d6dc664d5bb4d016e7d874953781bef44", + "client_login_state": "e6b5a66409921dac759fa642ce40cd6ac6935d8a84c4b8098dc9d73795d4e302368ae23cfac76038d7ecd5fb57687c9d6dc664d5bb4d016e7d874953781bef44d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182701da2b287adf9f808b0ba41bca08cd5b4af452092db4b30b682de57f7715e55059229fd6bb46984114f4b6fb90555d59b86e4a73d199b0e023964ee3bad3b6349275757849186d33877efb59b025ac4b3eb5a88e4aeb0d84c3b543d2d29a19fb258069c8a701c8172890e1a05bdcae46512e382abf54114c320001858e2a65e92b60d3a60ccc423cb6887c8f3c6660505338c20b22b7abd475209a9632d677264256a1562e42c08700813ba5521749c6ef044da588f4b082c4ad43b2cd1bb545659a6422be5420a5e283746b2b0abba7e50e1cc513288efc6bc734a0d22b1a7a161aafb098b5483cfe4958376c9304f7701804c806033c46ad81fea3a273374976f6a347a1bad82d18b741b8ce0c08fd233aa814347490c622aba0175272de1db1e4f6434f71894f4eca3a4a4442303b1d19047e4f7bc3b77c7268bae5e1903c9fc6a4a754820941e90f57c5c2caa12c089e930bd11d68c7fe5a800a25aa87bcdacf1c321323f62c357d55a5de328c8d7a920d8029d2e75a47f66a7c1a94fdeeba784f739c7c08203b72089b65f5458850fe24ba1688d9bd7bd36d592a37bace99152815171a9f6c331fb8bdcd780627376fc3416da428cafba9f315c9767da92e2410d2d270adebcbe9dec5073b0970e44bda8d8818e049d57ca9b175c21c10192b1622fbdd0925a6541f3442c18432a67e894a077a9c0db8ab86a080264005b9b3cb891cc29862e64e600a546a3b53274799aabc7f1b57ac00db776c6768581c4eb1b62b96c03bc1065e073f6c79411c5b3ede334fa36b132820f3a20b3ca601d67e18029a895d00b987a2c928f984f85db6c52c66e7d660d9c5b44edf708cbc843971b3a4f1b0d0a90aad122b45840c84237761241c78c742b398297f2f131f654147f637586871872751bea78bd2439cd804453aec85e6135aa41bb4861a12e8ec53341660e787186ac97493508541af55510f94cd8b191f240447ab90caa74a97ab9b254d44da4408c7de263ea20070be2a09d142a12678fc758c8c77927516b1fa04793a2f161adc04592743d12ebb586a1ad3c7780a59823add36b2b716f3b40988665142cd69838f29e45d064bb3b49c9a0ce7ec16f4f29bd73173d3c90b0f1f3547d39929e5590d2431a88ec14e63967bb37341aeaa7b0675fc4f7a3a947b25f4a6c1af2544a9767d7826233987b8eb97201602ef892cc937871cc49aff8ab2218145628882dd36a002aa0a2c19670f616010532ce869c1afa214522bb5911da5bac5458a76687c4d606e80c38193b82cc77c473745d212a9e7541c07efa40e285b51fd8c30d229692d072835a8ba3214b55c20ff1c288ed4c35c70a61e432802cbc112a533d97077e1a11ce3a0b360d670f821446707835e3fb7fbfe397f71b9e86e88a46e98717e1c5e83c591df2486c655a75a46ff1a006357421c7749d3bdb2bb8560f1f2bbaff366b27864c39a033e8d5031e49b6872baf696054843b0a7e648f4bfa7d28ca06abf17f16889052060d54774646b70499942b15099824b05be0f33d7fd5ce20db0e1bc637ddc0759fbb0f9c361ebe1c616d3b1a8b8c0061873d4a3714689c72a8c617609801adbb4d45a6b43e753a9ab7635545764d679937647d25e2098ad66197977945011b32c14a2a4b175d81096979a58d1b6019bb8db4cb60cd7d8a060863a269ac6870cad2d2b13c95ef041ac7e6e7fd8b82459a9fca09a70ac50ba5cbc0f22939a9d95b98c8e9b356ef294f593b00d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182b8865b0bd2bb21c78ba12c011027322e165d9a395283348deef5c10d176f3683546d342149caa70dd3c92262708a6c1b85e4952e45a92d77c528d706b38227326cc4c1dc576250cc2f3816e0e25c43c16f061bcbcf74c37fa04293d25f25a416cc831a2787197153b9ea7bb3c2e5146af271eaa03ebaa17c123a49f5f51ab28910882428e3cb4675a4ba152a0d0c883490fbb507013a46f545eeac19a7625418cb51edc003f51baf5f5302827115f6b416f1959b77b769910924d84125043441b63b2ff304b40b9682ef87361a9356b543a080156d3a677d0fe099f854462ad85e0bac5b63030b7637744c544dfae04b0ec2c69f93644d18cbf5506032eca3b923890ab6cb02ea52b635c920508b234543ff319a54e761d883626f9ac81fb18021f778fe741a6e0803422713cf295e40cb3aa8b8099f4750b7a4465554c16b44a3c364b110c8c005fc01a99102f5f5bafbd7511b1b3844203437b50abd9bb4858a49717bafc0969d74206c9ef27f1222b8a8139fe8556fdf431bb74b455f198cb5d809bfe97f9259674659be39d95dcc84808bfa7a4ef47499178300eb270cfc94f6b71f70359aa1bb41ae015697001134f46edcd3a9a61b6b8db944cae5bb81801ba368a5573ac1e451b0f2dc9886991cd32a80a21a40d9b2a27c3153b16a61fb848cb5f2b639bc2d84877397a5c068ec141317654a955442e859b811cd12129ac745937eeab497b293f354af5d9b3ae3656352775250c23621cc73247b9c2a03a385347633c93e6d5b289a1bc04dbcb577191e7c93361b0c9f60da283c1abdc424ae19ea3b6ba137e3d3c6ff15a1b9e94ed73a3cf23943d1f7abdba140bb6c5733a243d9395a98e2653d272a0e11bc10f749ce2bc0e00bd0365483b5324be3178470f5097bd5a3d133ccc0119839b88cb7326b3375654e0b2f54762ea832ce96f78875a87bcde35c5df592da6b48099ac28f0576b8647c28e49f1485c5cb65716d38886f56ca33e97403ea10ab3bc40c91065a082663d562f39693ee759aab52322a8b45126a36d7e75a57c5136a38be9c53616bc1045dca14df74cc1a84081cc16d9fa47b130676585470f13a1149966967f263a1a6c41e7ace7bec22bd2a59fea592ec497e382467c056bb1375750158953fe5330860ce0bdab8dc50261f95217be4958dd93a8c93cd611cb4b6b8bfcd2475c1ea1c8c24bbda6b9880c8a0f3c008223ab933439d4da91e945b5a6c5540e2b5cf90d96eccc8a270db54a8a9c1f344192b6447c755741ee82e36e841f27c040f399248e3328e338e9b568afed710262823c73b43d5cc764260c991e17b0cb9c44c7b67ecd07ab34aa30182c4074a23afa8246e1400746b716d8330b329a1be311fed62bd5d713458ca0ecd73715d7b47e6763a3384bb120a518f2097ab7aacdd69ac684228ebcc5dfb4c1891b15a4747c99ab96c27da6e23e8acedb04347e4b85065cf89433cc1a9a8a5329c5acc8547f589ec4ab2757b5fb2214345936375da601c7424988679f6fb9d330c27fc8b8f6aeaa073539e2a92952d362505d8ae6bb8c15a59324ce191738c7b6dd2782923b5bc976e5062b0053b3215a2c1ec40a95f6c9808e566234a69cc545a059229fd6bb46984114f4b6fb90555d59b86e4a73d199b0e023964ee3bad3b6349275757849186d33877efb59b025ac4b3eb5a88e4aeb0d84c3b543d2d29a19fb258069c8a701c8172890e1a05bdcae46512e382abf54114c320001858e2a65e92b60d3a60ccc423cb6887c8f3c6660505338c20b22b7abd475209a9632d677264256a1562e42c08700813ba5521749c6ef044da588f4b082c4ad43b2cd1bb545659a6422be5420a5e283746b2b0abba7e50e1cc513288efc6bc734a0d22b1a7a161aafb098b5483cfe4958376c9304f7701804c806033c46ad81fea3a273374976f6a347a1bad82d18b741b8ce0c08fd233aa814347490c622aba0175272de1db1e4f6434f71894f4eca3a4a4442303b1d19047e4f7bc3b77c7268bae5e1903c9fc6a4a754820941e90f57c5c2caa12c089e930bd11d68c7fe5a800a25aa87bcdacf1c321323f62c357d55a5de328c8d7a920d8029d2e75a47f66a7c1a94fdeeba784f739c7c08203b72089b65f5458850fe24ba1688d9bd7bd36d592a37bace99152815171a9f6c331fb8bdcd780627376fc3416da428cafba9f315c9767da92e2410d2d270adebcbe9dec5073b0970e44bda8d8818e049d57ca9b175c21c10192b1622fbdd0925a6541f3442c18432a67e894a077a9c0db8ab86a080264005b9b3cb891cc29862e64e600a546a3b53274799aabc7f1b57ac00db776c6768581c4eb1b62b96c03bc1065e073f6c79411c5b3ede334fa36b132820f3a20b3ca601d67e18029a895d00b987a2c928f984f85db6c52c66e7d660d9c5b44edf708cbc843971b3a4f1b0d0a90aad122b45840c84237761241c78c742b398297f2f131f654147f637586871872751bea78bd2439cd804453aec85e6135aa41bb4861a12e8ec53341660e787186ac97493508541af55510f94cd8b191f240447ab90caa74a97ab9b254d44da4408c7de263ea20070be2a09d142a12678fc758c8c77927516b1fa04793a2f161adc04592743d12ebb586a1ad3c7780a59823add36b2b716f3b40988665142cd69838f29e45d064bb3b49c9a0ce7ec16f4f29bd73173d3c90b0f1f3547d39929e5590d2431a88ec14e63967bb37341aeaa7b0675fc4f7a3a947b25f4a6c1af2544a9767d7826233987b8eb97201602ef892cc937871cc49aff8ab2218145628882dd36a002aa0a2c19670f616010532ce869c1afa214522bb5911da5bac5458a76687c4d606e80c38193b82cc77c473745d212a9e7541c07efa40e285b51fd8c30d229692d072835a8ba3214b55c20ff1c288ed4c35c70a61e432802cbc112a533d97077e1a11ce3a0b360d670f821446707835e3fb7fbfe397f71b9e86e88a46e98717e1c5e83c591df2486c655a75a46ff1a006357421c7749d3bdb2bb8560f1f2bbaff366b27864c39a033e8d5031e49b6872baf696054843b0a7e648f4bfa7d28ca06abf17f16889052060d54774646b70499942b15099824b05be0f33d7fd5ce20db0e1bc637ddc0759fbb0f9c361ebe1c616d3b1a8b8c0061873d4a3714689c72a8c617609801adbb4d45a6b43e753a9ab7635545764d679937647d25e2098ad66197977945011b32c14a2a4b175d81096979a58d1b6019bb8db4cb60cd7d8a060863a269ac6870cad2d2b13c95ef041ac7e6e7ce141e696fb9cb86e0399705b3f4f0dd001b11697272feef4522c06fabfb3cb5990dfc03f42284a4a9d5cf73fae1a8f7d721a2a7ea81d5af8be73bbb03efc606", + "server_login_state": "57e1eef6dbfae519586cdad593b4416a4a7406ff79f96680ef4166d4a741b9567da7ae3f8135f9ba60dec35f9b8c2bc69c3c2aa5b226ed7c90fbf99a1e6a570a9f3c830c137e41163a8656c690aaa11e0708d2c19ec50a129d6c2642b1b4b4d68b7a86a0481071ed28d2b5b97d60768f89a58df855cac11ab4d7de96162f6104059229fd6bb46984114f4b6fb90555d59b86e4a73d199b0e023964ee3bad3b6349275757849186d33877efb59b025ac4b3eb5a88e4aeb0d84c3b543d2d29a19fb258069c8a701c8172890e1a05bdcae46512e382abf54114c320001858e2a65e92b60d3a60ccc423cb6887c8f3c6660505338c20b22b7abd475209a9632d677264256a1562e42c08700813ba5521749c6ef044da588f4b082c4ad43b2cd1bb545659a6422be5420a5e283746b2b0abba7e50e1cc513288efc6bc734a0d22b1a7a161aafb098b5483cfe4958376c9304f7701804c806033c46ad81fea3a273374976f6a347a1bad82d18b741b8ce0c08fd233aa814347490c622aba0175272de1db1e4f6434f71894f4eca3a4a4442303b1d19047e4f7bc3b77c7268bae5e1903c9fc6a4a754820941e90f57c5c2caa12c089e930bd11d68c7fe5a800a25aa87bcdacf1c321323f62c357d55a5de328c8d7a920d8029d2e75a47f66a7c1a94fdeeba784f739c7c08203b72089b65f5458850fe24ba1688d9bd7bd36d592a37bace99152815171a9f6c331fb8bdcd780627376fc3416da428cafba9f315c9767da92e2410d2d270adebcbe9dec5073b0970e44bda8d8818e049d57ca9b175c21c10192b1622fbdd0925a6541f3442c18432a67e894a077a9c0db8ab86a080264005b9b3cb891cc29862e64e600a546a3b53274799aabc7f1b57ac00db776c6768581c4eb1b62b96c03bc1065e073f6c79411c5b3ede334fa36b132820f3a20b3ca601d67e18029a895d00b987a2c928f984f85db6c52c66e7d660d9c5b44edf708cbc843971b3a4f1b0d0a90aad122b45840c84237761241c78c742b398297f2f131f654147f637586871872751bea78bd2439cd804453aec85e6135aa41bb4861a12e8ec53341660e787186ac97493508541af55510f94cd8b191f240447ab90caa74a97ab9b254d44da4408c7de263ea20070be2a09d142a12678fc758c8c77927516b1fa04793a2f161adc04592743d12ebb586a1ad3c7780a59823add36b2b716f3b40988665142cd69838f29e45d064bb3b49c9a0ce7ec16f4f29bd73173d3c90b0f1f3547d39929e5590d2431a88ec14e63967bb37341aeaa7b0675fc4f7a3a947b25f4a6c1af2544a9767d7826233987b8eb97201602ef892cc937871cc49aff8ab2218145628882dd36a002aa0a2c19670f616010532ce869c1afa214522bb5911da5bac5458a76687c4d606e80c38193b82cc77c473745d212a9e7541c07efa40e285b51fd8c30d229692d072835a8ba3214b55c20ff1c288ed4c35c70a61e432802cbc112a533d97077e1a11ce3a0b360d670f821446707835e3fb7fbfe397f71b9e86e88a46e98717e1c5e83c591df2486c655a75a46ff1a006357421c7749d3bdb2bb8560f1f2bbaff366b27864c39a033e8d5031e49b6872baf696054843b0a7e648f4bfa7d28ca06abf17f16889052060d54774646b70499942b15099824b05be0f33d7fd5ce20db0e1bc637ddc0759fbb0f9c361ebe1c616d3b1a8b8c0061873d4a3714689c72a8c617609801adbb4d45a6b43e753a9ab7635545764d679937647d25e2098ad66197977945011b32c14a2a4b175d81096979a58d1b6019bb8db4cb60cd7d8a060863a269ac6870cad2d2b13c95ef041ac7e6e7bcd7c73428b506226f1f9276610347f7585f5b74b42362f3dfe5a81c9422443244b6b094ff4cefeb0bd2262a547b16051b93716d439f0ef8e93fc59a14739b813191d09e31962be97a7c79621e189d3dd7feac68225b99fbb2df418eb55b2253636f3a7f9e142579dad9801298ab031aa56741b4cc964c6e81718611621cc2c60ed4f2bb96cca02cf5131b4f306ab7115f92e0f9e9d88893c6b9b3de3f4fe6b73e7db4dc8b6a24c0ff8ac35563ef1319fb4e8c210723c53f5d9e9662d7cd071edd55ebb4a4299d5ddf52a8e6916bea1f1e82cfcd1c6cfc1230f461ddcf03333126c921d8139a62e86f8a17a9b554d7a70e6ea15e6143e23ca02f9c8e7ca730e7108d10d2a6f785b50d50d030a64196af9ad199b9971905e7c153662370b3070003e27b0db09dfa9c440a801580ffd900f5665426ddba60b2bc085b8a59c9ebb1ed0e25613ad742c7920b90506117904a6e92f733e4af05a49edc5f7875a70923f65eab679ad12e19b3d8c7c3ba7717858ffb60d3f0032ce64dad1a27b0a02d05cc9578f9ab424d5451e0e3a43751d620bbc2c49a665f4f51e0d96ad0195365b216648297deda3be84e3e486ca835be789e9d81ad9522af1ced2067a78422c3086626ba6a59a188808b60beb68680ab536d667d81a11d470530165cc16f30ad6e7181903cff7faf65374499e8199697a9adddca6026f06631571ec3e7dff05b53514fd1a325b3338130f47f80506d3c03dfb522c4da53d4392d35775ed6f6b545be6a3653c10c1c5de14d5eceb54fbf13be24320ede77f375c07c635fe765217338cf8f8fc389011f0d850f9733132f100ee2d3f26fe646dd9e57a0bf2a934afe60ad3c53f40404c0af3dd614cbf4f9685a55cf5c39051dc33320863429a931e54a100ae866b784eeff5fc4f1937e8ffdc9e3512fd9eaa3f3205da57af71e7d8036133e22878c4e925d9f96763497fb52aad7f563a78c135aec2356e5fddcd9de91bcb62948d856e73215be92924288980a7c5a1cede239d38b19deee85eb686950b2d6d2364ae97bedd85d82b2100ff66b111f221d6ba75150e6cc69a5205a417f2c545f4d14a0f8ae1152af81167efdd8e175caf4488567d758025292a05ec8672afe769addd7e9706d549a18f7784a6ebce5c057d60aa3e673ad5e3f7e653f59d638571fe606a144ae7d785e94097aba7edd1c2b1f3dfe0e0f8c7fc01bf0af501070e1b97df143b522a9ab62dac28e5725c2a2e9146e93cb856fb8c38a0ecc40e19e34450904167b1810f151c43bc52c49baeb3fea02560895d85864e7eaaa68c92432426d794cf0a37c033e7cf51e86cf47353a5b7afc4d40fbe5b2b2fc0d39598577631315176dd66d750c62621253fcf73723d207d15cfe593e06926c7088225e3c0322411bd5fc5c57ea55b4cd6cfb61afe6468cd13613eba87eee723a81142faffd327608f1afa2fa5637b98fd89e3cd903ea552457859b87668f0c5aa1971becfd9bf510250154d958b551e7d29042e549f51416efceb0f637a4a2ff", + "password_file": "b2dfea72bb9ea93ab47cb7aa60de281e5040bbc56445fd2de61ac1dc5846d14c1f08c0cc740cec36c5229cc291774dcbce698c97103217c677d864391c1aa87838a7bf20d32e1b5bff19f135ecd4e080ce52e4f9c55f1bf8ba8fb95f194ea4466c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f4a0f14903fb1baa3ee37946e6b0b4d89dec9ff5a1a4fee3f89d657816f96ce944a4f0124c0b94d7257de7fa9a420c531f7c15b1734c9eaa17e254881d57eea7b", + "export_key": "f9e4f5484325c4ebd2af7e558642729a483b10d1c17efa4eb36a4535b3186a7e857e75ec039dfe8d4ca998beda5a0eaf37a9de4c2a6e1548b52f6a7a7535c850", + "session_key": "57e1eef6dbfae519586cdad593b4416a4a7406ff79f96680ef4166d4a741b9567da7ae3f8135f9ba60dec35f9b8c2bc69c3c2aa5b226ed7c90fbf99a1e6a570a" +} +"#; +#[cfg(feature = "ristretto255")] +pub static TEST_VECTOR_P256_TRIPLE_DH_KEM_RISTRETTO255: &str = r#" +{ + "client_s_pk": "c41eb92d55956815fdf80e5e60ce88bd7e28da597280cb534291bbcb5fa7a50f", + "client_s_sk": "6c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f", + "client_e_pk": "a2d5ba995f1410b7d5f97005ccc734e230c1a130e4e710d51561d2a1cdf9e705", + "client_e_sk": "990dfc03f42284a4a9d5cf73fae1a8f7d721a2a7ea81d5af8be73bbb03efc606", + "server_s_pk": "d2b41f860732d185185f5a40320a7a335557bd94d26f0eb8b2e61d9f23d1f832", + "server_s_sk": "f443f3f76b1fe9256b071acbb8f7812b51a0185e47927858f3d352311535610f", + "server_e_pk": "c0a6e4df610e29db5a668cabda1d018c2082539e6b20c8c746cc2f58dc139309", + "server_e_sk": "961e68e0956e057a265adef1b745b2a8954bcaad7af6e12d437b0ee699c9cf0d", + "dummy_client_pk": "b68d5e93478904db6b442b965dcf8d4e070967ad87017022b344f1b80a55b070", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5b", + "oprf_seed": "83d121ef67bef278e93f0d1026ce1fc6f986681ea7c95b482711cd1540bcaa83", + "dummy_masking_key": "ad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd", + "masking_nonce": "698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf", + "envelope_nonce": "ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e", + "client_nonce": "a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "server_nonce": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "server_sig_rng": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "client_sig_rng": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "context": "636f6e74657874", + "registration_request": "024c4ae302511a1f8ae37d71ba2cdcffbfb816910e4d1aa313033403ca7bdde745", + "registration_response": "03c3698b908ff4f0e4275d83466c0e187af2b065d88d122346e242dd829a62cf65d2b41f860732d185185f5a40320a7a335557bd94d26f0eb8b2e61d9f23d1f832", + "registration_upload": "3e02fe2aa6d1735419baf59ed3247e2cefa7f49563d2625ab381fce8a2b74c5dc6df1104406f6bf004ca66ea1bb12f9dd6ec8dad89e70951be4d6d1d3c20a3d56c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f77a02225e442834c2dcf8c221b21fa66ff2320cd0f0a9fea7766ac787eeec530", + "credential_request": "024c4ae302511a1f8ae37d71ba2cdcffbfb816910e4d1aa313033403ca7bdde745a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1701da2b287adf9f808b0ba41bca08cd5b4af452092db4b30b682de57f7715e550df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7", + "credential_response": "03c3698b908ff4f0e4275d83466c0e187af2b065d88d122346e242dd829a62cf65698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d131298bb130f9d244c7b61118895137c150b874a606dd3599abf7b616ad1476e7623c89c9b24023e6ecd2498f29d6af1ae9969e1839ff2d710b4940646a84f0bd016546cb22194519db08fc73071d5a3dd5aa34044d16959cf2093d3a5922d4564961e68e0956e057a265adef1b745b2a8954bcaad7af6e12d437b0ee699c9cf0d84ba5d49f9427331781e79f276551030d358a4a0bed54d999b1dbe05157d9b60fc19593e5e1edfcb42ff3b649718a3afe5a0fdd3643b3c9dee1e84681db2568fd9232bf7caa0e19d2dee75f58b39ff05ee62242fe2197a7edaa239961fff0e43ca1be8a4f80417d4bcfdb074079d2317641528f8bb161b563b0f4cf4c4dc9bc6a1aefaf682d59d37d0633794e60b400d37de9b5bf393e219171c4553ace32ee6a8f3a975062eae6afef5737163f994d111fc8449ccac2f9aa964c324a81a6c919a5e1a1438e6cec521d4c207a6de49d9659e8655825602a4239bf3a611f4383734bcaa7e2b6a420aef25109150d6471d7f5f4b89e6a2b082c09718d0051dfe50f9d6a5e64ff04542f24a4707e331268250a93eb207b2f64a407965da7d269fb4b8877008e17135e49fd4e3bf18a291fb3f69b8bff4b0fdc85dde65484150d760e3bf4bc558450992e175320dcaeba9389b3ed7ab96cf85475e8b1117a3eaabc5147659f333dbe57f5c46cda6ec9fd0468334398fd3e030ac8cf9a5bca07876a9d26cba648ea7f4097755d2cf7e6bd85076bc8f5b893ef960b74a226d15cbbb3d38edbdd902dc92343c0bb7aefcac6abef2cbb77f249a140ca072cd1caea80c6c0d5547e3c7096177fc1bf859c94ed363414bd13863454800523467690518308e3d96caa2744fcb22188c262b0d69489aa0f6de477a7bf90e595cb15c1b242c3c855cb8884c359a55f10f6f62763fd1a0f3c3d9c39fedf0387bcb10011bedb32f82ad075ad800ffb53f77b5cc777c928e1a3534b3d6c6a9517bfe2e336220dd9a79fcc0ffcb3fc2ed75eac5eb92210c320022ab46de39b7f72d6604a3af264df80e5a7077b8a9067c7787547d3f001592721f7c0e1d0602e41178c937e835ba6d19c9359d8a1ce1eca6bdb40b0be77c1e36da07be1382364f3e4968dfeab9da96eeaa4b4f062492e7bb2efe24852ab805c304eae081d67d24d20b09724cf4cd6e3676bd56d26fcc7290d6b13cc347ed6c92fc6b967212b5a7a22287ce373c0b6a53d88a3cb0b27e5d0fcd2e5296f31ad27ff0a3531feef8b86afc1154bb9187ebb240295cb6cad40a0277cea0213452e88330602b0c435f9f1bcc35b4b02dd96a56fb3c113cfcd4005354e892acd69d45023ed4446678c9d42245c2866321b528e69bf0bec44bd2a4f67ce306d01ad49a3078166460c06f517592acc1712823ef0600a878a01d55aeaf57d1ff422f3a356621dd3e28df017d2c24cc7f1f65c1f56a3267b84c9652eb4c043c9e838f1ff97be7d8c57713bae0299c2e34b6e6522a88a5d4c39e9cc62fdffcc44a810834e04e237dbf9a5f714280da1e2b4b7aeaf9885b73bdf4432d445be949adaa05744244a1ad9ef900d6e54d1b24f2659b99a7ae354d64dbc052ce9ac1b9242bf8920f9fa3e11a026305245641c6a3050ab13bc4795de889661aa57c4aafa95776133e7bf270fdf694bf7f3f187069966dfb21637e6468a8e927baec83a07a5da4e3cab265d882df68c57060c0aacbdddb9b466aad8a255033d07e8c3de43256c2e334d6926cde7d4bb3aca5e58647582bd2da168a6555b546b5cb18308a7e9944e9c1cc5264f0d7484590e04bb7c57f2b635ea5a79f4c6ed89b90b9bf87e18eb53d4743383c5c24709aa4b8dc4423e10c7b0d", + "credential_finalization": "8b1671171d6bad3dcd6965853003e7583f1b62779180cbb9d363c1ccbb55220df922c5d7910050c9bc798d84cac7c04b13a5f53cd235537c51c22d8271012d8d", + "client_registration_state": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5b024c4ae302511a1f8ae37d71ba2cdcffbfb816910e4d1aa313033403ca7bdde745", + "client_login_state": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5b024c4ae302511a1f8ae37d71ba2cdcffbfb816910e4d1aa313033403ca7bdde745a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1701da2b287adf9f808b0ba41bca08cd5b4af452092db4b30b682de57f7715e550df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7fd8b82459a9fca09a70ac50ba5cbc0f22939a9d95b98c8e9b356ef294f593b00a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1e234b6047353e07437a54b0b4ce1784896bfa3a52fabca52c7222f3414623f9a4fbbf7447c04aaea852adeb839539560148ca4a89a8f8c2b8582ac29f4867a6bc9135aba83027a61189b3581a18184b1802a88463ea8cd41c40f2e344707314ba01c4e320292ce440c8081cb0960832cd03800dbcf333563218084a042b0f05c2f09936847d4bd391962b6860808a1a262bc7af6f11de67b98a7a1104cf6b434b86a23f15ceb019e197790c8f0116a551f04664f72286ff4c437288ab9b5b27366c8ab7d15327b85cba340713c67baab684edeb251fcd70a000c15b90cbf41b36259f37a7f743e47c525e5436e19815d91d452cd4c8e0cc70e069b491176adcf8ac58a349f98d669a1e511aa59bdaf34a0aea104ce6ca27a2347de406ea5a26bf4924fb5a27132113768f40573016867e5161251a09e1513a79b98907864c7b3b14fd350b6d5c6dda6025b4c6a5c7841bf4407fc3c780ff7866ca89715ab18317cb67ba78198312ca3ac7218b44d45b593948a6585d2836927b27418cf38a3cf5091579279c514356b43b0014ad53f20377de1dc32c89031e8ac94cc4c3caf4513edfb6e8a634866e78a86c8c0296275c873858e985dbb505c279145741807f0c419a10345825b7a3394cda9512920f49a8cf37709b0bddc10bd1f96587843b5be795ab8642c34506b285c70788a660fc73f96198ebb16c67ad11316124aa5457c972cc8192553ea450704cb0730ba9814326b083c14a23962ced1bcdbb790985bbfe9f323e4b463a386866b546a24d06d9b7704cba29eaf437016180d2b1b406e2a4eafd87b6b4a5e811734e47bbc2be6cefeda8c9ef09b37ec9df84086e21b352e7293eb508143fbb09f142cea7515e99baa730a12c7b916c21941eddc5a6a8c32312c3a7e2c5dfec934ba33cced8206b54a1785442c11044805699f991153880628d0032acb84bc62ca2e256c4ad44459bdbb0baf5b62ce1c37561c517765947c195656ccce8fb5269981b70f0c79c44c8ebcf5c46a007177e9c62df67531ba8f23253539371466215745181c25c3c74147861190c833ecbecf02d0552cc5265a395f892a191a76c861bdf5c2966c5ba0f5f8c414555ca1c7a95f264cd56ba40a454522885e57e2b7e03428d75ba7edb44c9d183a2a94bc48f6c7bba360ac242475da225c42c1430ac5da6b3a518ba0e378700699a3cef48744589295092623647110e461a8aa39b2919fc1f257e4d49cb69a8f4933109770bf9ab7a1e54c89ed1387aee61cbef99b1348834d2c7d33837767512b4ec3c38dfc89d0129f29f171f9fac246aa7537150f62a60c6f4945360823c95c585c4a09451029baf86e1f25b6189266338c862648a746f4590022bf70d59dbe67b1a9f14362e08181d4183b3a48c867147eb453124488f94173f8e78495302290874b305659084a4cc983ce51372895e054117082914ca9fc4040d6c66ac50164e813314ac4284339031ef27c217c843022260b462e7c92204f72a5b3a48bdee23e080b7a6eab7fc92a3d34a952b209c0a671257c051249137154060c1605034d10c3004a42302715010184de80cca2d2819dbc5caed72888d38ae6eb043b663b3de1c8e6955deb8b900df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7c43e8ded31c09c3034e2803679bcb56541de9c8492c916517cc1a84a7bba3e3c990dfc03f42284a4a9d5cf73fae1a8f7d721a2a7ea81d5af8be73bbb03efc606", + "server_login_state": "33a84c972711206f3aa59acf32c392813509f31b890457416def702b3cc3210e1f2a0da1f597c1d46f209a4b2bceee9b2d8a823090c3fa4ddb1a0de2e665c2978b1671171d6bad3dcd6965853003e7583f1b62779180cbb9d363c1ccbb55220df922c5d7910050c9bc798d84cac7c04b13a5f53cd235537c51c22d8271012d8d0df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7ca1be8a4f80417d4bcfdb074079d2317641528f8bb161b563b0f4cf4c4dc9bc6a1aefaf682d59d37d0633794e60b400d37de9b5bf393e219171c4553ace32ee6a8f3a975062eae6afef5737163f994d111fc8449ccac2f9aa964c324a81a6c919a5e1a1438e6cec521d4c207a6de49d9659e8655825602a4239bf3a611f4383734bcaa7e2b6a420aef25109150d6471d7f5f4b89e6a2b082c09718d0051dfe50f9d6a5e64ff04542f24a4707e331268250a93eb207b2f64a407965da7d269fb4b8877008e17135e49fd4e3bf18a291fb3f69b8bff4b0fdc85dde65484150d760e3bf4bc558450992e175320dcaeba9389b3ed7ab96cf85475e8b1117a3eaabc5147659f333dbe57f5c46cda6ec9fd0468334398fd3e030ac8cf9a5bca07876a9d26cba648ea7f4097755d2cf7e6bd85076bc8f5b893ef960b74a226d15cbbb3d38edbdd902dc92343c0bb7aefcac6abef2cbb77f249a140ca072cd1caea80c6c0d5547e3c7096177fc1bf859c94ed363414bd13863454800523467690518308e3d96caa2744fcb22188c262b0d69489aa0f6de477a7bf90e595cb15c1b242c3c855cb8884c359a55f10f6f62763fd1a0f3c3d9c39fedf0387bcb10011bedb32f82ad075ad800ffb53f77b5cc777c928e1a3534b3d6c6a9517bfe2e336220dd9a79fcc0ffcb3fc2ed75eac5eb92210c320022ab46de39b7f72d6604a3af264df80e5a7077b8a9067c7787547d3f001592721f7c0e1d0602e41178c937e835ba6d19c9359d8a1ce1eca6bdb40b0be77c1e36da07be1382364f3e4968dfeab9da96eeaa4b4f062492e7bb2efe24852ab805c304eae081d67d24d20b09724cf4cd6e3676bd56d26fcc7290d6b13cc347ed6c92fc6b967212b5a7a22287ce373c0b6a53d88a3cb0b27e5d0fcd2e5296f31ad27ff0a3531feef8b86afc1154bb9187ebb240295cb6cad40a0277cea0213452e88330602b0c435f9f1bcc35b4b02dd96a56fb3c113cfcd4005354e892acd69d45023ed4446678c9d42245c2866321b528e69bf0bec44bd2a4f67ce306d01ad49a3078166460c06f517592acc1712823ef0600a878a01d55aeaf57d1ff422f3a356621dd3e28df017d2c24cc7f1f65c1f56a3267b84c9652eb4c043c9e838f1ff97be7d8c57713bae0299c2e34b6e6522a88a5d4c39e9cc62fdffcc44a810834e04e237dbf9a5f714280da1e2b4b7aeaf9885b73bdf4432d445be949adaa05744244a1ad9ef900d6e54d1b24f2659b99a7ae354d64dbc052ce9ac1b9242bf8920f9fa3e11a026305245641c6a3050ab13bc4795de889661aa57c4aafa95776133e7bf270fdf694bf7f3f187069966dfb21637e6468a8e927baec83a07a5da4e3cab265d882df68c57060c0aacbdddb9b466aad8a255033d07e8c3de43256c2e334d6926cde7d4bb3aca5e58647582bd2da168a6555b546b5cb18308a7e9944e9c1cc5264f0d7484590e04bb7c57f2b635ea5a79f4c6ed89b90b9bf87e18eb53d4743383c5c24709aa4b8dc4423e10c7b0d", + "password_file": "3e02fe2aa6d1735419baf59ed3247e2cefa7f49563d2625ab381fce8a2b74c5dc6df1104406f6bf004ca66ea1bb12f9dd6ec8dad89e70951be4d6d1d3c20a3d56c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f77a02225e442834c2dcf8c221b21fa66ff2320cd0f0a9fea7766ac787eeec530", + "export_key": "e91d5ba62f92971ccc8267735c5b8c5ced5d66dffb4a4f73fb76483f14317a61", + "session_key": "33a84c972711206f3aa59acf32c392813509f31b890457416def702b3cc3210e1f2a0da1f597c1d46f209a4b2bceee9b2d8a823090c3fa4ddb1a0de2e665c297" +} +"#; +#[cfg(feature = "ristretto255")] +pub static TEST_VECTOR_P384_TRIPLE_DH_KEM_RISTRETTO255: &str = r#" +{ + "client_s_pk": "c41eb92d55956815fdf80e5e60ce88bd7e28da597280cb534291bbcb5fa7a50f", + "client_s_sk": "6c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f", + "client_e_pk": "a2d5ba995f1410b7d5f97005ccc734e230c1a130e4e710d51561d2a1cdf9e705", + "client_e_sk": "990dfc03f42284a4a9d5cf73fae1a8f7d721a2a7ea81d5af8be73bbb03efc606", + "server_s_pk": "d2b41f860732d185185f5a40320a7a335557bd94d26f0eb8b2e61d9f23d1f832", + "server_s_sk": "f443f3f76b1fe9256b071acbb8f7812b51a0185e47927858f3d352311535610f", + "server_e_pk": "c0a6e4df610e29db5a668cabda1d018c2082539e6b20c8c746cc2f58dc139309", + "server_e_sk": "961e68e0956e057a265adef1b745b2a8954bcaad7af6e12d437b0ee699c9cf0d", + "dummy_client_pk": "b68d5e93478904db6b442b965dcf8d4e070967ad87017022b344f1b80a55b070", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "d198aa66d474460a0959f960309cf180439288da0e67df1ac388da3984197d4d98e2b63c2e9e05f5a976c845cafe467b", + "oprf_seed": "83d121ef67bef278e93f0d1026ce1fc6f986681ea7c95b482711cd1540bcaa83ad3739f1839da9e267c8ff89e58b166a", + "dummy_masking_key": "98e3f3e430864ade512adbabf1f1a0dd698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13", + "masking_nonce": "c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedfba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e", + "envelope_nonce": "a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "client_nonce": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "server_nonce": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "server_sig_rng": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "client_sig_rng": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5b", + "context": "636f6e74657874", + "registration_request": "0211762ea9a8599a7127521c65455f5fec4cdf9ba363bc3d485e647e1f5f9d1c11305bb97193aec8cdb142b5940b94f504", + "registration_response": "021715a4ba1bfb7782d0ed341bec470216005a6d7912078f59fc753e26a58204017eb460328793067237b92b49be313ba8d2b41f860732d185185f5a40320a7a335557bd94d26f0eb8b2e61d9f23d1f832", + "registration_upload": "8491d48aca36c45f7ab2d76171ffc439fb2b489306e4bc53e15901ec637c4d694f6739dc7acf68899b8a142cfc20d9477f5f78d8c468b6c42769173f9a47e0c49ba5fe59121a9c4abdb8b51aaf2527a96c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f22e0d7030455cce24f8ecb61c9fa3455a36f064941e4d47d1392d6ba1665c13be6164dd0b0f459b29cc8245c15fbae98", + "credential_request": "0211762ea9a8599a7127521c65455f5fec4cdf9ba363bc3d485e647e1f5f9d1c11305bb97193aec8cdb142b5940b94f5042488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff701da2b287adf9f808b0ba41bca08cd5b4af452092db4b30b682de57f7715e550a90765576556e26c4710196d074b0b7364fde35571c25a07c26c0c7b376fd3b7dfe677fc623a925d04f6e71c3d112275e6b2b31459d27fb80a6609347abcf1aabb1c3283e9bfa6dbc9311c3630f99b09da61778351492c50a3212962f6dac1442cb3d6119a7891523260800f971b5e41c859e4a25cd214090cb16f8d0b42e77403900785821a349940088fcaaad0b4cb3046965a58842829a9f53aa6ac0978834200015c881817fcb06113118cbded1ae7148066615a6430a6382094323076d9e076156052bfca392d3f23749499fb1f220c779101aa36a1024ad221605a13627e3665487e18be8b089cbe7b64f5116ba5b7cd9032ca49787edc09dbc9305fa17ca149c1df0698378db32a4287193d58d48db13685a69cec061eaa4251ee17bb5063ec8b34a75aa089deb6965c83d6c4cb2f40c375abb3afddb32c8003673692a49bb10c01528d708bc2d108ba0e935f723a772d0306423b55181bb3e1308406387fd6c3011d59e2572abaed1760aa8cf85fa349236a0a43b7e33f0b093b54e9b67600b7cce542c937aab77ffca6f953624094062d7bb669b40a97344cf88c44328c0bb8a04c035c1bcbb77cdcff27b952c1d81ac30e29387b335182bd4a4e079bec3c0ab894aaf3a2c9ffafb715af3237864805875c4f7b5aa7faac089694e2dfc201c692d4fc5b258d6cf2857cfbd041f768b0f2022bd14e9b3a05827c7089a10311bfdd598dd105b899b159a1438d891128431b1e9c7068a663122094ff29b76e3548d9c4206f5895f1dc1754261557cd414505c1939217087da8aaf4b1dc027c7a19205add2a9c3f74cfbc4b313a85bd1e35886db274a130593f9b02e98a89edcc342c0423359bbd930b49fa392d39679cc217502e3c3655b1acd25aff73b2e99f19f0fb96af5503bec374a35b4c2bc88816d435b805478a5523f451b0ee2252c8deb86e8c14ac36201fbd263c568548bfa3917db019a3316512c44b379503a3a496d8a8b73c9b8999b74d1996fe576b96aaa9642fb3fb71747972c79e61c9d7ce46cd011a24cca5db3b29b6ec2a6c750b5e12b9dc9d8506a386986db100c76381d1841fd232a293079bd1bb7aa2c07392bc94b9395ec858ce80292fa71cec5f280ecf5be7e95a09bbc7d1b0c247ac926a4f566de12809877c1ab3920a45a8579a560d5b39242f618c2b6bbe6c99d03701e76d9018ad4b0933c661b7757c85b2dd730c0f4c03723e61f016a9303e01014fc1cdb025342f3b8d1d82339f766548b85c8325b0c509ea26026fc35bf1d442c445c056ac0ac12ca4057d2730e00c2b56c9c79e896b3f0768cb2c678291e01e41f4e0a2e5214aa2f48070d015b1632147ba0532de19d8452aec9fb078713816341acf8b807dfba0f31445e37c316044693aaca34d6bca20e9a3395f7487d3b9ec43591a17c660594a974bc775e3301de214b2e5111d8e68e42c40ef7804a3cb079bf9b4ac1d0b9131693465c5e3c55c695541c7fa00907c40d4951904b0b29a21b58d5bc501633691238ce91b4093be78f95db022e3c5bfa01805b03c0e536c30e9cae3a02a223b4124b3c28bd8b5b3d2119917194f717095e5acc8c7457a1b16b43c591ab201c96349c6c651fd900b0e3f19afd636f20290ddc6361bdb72aa63ef39d7bf513b06a808f0140da", + "credential_response": "021715a4ba1bfb7782d0ed341bec470216005a6d7912078f59fc753e26a58204017eb460328793067237b92b49be313ba8c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf02a0d48fa3fb50c188462672f2bb8769929d0fdb4188b2c381a148620cce80182bcaee1d08cf2a0b7f667611760d525c7064d62106fcb890e973eb37e8d7c231fab9f3c78d3ce3e66819387cf1b3a86f3566e8aae3f8adaae0b2f045d97612e93a3305bb8542970c0ad31964a4d1f7b8961e68e0956e057a265adef1b745b2a8954bcaad7af6e12d437b0ee699c9cf0de06cb5b2f770194fba88bf99a5c79aa4261ec3397803b67ef83cb3be294a332589800a2583fec301a435745b389b919f9622250709442828b4dd8d77d52f227adc690063431f790eb22ce0ded6ef280de90622a9fe2d401b0f78b76ce19f5d555fdab17ebd735c10f46109f3c277c1291bb9508916c99888c3bf7c1e0ee0337c9507ccade52de9434ef4c4e14638b219eb6f6e066afca97ecc8319121851bdc329b0c92b3d6ae724e801aae071e897862031e7b83dfa2610d63b597b675e945df346dd049c77cca2feddb40f10ee0f43de4df82ad99e35ddb82bba776d1f08e6c4ce776d246a825f9106819bf203e90b84f6db111af4bf3674f171b758692fcb12b4379d5b02051a456a86b18196790a4818948b226895a61236b2e1791e6e9c8c6ba56673ac2bfd7158605a71e11c5df28cae8047e25ce488daa5587aa89a158deac89d3aa292610b315d7cfa81b2741f2a0b7ee7f253491d76cc9070c82f333f997a302bf9fc4d28fbf8f7707cff65d70e486aef8029a13ee482a531851bec245de9bfc4698ca8c9850c8e82b37bfaed99db864d3b86ca87c8ca8fd5b3188d12a920875be70e74b6559ece045ae69ee68ce1c351bb33365973f21a2ac919f56064ef584464263e58cfbdc0c6e45159533674c4b6886e2f490c753880bffc75dd40b602457989ad65f317113f3946be0403a7516a32058c862a94121947fb29c1319789a9a945c8c58be23068604131775f31e183e447ad144f595952e9d0b02d20f968a9cbe8fe1ec834b0344bf67944a3a2cddff21ce4fa8b4e6b753d75673c79a05e1177649d7b39dc4434a5f0b758845f04dab7f458db2b5bfb1b5f6c5a154d38e63c377af57c4601d9779b46321780debb134bc475cbbf185fe925a054132942be626e98c0cfe5488dbecf31095cb3388c1cde14dafde391d8500c540c1ec034fe354738d29bc07d77b464c2ba1c03bec3402d8177d77a52ed9fd818ae6ed1db63d14185323358b6772b4b3810c9e125fd5e4d46d55b481843e5fd5f33faf58f5ac2e0ae45f2f28c7a43feb247fd24c7cf3545b5368626cae65e843fa6f1f62b742eb5d226a875f288df64280da803690da7345c0b0b3131c25e5897ab4b16377f8edd3b8f8c890c5c7f234782d9d8ef10f0fcc66724aa9dc5ebd5f8798d501ced12abf9df9687ed47210dfd064cf5b15373480f98aded3e77e517bad05915b208057371772793a8197466208d70494547f3fc3a0337030da87e1118028d4ff415a8a858fd069d7b33ec1ca3369e7e2a0e0e4463322d4e24b3beae49202408cadc8f1d8e6ad4d6e903123023360c169dd9b59edee16c2a5daee12689980ff34efe56e020a9fbae7c894d5bdbccdeb3973ff434cf178903b9b84af3045d9db257d3a9f05e0a7053be758342f230986f7bcdd05ff7e319e570310e14de1dc7a7b2696b5d4608a20d55545a86f052383fc193558ce2d264e392e4436d2f48594f14e3f19a2205179e3337cd0333e6b9b6de2d3bb95ec9c6321bda96a6fecd45f38b2e53aea7cf1c29a275d5bcf33a4096ef05839348a81791bcb316d3ae9c47e96dc067040716dde4e1ae640e4eb59f74ed336ee43d4f52642e68a0456bdd7a6532b481799db0b9ecdbae93918fb8eac190cb94e6dbabc647eb1a59b22a38", + "credential_finalization": "028f4025b8478259ea2a56a583b75b27f94cefd531bf92ea5c181d1ae9bd6339cd378e19ae4366a208d175cdd6768cd188a72410d7d7896bdbe956092c694cae", + "client_registration_state": "d198aa66d474460a0959f960309cf180439288da0e67df1ac388da3984197d4d98e2b63c2e9e05f5a976c845cafe467b0211762ea9a8599a7127521c65455f5fec4cdf9ba363bc3d485e647e1f5f9d1c11305bb97193aec8cdb142b5940b94f504", + "client_login_state": "d198aa66d474460a0959f960309cf180439288da0e67df1ac388da3984197d4d98e2b63c2e9e05f5a976c845cafe467b0211762ea9a8599a7127521c65455f5fec4cdf9ba363bc3d485e647e1f5f9d1c11305bb97193aec8cdb142b5940b94f5042488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff701da2b287adf9f808b0ba41bca08cd5b4af452092db4b30b682de57f7715e550a90765576556e26c4710196d074b0b7364fde35571c25a07c26c0c7b376fd3b7dfe677fc623a925d04f6e71c3d112275e6b2b31459d27fb80a6609347abcf1aabb1c3283e9bfa6dbc9311c3630f99b09da61778351492c50a3212962f6dac1442cb3d6119a7891523260800f971b5e41c859e4a25cd214090cb16f8d0b42e77403900785821a349940088fcaaad0b4cb3046965a58842829a9f53aa6ac0978834200015c881817fcb06113118cbded1ae7148066615a6430a6382094323076d9e076156052bfca392d3f23749499fb1f220c779101aa36a1024ad221605a13627e3665487e18be8b089cbe7b64f5116ba5b7cd9032ca49787edc09dbc9305fa17ca149c1df0698378db32a4287193d58d48db13685a69cec061eaa4251ee17bb5063ec8b34a75aa089deb6965c83d6c4cb2f40c375abb3afddb32c8003673692a49bb10c01528d708bc2d108ba0e935f723a772d0306423b55181bb3e1308406387fd6c3011d59e2572abaed1760aa8cf85fa349236a0a43b7e33f0b093b54e9b67600b7cce542c937aab77ffca6f953624094062d7bb669b40a97344cf88c44328c0bb8a04c035c1bcbb77cdcff27b952c1d81ac30e29387b335182bd4a4e079bec3c0ab894aaf3a2c9ffafb715af3237864805875c4f7b5aa7faac089694e2dfc201c692d4fc5b258d6cf2857cfbd041f768b0f2022bd14e9b3a05827c7089a10311bfdd598dd105b899b159a1438d891128431b1e9c7068a663122094ff29b76e3548d9c4206f5895f1dc1754261557cd414505c1939217087da8aaf4b1dc027c7a19205add2a9c3f74cfbc4b313a85bd1e35886db274a130593f9b02e98a89edcc342c0423359bbd930b49fa392d39679cc217502e3c3655b1acd25aff73b2e99f19f0fb96af5503bec374a35b4c2bc88816d435b805478a5523f451b0ee2252c8deb86e8c14ac36201fbd263c568548bfa3917db019a3316512c44b379503a3a496d8a8b73c9b8999b74d1996fe576b96aaa9642fb3fb71747972c79e61c9d7ce46cd011a24cca5db3b29b6ec2a6c750b5e12b9dc9d8506a386986db100c76381d1841fd232a293079bd1bb7aa2c07392bc94b9395ec858ce80292fa71cec5f280ecf5be7e95a09bbc7d1b0c247ac926a4f566de12809877c1ab3920a45a8579a560d5b39242f618c2b6bbe6c99d03701e76d9018ad4b0933c661b7757c85b2dd730c0f4c03723e61f016a9303e01014fc1cdb025342f3b8d1d82339f766548b85c8325b0c509ea26026fc35bf1d442c445c056ac0ac12ca4057d2730e00c2b56c9c79e896b3f0768cb2c678291e01e41f4e0a2e5214aa2f48070d015b1632147ba0532de19d8452aec9fb078713816341acf8b807dfba0f31445e37c316044693aaca34d6bca20e9a3395f7487d3b9ec43591a17c660594a974bc775e3301de214b2e5111d8e68e42c40ef7804a3cb079bf9b4ac1d0b9131693465c5e3c55c695541c7fa00907c40d4951904b0b29a21b58d5bc501633691238ce91b4093be78f95db022e3c5bfa01805b03c0e536c30e9cae3a02a223b4124b3c28bd8b5b3d2119917194f717095e5acc8c7457a1b16b43c591ab201c96349c6c651fd900b0e3f19afd636f20290ddc6361bdb72aa63ef39d7bf513b06a808f0140dafd8b82459a9fca09a70ac50ba5cbc0f22939a9d95b98c8e9b356ef294f593b002488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff4205c7cae06e7f6161260078c533a9dd0a2dc897b09a52c0ac0908aa2b5896834943f569fcab165ea309f35b251e96618ac37a9309a7c2f2aa05a43ebee60ae09cbe95d20df9365e57933836a27514e538e76ba46e399b63dc83d254bec6206fbb02050ea08a77c6aed0619be2eb17dc250d2bda88cf14b8e4109b8d593909ecac17e5120c8bc49aacc4081215fce2bfba123f97215f9ffc3379204740ea7d5d356056889cf56464c7e43ff6e9380d0382ff91558ca73016087867d1afc6c1a3d18b91cd21703e2822b75818ec6334f9686a4ef635810c0445d6cd50d7420cb3453d000332598c077602076ab23ad1806be112e49229034bacec6c927df2162e3440af2610e1a52189808c4adb1e88107eba85afa769921d8c1b0a20aa046403eb5b52376640e77305e460b344ec46180497e4d1533f021aae78203658b101e625e79a29fc3627501b6eeefc1df5c13702d1bcc141a6e83bc65901bd717c1f02c03aaeaba92e21ac74d63c20352c4509502367c7ddfb06f7cc3d823c68f7bb545621bc8dd892b433b19ffa37bd838b856b6e10164489a924bcf16147d68bdb08b2815b99f9a389a3f73d009966042b83573a6050d7031100a5a10a63213721d351ced5b96b356cbecaa189bcd1a16d801714734285469349b3cb00b94d3bb094eb201b6bda89e9b471d9875339e6b87538afe2577ed88241e5a248f096341ce41e783ab9e34a855c33067a36acd109380d86a474fa40b97cc8f388769be019a1e76f6ce96fdd886211f721724527f98a93fa786b4664145c3285202c114db836eecacbdd90164215b03096b140f399f2fa783d74165061a9a4e83b8f7528cdd60b2ed15319d5590cc6370a92c415a881b0bb1008050053335bb0778a87c58d8786c04af67cf19bc1ad67355944b925f85bbda0836754c99452c066c4c5bb2acb51ba0e71083329d040c31206beb9ca28836b48d05683f9469799aa13a97503aca67cf97abd348d2e1000d5c83a64701e05256a60e303ee86c5970bbb6003675d3712a6c3141b50a4d4352144114ae735cb1994bbda284fb10c7a155c7adc3ba986d52e700929fb39ba520937f611353db24104882034e7aa2a9c23d9828ebc0cabcc0b8524784782cc9165324f2b37c11e851fed2850baa671963858ebd6196ec4b3a795764e930eb02c810b6a2f833866f0f25f5b854cfeb90b3b264f6aa46a064cc13979bba1e44a07fc6f29cc20ed5cb1bb518e8f647cace7ae32e67a48e984417c9b5e8a4e72aaa379939796b2070ba5461bb0060630145f8214dc61c85ec792a3296f732a66ee94016a90cae9f11dcd03d03ad65ebba9adf5aa5e81493dd70a69fd354595e3be2d70ab3f295b3beba0886c0726e6579379b70da3c938667c0cea0824644bcf8857333ab6c0b9329485bef33b9b0398b607169a454b2663f73c575bb67755c4096c13d6d3bf86f0ce3f868a4160262f247d5a808f849acf90566e8e59ca27b59606ca7c286a93d19504271917f1a2c79aca8cc9c51ff6c135d6850eaf36b98703603f86648a51b8e73a9b8fe693ed659324142c103c1ad9626bca12c2e45232aab6bfecab23c5f6c76954183fd8c25d3c758bb3448b25910a90765576556e26c4710196d074b0b7364fde35571c25a07c26c0c7b376fd3b7dfe677fc623a925d04f6e71c3d112275e6b2b31459d27fb80a6609347abcf1aabb1c3283e9bfa6dbc9311c3630f99b09da61778351492c50a3212962f6dac1442cb3d6119a7891523260800f971b5e41c859e4a25cd214090cb16f8d0b42e77403900785821a349940088fcaaad0b4cb3046965a58842829a9f53aa6ac0978834200015c881817fcb06113118cbded1ae7148066615a6430a6382094323076d9e076156052bfca392d3f23749499fb1f220c779101aa36a1024ad221605a13627e3665487e18be8b089cbe7b64f5116ba5b7cd9032ca49787edc09dbc9305fa17ca149c1df0698378db32a4287193d58d48db13685a69cec061eaa4251ee17bb5063ec8b34a75aa089deb6965c83d6c4cb2f40c375abb3afddb32c8003673692a49bb10c01528d708bc2d108ba0e935f723a772d0306423b55181bb3e1308406387fd6c3011d59e2572abaed1760aa8cf85fa349236a0a43b7e33f0b093b54e9b67600b7cce542c937aab77ffca6f953624094062d7bb669b40a97344cf88c44328c0bb8a04c035c1bcbb77cdcff27b952c1d81ac30e29387b335182bd4a4e079bec3c0ab894aaf3a2c9ffafb715af3237864805875c4f7b5aa7faac089694e2dfc201c692d4fc5b258d6cf2857cfbd041f768b0f2022bd14e9b3a05827c7089a10311bfdd598dd105b899b159a1438d891128431b1e9c7068a663122094ff29b76e3548d9c4206f5895f1dc1754261557cd414505c1939217087da8aaf4b1dc027c7a19205add2a9c3f74cfbc4b313a85bd1e35886db274a130593f9b02e98a89edcc342c0423359bbd930b49fa392d39679cc217502e3c3655b1acd25aff73b2e99f19f0fb96af5503bec374a35b4c2bc88816d435b805478a5523f451b0ee2252c8deb86e8c14ac36201fbd263c568548bfa3917db019a3316512c44b379503a3a496d8a8b73c9b8999b74d1996fe576b96aaa9642fb3fb71747972c79e61c9d7ce46cd011a24cca5db3b29b6ec2a6c750b5e12b9dc9d8506a386986db100c76381d1841fd232a293079bd1bb7aa2c07392bc94b9395ec858ce80292fa71cec5f280ecf5be7e95a09bbc7d1b0c247ac926a4f566de12809877c1ab3920a45a8579a560d5b39242f618c2b6bbe6c99d03701e76d9018ad4b0933c661b7757c85b2dd730c0f4c03723e61f016a9303e01014fc1cdb025342f3b8d1d82339f766548b85c8325b0c509ea26026fc35bf1d442c445c056ac0ac12ca4057d2730e00c2b56c9c79e896b3f0768cb2c678291e01e41f4e0a2e5214aa2f48070d015b1632147ba0532de19d8452aec9fb078713816341acf8b807dfba0f31445e37c316044693aaca34d6bca20e9a3395f7487d3b9ec43591a17c660594a974bc775e3301de214b2e5111d8e68e42c40ef7804a3cb079bf9b4ac1d0b9131693465c5e3c55c695541c7fa00907c40d4951904b0b29a21b58d5bc501633691238ce91b4093be78f95db022e3c5bfa01805b03c0e536c30e9cae3a02a223b4124b3c28bd8b5b3d2119917194f717095e5acc8c7457a1b16b43c591ab201c96349c6c651fd900b0e3f19afd636f20290ddc6361bdb72aa63ef39d7bf513b06a808f0140da06934f3175dde17f994ac4c21ed7d2ca695e7121cdcb007cbbaa3798d1bd931998e2b63c2e9e05f5a976c845cafe467b990dfc03f42284a4a9d5cf73fae1a8f7", + "server_login_state": "5a28fd70a40c1ab6cbc5713b3ce8961646a41646cc1edd7ddde89aa857608ede594076a5796a92ec5e95dc1765f3e11d64931bc4284c17bc38b34ae1a9984c1c028f4025b8478259ea2a56a583b75b27f94cefd531bf92ea5c181d1ae9bd6339cd378e19ae4366a208d175cdd6768cd188a72410d7d7896bdbe956092c694cae0a90765576556e26c4710196d074b0b7364fde35571c25a07c26c0c7b376fd3b7dfe677fc623a925d04f6e71c3d112275e6b2b31459d27fb80a6609347abcf1aabb1c3283e9bfa6dbc9311c3630f99b09da61778351492c50a3212962f6dac1442cb3d6119a7891523260800f971b5e41c859e4a25cd214090cb16f8d0b42e77403900785821a349940088fcaaad0b4cb3046965a58842829a9f53aa6ac0978834200015c881817fcb06113118cbded1ae7148066615a6430a6382094323076d9e076156052bfca392d3f23749499fb1f220c779101aa36a1024ad221605a13627e3665487e18be8b089cbe7b64f5116ba5b7cd9032ca49787edc09dbc9305fa17ca149c1df0698378db32a4287193d58d48db13685a69cec061eaa4251ee17bb5063ec8b34a75aa089deb6965c83d6c4cb2f40c375abb3afddb32c8003673692a49bb10c01528d708bc2d108ba0e935f723a772d0306423b55181bb3e1308406387fd6c3011d59e2572abaed1760aa8cf85fa349236a0a43b7e33f0b093b54e9b67600b7cce542c937aab77ffca6f953624094062d7bb669b40a97344cf88c44328c0bb8a04c035c1bcbb77cdcff27b952c1d81ac30e29387b335182bd4a4e079bec3c0ab894aaf3a2c9ffafb715af3237864805875c4f7b5aa7faac089694e2dfc201c692d4fc5b258d6cf2857cfbd041f768b0f2022bd14e9b3a05827c7089a10311bfdd598dd105b899b159a1438d891128431b1e9c7068a663122094ff29b76e3548d9c4206f5895f1dc1754261557cd414505c1939217087da8aaf4b1dc027c7a19205add2a9c3f74cfbc4b313a85bd1e35886db274a130593f9b02e98a89edcc342c0423359bbd930b49fa392d39679cc217502e3c3655b1acd25aff73b2e99f19f0fb96af5503bec374a35b4c2bc88816d435b805478a5523f451b0ee2252c8deb86e8c14ac36201fbd263c568548bfa3917db019a3316512c44b379503a3a496d8a8b73c9b8999b74d1996fe576b96aaa9642fb3fb71747972c79e61c9d7ce46cd011a24cca5db3b29b6ec2a6c750b5e12b9dc9d8506a386986db100c76381d1841fd232a293079bd1bb7aa2c07392bc94b9395ec858ce80292fa71cec5f280ecf5be7e95a09bbc7d1b0c247ac926a4f566de12809877c1ab3920a45a8579a560d5b39242f618c2b6bbe6c99d03701e76d9018ad4b0933c661b7757c85b2dd730c0f4c03723e61f016a9303e01014fc1cdb025342f3b8d1d82339f766548b85c8325b0c509ea26026fc35bf1d442c445c056ac0ac12ca4057d2730e00c2b56c9c79e896b3f0768cb2c678291e01e41f4e0a2e5214aa2f48070d015b1632147ba0532de19d8452aec9fb078713816341acf8b807dfba0f31445e37c316044693aaca34d6bca20e9a3395f7487d3b9ec43591a17c660594a974bc775e3301de214b2e5111d8e68e42c40ef7804a3cb079bf9b4ac1d0b9131693465c5e3c55c695541c7fa00907c40d4951904b0b29a21b58d5bc501633691238ce91b4093be78f95db022e3c5bfa01805b03c0e536c30e9cae3a02a223b4124b3c28bd8b5b3d2119917194f717095e5acc8c7457a1b16b43c591ab201c96349c6c651fd900b0e3f19afd636f20290ddc6361bdb72aa63ef39d7bf513b06a808f0140da5fdab17ebd735c10f46109f3c277c1291bb9508916c99888c3bf7c1e0ee0337c9507ccade52de9434ef4c4e14638b219eb6f6e066afca97ecc8319121851bdc329b0c92b3d6ae724e801aae071e897862031e7b83dfa2610d63b597b675e945df346dd049c77cca2feddb40f10ee0f43de4df82ad99e35ddb82bba776d1f08e6c4ce776d246a825f9106819bf203e90b84f6db111af4bf3674f171b758692fcb12b4379d5b02051a456a86b18196790a4818948b226895a61236b2e1791e6e9c8c6ba56673ac2bfd7158605a71e11c5df28cae8047e25ce488daa5587aa89a158deac89d3aa292610b315d7cfa81b2741f2a0b7ee7f253491d76cc9070c82f333f997a302bf9fc4d28fbf8f7707cff65d70e486aef8029a13ee482a531851bec245de9bfc4698ca8c9850c8e82b37bfaed99db864d3b86ca87c8ca8fd5b3188d12a920875be70e74b6559ece045ae69ee68ce1c351bb33365973f21a2ac919f56064ef584464263e58cfbdc0c6e45159533674c4b6886e2f490c753880bffc75dd40b602457989ad65f317113f3946be0403a7516a32058c862a94121947fb29c1319789a9a945c8c58be23068604131775f31e183e447ad144f595952e9d0b02d20f968a9cbe8fe1ec834b0344bf67944a3a2cddff21ce4fa8b4e6b753d75673c79a05e1177649d7b39dc4434a5f0b758845f04dab7f458db2b5bfb1b5f6c5a154d38e63c377af57c4601d9779b46321780debb134bc475cbbf185fe925a054132942be626e98c0cfe5488dbecf31095cb3388c1cde14dafde391d8500c540c1ec034fe354738d29bc07d77b464c2ba1c03bec3402d8177d77a52ed9fd818ae6ed1db63d14185323358b6772b4b3810c9e125fd5e4d46d55b481843e5fd5f33faf58f5ac2e0ae45f2f28c7a43feb247fd24c7cf3545b5368626cae65e843fa6f1f62b742eb5d226a875f288df64280da803690da7345c0b0b3131c25e5897ab4b16377f8edd3b8f8c890c5c7f234782d9d8ef10f0fcc66724aa9dc5ebd5f8798d501ced12abf9df9687ed47210dfd064cf5b15373480f98aded3e77e517bad05915b208057371772793a8197466208d70494547f3fc3a0337030da87e1118028d4ff415a8a858fd069d7b33ec1ca3369e7e2a0e0e4463322d4e24b3beae49202408cadc8f1d8e6ad4d6e903123023360c169dd9b59edee16c2a5daee12689980ff34efe56e020a9fbae7c894d5bdbccdeb3973ff434cf178903b9b84af3045d9db257d3a9f05e0a7053be758342f230986f7bcdd05ff7e319e570310e14de1dc7a7b2696b5d4608a20d55545a86f052383fc193558ce2d264e392e4436d2f48594f14e3f19a2205179e3337cd0333e6b9b6de2d3bb95ec9c6321bda96a6fecd45f38b2e53aea7cf1c29a275d5bcf33a4096ef05839348a81791bcb316d3ae9c47e96dc067040716dde4e1ae640e4eb59f74ed336ee43d4f52642e68a0456bdd7a6532b481799db0b9ecdbae93918fb8eac190cb94e6dbabc647eb1a59b22a38", + "password_file": "8491d48aca36c45f7ab2d76171ffc439fb2b489306e4bc53e15901ec637c4d694f6739dc7acf68899b8a142cfc20d9477f5f78d8c468b6c42769173f9a47e0c49ba5fe59121a9c4abdb8b51aaf2527a96c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f22e0d7030455cce24f8ecb61c9fa3455a36f064941e4d47d1392d6ba1665c13be6164dd0b0f459b29cc8245c15fbae98", + "export_key": "38aad036f28a5570a99f86709f81283857fe62767fa06ad05cfd4630dedd235acd0df99a7a2d5454f4be8a829ee9c0e0", + "session_key": "5a28fd70a40c1ab6cbc5713b3ce8961646a41646cc1edd7ddde89aa857608ede594076a5796a92ec5e95dc1765f3e11d64931bc4284c17bc38b34ae1a9984c1c" +} +"#; +#[cfg(feature = "ristretto255")] +pub static TEST_VECTOR_P521_TRIPLE_DH_KEM_RISTRETTO255: &str = r#" +{ + "client_s_pk": "c41eb92d55956815fdf80e5e60ce88bd7e28da597280cb534291bbcb5fa7a50f", + "client_s_sk": "6c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f", + "client_e_pk": "a2d5ba995f1410b7d5f97005ccc734e230c1a130e4e710d51561d2a1cdf9e705", + "client_e_sk": "990dfc03f42284a4a9d5cf73fae1a8f7d721a2a7ea81d5af8be73bbb03efc606", + "server_s_pk": "d2b41f860732d185185f5a40320a7a335557bd94d26f0eb8b2e61d9f23d1f832", + "server_s_sk": "f443f3f76b1fe9256b071acbb8f7812b51a0185e47927858f3d352311535610f", + "server_e_pk": "c0a6e4df610e29db5a668cabda1d018c2082539e6b20c8c746cc2f58dc139309", + "server_e_sk": "961e68e0956e057a265adef1b745b2a8954bcaad7af6e12d437b0ee699c9cf0d", + "dummy_client_pk": "b68d5e93478904db6b442b965dcf8d4e070967ad87017022b344f1b80a55b070", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "01e8e8b444c2187242d7d6068d47af4e3c3dda297a7f66bdef4f3f61ea1f1eb7fe07eb830b6fc1c964481252595e17a3fdd274c8eea80e720ff035545c056c2a4e6f", + "oprf_seed": "83d121ef67bef278e93f0d1026ce1fc6f986681ea7c95b482711cd1540bcaa83ad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd", + "dummy_masking_key": "698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf", + "masking_nonce": "ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52ea4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "envelope_nonce": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "client_nonce": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "server_nonce": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "server_sig_rng": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5b", + "client_sig_rng": "d198aa66d474460a0959f960309cf180439288da0e67df1ac388da3984197d4d", + "context": "636f6e74657874", + "registration_request": "03008fa98ec77ed88056a620d86dc9561600864dbf5b0c5cdcb26dabb9677e58baa71a4a41e0a912bad39e3c374222909bfae21c4edf60645de1477e797b9f02597880", + "registration_response": "0301eda5ec704dd23746d5d365d19977e73da80cc4240d83a76e7a86c64a342d2b8f80d411208d26663fe2066acf3eeb6fb13b794042d83041196c73417ae19fd02043d2b41f860732d185185f5a40320a7a335557bd94d26f0eb8b2e61d9f23d1f832", + "registration_upload": "78a92cf7d33838b10a2066d6e26226930ef7814b962b7a04e9a2348f34754d44caaa49418d001ab4727288be44e8fc834ced9ccb4598b8180306295ba6ad41de1bc89d4c31f3910ab398928cb73c8c24048169ec6a6379a4d400addd745856736c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f5e9b99bc244e39cf575ecb0465e74b7596dc082b6f738025ebce9908094635243ca4fdb8b730d9d1ffd67c34f2930ff333c4bbd078109e2ec0b3a135a4e3be28", + "credential_request": "03008fa98ec77ed88056a620d86dc9561600864dbf5b0c5cdcb26dabb9677e58baa71a4a41e0a912bad39e3c374222909bfae21c4edf60645de1477e797b9f02597880d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182701da2b287adf9f808b0ba41bca08cd5b4af452092db4b30b682de57f7715e5550a782adc040918712913c8731f48574a80711780da5785a9c0792976c605fd99d2f57c8e67c6126b4bec5b817194787114b073ef99221880c81483c6ea239158015f39c0499e358fb12c527a89c98f545ef7a37d9c30a2f1349d48333f87b213efc9cae126626a4badb90c20d2a56f5688d1e36b995b00f7008631b343db2429fa02a141d704af2f07c1ecb702a601645e5c81ad78e5207cfff079180fcace2e5927e97aab389824f729548e88845469c47aa32fc15c33a2c82aab50751fb1f4ed2026388531dea45a8e4c1448779bbc80a55a0b4f7642c3a9397b8b3264c825c08b1372ed123dfca13a60a4d350a933c87268c4a8202aaac9f7b001bc271cf16bc1d36a6a1e228974a119cbcbad12546ada537bc96c2ca5c594b22b29441547d404f45717274cab38ee9aa9fe79c47f01cffb1b402c1bb82c1276fd1644314a6d58b40237a3bc3cc7ebc3aa65c09c7a23230b2b631b18c4a3aeb32c8443002dbb75e3b77d33bbea87c634379c586c70720f760c079abf2782554560e9bdccda4776937244b6385653fe1415edaa5537a8f54903abac4c58743089d1abc816a578be5c678928cdb88673ab4c32513858c650842e029a8340a5eb27bec6227ff58786d66302bd1c990f596beb27384ea01e67a348ee96149309f8fc4c6a7d6b5e982469bc8518f34aebcecc5028896c2d2229c2568c1f3cc423454384c7f612061b98764facca9b62a8ee7c280f8d2230c607b6d57cd9324101bd0307c090da2d5231b3bbd99d420b831c622f8cfed0686fbc7a8c9c8655c07453653366c5c0a08c1bc8f16921485c6f7729a82752d5ad663f1784e9e97bea2cc24ad163bf6999fbbe57e93b8986d95cabb7700fc8661c62b963b073596626687d3c0ac809d01d5c8a4100f19f8345aa58d6aab1ca154482f8c6d43e8b2b43bab8e159481d89d916948c3556911594268cc7811c4116aeabe9b753a00c37509b5021e5185370003d0ca56a137b5d626339ef09a1d8b184a0697625964420c91f2e212ddc9764d804664481842684b6c1c728eb793b9812c08490fe4c731cb06b3a077939b83aa96965153611fe3c72e8558b7d74b31cfbabd86db1c91e408d4253942c2671ed91023a96cbc63661555bc20555a39ca49eff98c2a24901854c1b07a8fb6f7c5bc6a22033a8b03592661b485804114ba2708307c538a16c24db5abb7a1be616428bc464b4867a54dd47fcee6708e8badd55cbb00e142e5a68bcc4b6874eb3705931e17558fd975ad8658aa034505092257044207b95b7b786164e589a2a100269ee136538cba5b866c5358838b9608e41b6e5970037c054503c24db69b636edb4300e9ac1b4482132109c9bc9528c17471632e01755e00712bd37518eabc61f0579b1bf511093a85417b3e96a236b0d035ea810b9bd81dbab6bd946275aa6c98562b5e408443b2921cb0c705bc99703345c39f55bef13a7d9f216598fbbacc5548d6408c2fc664d72344480a58fe30358966363fb05612d20c217b6e8d128d223c07f3ac23d0a12bb135bad01a29ec40984b1234382cae377373827b582e0499f3958ee1194d162a67d005b592d8319e04749a67bf47696fc7e1cf5911aea743c3933e833beacea8409a36bb85110ea316c71d89c9d59cfed2a7373d95239aabd2", + "credential_response": "0301eda5ec704dd23746d5d365d19977e73da80cc4240d83a76e7a86c64a342d2b8f80d411208d26663fe2066acf3eeb6fb13b794042d83041196c73417ae19fd02043ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e9a64461fded8e3176a529f431fb502aada45fa0636fa3464e1e25c4e4f8fa2063383fb598d902798f1b6511b1ba652c715b8cceda7b4d22df790dbc05543f8e7b17e94b7cadd52a975b8818a34731ca548f6a7a3f362e06e17423082a43fc3c5c579021c51fa473eabe9e6db6cca3dc582a1daac5fc09c803611327e152c08f3961e68e0956e057a265adef1b745b2a8954bcaad7af6e12d437b0ee699c9cf0d9e3035f7adb60b8460c51ed16961b65b46d03d11bd44d8206352d6fbb1bca8775f6c91d1a7c2edd4a31f0011983c799875ba4accd92cd87e74f0ade6ffd75edc8307c5329a5d73b2e08de93d3799f24425654c5812b9e4abc8c3d0b65ae4e1b206a0cbd423f75c3d42e8eb376265d9f3c12147b4cd42ca47d63d968aa41e6ecd57ec6f888fe569692024558472f8606f54aa782892204aae9fb8bd531151a624e723213fff42abc51178bd4bf8737b3d8b36b7df491813e3aa37601622f7c782a016a61549d217983e8ac2a376deb4d2475decae28081992c1597e2d749c2085629e26489c1cf662ea7e12844ee8dcc58bc1c296ddeebafa5f4b5cea9b643a890d888857f3a6ae6fcf7be3a7b7db7a4dd4b227bb60a2562c3e4cbd8d62e6d3bcb7b4cdba077d469107edc05a063383c6d9914f86b7c2c936d0739afb058a8c7d3e460db21844cde960a85671cc9b021588070bfba64e3798e6dd85598a9d6f4ec23d7efede1895d2ab9e95f99cc658cc0f6ca1cdb2c2dd64f17f4129d1283446da25e4fa4cd5e541bd6d50b3d43d706c86f5f3a07689127d40163e8588bd8611db30faa93c4c32528498b0a53f44581febe146c8b0b91bd56c945ebd9b811bdbc2f9cd74378f9b35bc8390a1eee1674167d29841df51b57d1ce8f1cd1fe2ba370c443900aaf6c0c99fc9e71a00c106978e501b920b9b71e80843a464676f1a5f24791299e688efef3746265ec3a11ba9347c4be99f8c1a23a76dc2f3f3a9564067827bf3372e7a080a01971c20f65dfd9850bec0beda9637649bace8c4f66331684bf5fae0abbf1ad18433ae7f80598d594aef59519af14dc1ba1bb29ac3894c2efd4a3edb1044b323bec3acc706f4fe6a940d99217cf97925a37170b10bc89a3e06df5d3c23ee5e3fa1fc2ad6b303d24854c4a6174ae01df45fe0d0d913d01c799034b3973f1a40294a44fd2bf6a5bc90d3292779b97f2039d1ec6731c41e115a53f94a6385c8edce899f09a6f40cd61f51ac78d7a9c2467476b115f9bc1081362aaf3cf9a8b65302c7f1ca2f8f2f70dd7a2e5efd8b8163ec360b53c87283b1b2097585c78a35b90fbb85b4176a50f56250fc42bc7a1451e97b661ff4853d9fe40f927ccd4e3d50e1253333b68912e040c338284a91d7e7044f6a5fd0a6b0806a94281b87a565f377221d54407a05d5d1bf1103805bb0d7b85186bb60206a5024d7ba48b138091fc74cc9dee261064d6f9f2ae831ee067f8b2238440312084dbcc9647c41b3dd557c4b6526702894970ab543846f90a53ed3c4bbfe5c52448df3dede3621978168a79c63c19674655b80f8d4c082a851d172ba16a5c3ad47d542083ba91342267594b055353954fa251b236e2a336b3ee68719f0af7371ec0d51554a8a0259fce59fae1144efe74f26c7eb8e82735204c5030f0cbdac45175b09fbbcd9df8dbb31eb9839759cb2b82508ac45dfb37616d904a1fd1b881e29ba87cd55f67e7d8529ddbcc1982dfd942e87c8cd6a89b51b8c8a17de40fa7ac744e975113573d11bebd24705ab4c4591e7f234a1c4e48a175489250829c8c4044d31f7845d2d2f7a448bf21544a275ec96f2435feafa6a74ab2863e1ab3376e64e1c75fe81200be47de5836d7d9bc6446d40743d249cf5f7927866ffcb3d266b63", + "credential_finalization": "aa014fcd310b79874c65b05b2fdd9213eefefbe97f78ae4c9f456cea9d1d7f394a0735c673d02c74df29d19637f7cf54bd49d50db6cdab491734ff6dd429267f", + "client_registration_state": "01e8e8b444c2187242d7d6068d47af4e3c3dda297a7f66bdef4f3f61ea1f1eb7fe07eb830b6fc1c964481252595e17a3fdd274c8eea80e720ff035545c056c2a4e6f03008fa98ec77ed88056a620d86dc9561600864dbf5b0c5cdcb26dabb9677e58baa71a4a41e0a912bad39e3c374222909bfae21c4edf60645de1477e797b9f02597880", + "client_login_state": "01e8e8b444c2187242d7d6068d47af4e3c3dda297a7f66bdef4f3f61ea1f1eb7fe07eb830b6fc1c964481252595e17a3fdd274c8eea80e720ff035545c056c2a4e6f03008fa98ec77ed88056a620d86dc9561600864dbf5b0c5cdcb26dabb9677e58baa71a4a41e0a912bad39e3c374222909bfae21c4edf60645de1477e797b9f02597880d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182701da2b287adf9f808b0ba41bca08cd5b4af452092db4b30b682de57f7715e5550a782adc040918712913c8731f48574a80711780da5785a9c0792976c605fd99d2f57c8e67c6126b4bec5b817194787114b073ef99221880c81483c6ea239158015f39c0499e358fb12c527a89c98f545ef7a37d9c30a2f1349d48333f87b213efc9cae126626a4badb90c20d2a56f5688d1e36b995b00f7008631b343db2429fa02a141d704af2f07c1ecb702a601645e5c81ad78e5207cfff079180fcace2e5927e97aab389824f729548e88845469c47aa32fc15c33a2c82aab50751fb1f4ed2026388531dea45a8e4c1448779bbc80a55a0b4f7642c3a9397b8b3264c825c08b1372ed123dfca13a60a4d350a933c87268c4a8202aaac9f7b001bc271cf16bc1d36a6a1e228974a119cbcbad12546ada537bc96c2ca5c594b22b29441547d404f45717274cab38ee9aa9fe79c47f01cffb1b402c1bb82c1276fd1644314a6d58b40237a3bc3cc7ebc3aa65c09c7a23230b2b631b18c4a3aeb32c8443002dbb75e3b77d33bbea87c634379c586c70720f760c079abf2782554560e9bdccda4776937244b6385653fe1415edaa5537a8f54903abac4c58743089d1abc816a578be5c678928cdb88673ab4c32513858c650842e029a8340a5eb27bec6227ff58786d66302bd1c990f596beb27384ea01e67a348ee96149309f8fc4c6a7d6b5e982469bc8518f34aebcecc5028896c2d2229c2568c1f3cc423454384c7f612061b98764facca9b62a8ee7c280f8d2230c607b6d57cd9324101bd0307c090da2d5231b3bbd99d420b831c622f8cfed0686fbc7a8c9c8655c07453653366c5c0a08c1bc8f16921485c6f7729a82752d5ad663f1784e9e97bea2cc24ad163bf6999fbbe57e93b8986d95cabb7700fc8661c62b963b073596626687d3c0ac809d01d5c8a4100f19f8345aa58d6aab1ca154482f8c6d43e8b2b43bab8e159481d89d916948c3556911594268cc7811c4116aeabe9b753a00c37509b5021e5185370003d0ca56a137b5d626339ef09a1d8b184a0697625964420c91f2e212ddc9764d804664481842684b6c1c728eb793b9812c08490fe4c731cb06b3a077939b83aa96965153611fe3c72e8558b7d74b31cfbabd86db1c91e408d4253942c2671ed91023a96cbc63661555bc20555a39ca49eff98c2a24901854c1b07a8fb6f7c5bc6a22033a8b03592661b485804114ba2708307c538a16c24db5abb7a1be616428bc464b4867a54dd47fcee6708e8badd55cbb00e142e5a68bcc4b6874eb3705931e17558fd975ad8658aa034505092257044207b95b7b786164e589a2a100269ee136538cba5b866c5358838b9608e41b6e5970037c054503c24db69b636edb4300e9ac1b4482132109c9bc9528c17471632e01755e00712bd37518eabc61f0579b1bf511093a85417b3e96a236b0d035ea810b9bd81dbab6bd946275aa6c98562b5e408443b2921cb0c705bc99703345c39f55bef13a7d9f216598fbbacc5548d6408c2fc664d72344480a58fe30358966363fb05612d20c217b6e8d128d223c07f3ac23d0a12bb135bad01a29ec40984b1234382cae377373827b582e0499f3958ee1194d162a67d005b592d8319e04749a67bf47696fc7e1cf5911aea743c3933e833beacea8409a36bb85110ea316c71d89c9d59cfed2a7373d95239aabd2fd8b82459a9fca09a70ac50ba5cbc0f22939a9d95b98c8e9b356ef294f593b00d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e18215f41b79baa8c6928b5471789b5c978ff327818bc7ee9c4984a302aa858e5787491f987cda1a70dfe15624276c9b8b5ab2b59584655327460d0d789db7b568ead23e06413fc81899fe4327d3520529f25ab7da8cf7c93a093198868469057ba74c2c3fdf27c2ca8c67ebd91d275a9252911c5ce3aa5123113d58121a9a95ea189633c4c70f0367aa92c418252150b3309d023dafb0bb0cb71ecf6391ea45a839346d09d46639bc123551c6a9072f2e88372f4a29d19410d956cda8b1885ab74363e53fedf935ffcb6c6ac0574618b9b2a37b5b400aea818263796ddae4aad1a92dd5a7b3c04b93792c423d4755dd18ab654009661236145cc3ef15a4baab39530b5bff1836338b2831845de239811c1cab96958663cbc2750a6f84e2b007b501b26751aa2a143c9269898c4cb455c024d1c761cc15c99544e30692bce7cd6fe16e755c090be88ee1a3a77e04c19abb29ff999931b603ec8358642a393c4757dce31b104979dcb95b92598040224e64574e1a4222c16715d47a48c0d2238ea1ad4ed1214367b82d78667eb5c1b8ac0306e73bfc7930545b51097b3fc43624c637b34cb2c5b7f751579441a580accd1431d2d164715b51999a405ea30977f75a51d75780f526d3974f38a8a0f563374751a562c2a05e904435b3b7c65a1a69181ec66bcc038545f0ac095f39145994c2cb54313f9220a065777b77a183c875edd1ab2203438b695012c5274e443bce1150662b9a8e71237596877c0a9628034547926a96f7c013f6aa33b00f069b9be661a3016527ea1410d1f44b0f302700bd8552466452864d4d568483ab74d50989abe11a244a2da55b28d07b2fa50b337a715af1b78cc661c2f7465939c57ec1c955b8280c10ea74748b25a25917f1352d3f78c41cd5b25abb9ffe527dcdc6c2932361647b312409754659b63338502eb5cdaa7c4b0d90ad0d590266e85372766af80053c20c0373ac6e330566a0810b1b1a25e21bcfddc228ee44bb2d64b249124344390b62482b43fa6d71c531f6784e94780190bb1093fb9b815a84a6e87ee2d4952cb19d81673f26c7c1cb1a8678a3bab62a07e7e7a7d0fb710a107ca8f8752c48928d5080e66502ac41acb346316aa2465ca1abed921c7a27b1c48410ed659192377719a88e599c604c26b93c7c60c6d58c41bc343bebc0a774494aebbaf4e59aacd72ebe7b1f7e36199c2cb7dee37ce4203afb3b3da320250de91c368a65995a233ac51a3c34475135260b448d94378f2d5bb922921d1e486a19f551f13819c2f91002f61cb3c22726784016c1b34ac1a1c5f85eb54c244fe9c3ebe4159a35959669704551a122a0c3d77ab916788ef371a7e69600e90b46f30487e45512c17882a0d57b99f89ee8980f96622345440697f708306a49e9a0395a0c3588d04ee30c201b0cb5e987133551169b67600b669e13842188650689084d86019dbb11b17acc8759d50dfbf8af3ed273d51aa3e461b10288418a005883045d129c8964eacd7311a5759565be8b504dc0300a42036889a4a57945ce058274e360a933037e2144c7da62cdb03d031063f6297f2fc1031ce7bf79c54ada116dff607af10672d956cb2f964f3906cd405613d6407f50a782adc040918712913c8731f48574a80711780da5785a9c0792976c605fd99d2f57c8e67c6126b4bec5b817194787114b073ef99221880c81483c6ea239158015f39c0499e358fb12c527a89c98f545ef7a37d9c30a2f1349d48333f87b213efc9cae126626a4badb90c20d2a56f5688d1e36b995b00f7008631b343db2429fa02a141d704af2f07c1ecb702a601645e5c81ad78e5207cfff079180fcace2e5927e97aab389824f729548e88845469c47aa32fc15c33a2c82aab50751fb1f4ed2026388531dea45a8e4c1448779bbc80a55a0b4f7642c3a9397b8b3264c825c08b1372ed123dfca13a60a4d350a933c87268c4a8202aaac9f7b001bc271cf16bc1d36a6a1e228974a119cbcbad12546ada537bc96c2ca5c594b22b29441547d404f45717274cab38ee9aa9fe79c47f01cffb1b402c1bb82c1276fd1644314a6d58b40237a3bc3cc7ebc3aa65c09c7a23230b2b631b18c4a3aeb32c8443002dbb75e3b77d33bbea87c634379c586c70720f760c079abf2782554560e9bdccda4776937244b6385653fe1415edaa5537a8f54903abac4c58743089d1abc816a578be5c678928cdb88673ab4c32513858c650842e029a8340a5eb27bec6227ff58786d66302bd1c990f596beb27384ea01e67a348ee96149309f8fc4c6a7d6b5e982469bc8518f34aebcecc5028896c2d2229c2568c1f3cc423454384c7f612061b98764facca9b62a8ee7c280f8d2230c607b6d57cd9324101bd0307c090da2d5231b3bbd99d420b831c622f8cfed0686fbc7a8c9c8655c07453653366c5c0a08c1bc8f16921485c6f7729a82752d5ad663f1784e9e97bea2cc24ad163bf6999fbbe57e93b8986d95cabb7700fc8661c62b963b073596626687d3c0ac809d01d5c8a4100f19f8345aa58d6aab1ca154482f8c6d43e8b2b43bab8e159481d89d916948c3556911594268cc7811c4116aeabe9b753a00c37509b5021e5185370003d0ca56a137b5d626339ef09a1d8b184a0697625964420c91f2e212ddc9764d804664481842684b6c1c728eb793b9812c08490fe4c731cb06b3a077939b83aa96965153611fe3c72e8558b7d74b31cfbabd86db1c91e408d4253942c2671ed91023a96cbc63661555bc20555a39ca49eff98c2a24901854c1b07a8fb6f7c5bc6a22033a8b03592661b485804114ba2708307c538a16c24db5abb7a1be616428bc464b4867a54dd47fcee6708e8badd55cbb00e142e5a68bcc4b6874eb3705931e17558fd975ad8658aa034505092257044207b95b7b786164e589a2a100269ee136538cba5b866c5358838b9608e41b6e5970037c054503c24db69b636edb4300e9ac1b4482132109c9bc9528c17471632e01755e00712bd37518eabc61f0579b1bf511093a85417b3e96a236b0d035ea810b9bd81dbab6bd946275aa6c98562b5e408443b2921cb0c705bc99703345c39f55bef13a7d9f216598fbbacc5548d6408c2fc664d72344480a58fe30358966363fb05612d20c217b6e8d128d223c07f3ac23d0a12bb135bad01a29ec40984b1234382cae377373827b582e0499f3958ee1194d162a67d005b592d8319e04749a67bf47696fc7e1cf5911aea743c3933e833beacea8409a36bb85110ea316c71d89c9d59cfed2a7373d95239aabd2c097f4a045567c382944cb2d4bd2c490dd148bf501ca738083229873a5eee55efe07eb830b6fc1c964481252595e17a3fdd274c8eea80e720ff035545c056c2a", + "server_login_state": "45dec53edb0766b57dad858459bb2c6ae6e1fb3ade8d466323214018a258874f246deb7de77fb15068d6ae2a9afefc0f4b6c0d63da47e5e755a6f3febe640baeaa014fcd310b79874c65b05b2fdd9213eefefbe97f78ae4c9f456cea9d1d7f394a0735c673d02c74df29d19637f7cf54bd49d50db6cdab491734ff6dd429267f50a782adc040918712913c8731f48574a80711780da5785a9c0792976c605fd99d2f57c8e67c6126b4bec5b817194787114b073ef99221880c81483c6ea239158015f39c0499e358fb12c527a89c98f545ef7a37d9c30a2f1349d48333f87b213efc9cae126626a4badb90c20d2a56f5688d1e36b995b00f7008631b343db2429fa02a141d704af2f07c1ecb702a601645e5c81ad78e5207cfff079180fcace2e5927e97aab389824f729548e88845469c47aa32fc15c33a2c82aab50751fb1f4ed2026388531dea45a8e4c1448779bbc80a55a0b4f7642c3a9397b8b3264c825c08b1372ed123dfca13a60a4d350a933c87268c4a8202aaac9f7b001bc271cf16bc1d36a6a1e228974a119cbcbad12546ada537bc96c2ca5c594b22b29441547d404f45717274cab38ee9aa9fe79c47f01cffb1b402c1bb82c1276fd1644314a6d58b40237a3bc3cc7ebc3aa65c09c7a23230b2b631b18c4a3aeb32c8443002dbb75e3b77d33bbea87c634379c586c70720f760c079abf2782554560e9bdccda4776937244b6385653fe1415edaa5537a8f54903abac4c58743089d1abc816a578be5c678928cdb88673ab4c32513858c650842e029a8340a5eb27bec6227ff58786d66302bd1c990f596beb27384ea01e67a348ee96149309f8fc4c6a7d6b5e982469bc8518f34aebcecc5028896c2d2229c2568c1f3cc423454384c7f612061b98764facca9b62a8ee7c280f8d2230c607b6d57cd9324101bd0307c090da2d5231b3bbd99d420b831c622f8cfed0686fbc7a8c9c8655c07453653366c5c0a08c1bc8f16921485c6f7729a82752d5ad663f1784e9e97bea2cc24ad163bf6999fbbe57e93b8986d95cabb7700fc8661c62b963b073596626687d3c0ac809d01d5c8a4100f19f8345aa58d6aab1ca154482f8c6d43e8b2b43bab8e159481d89d916948c3556911594268cc7811c4116aeabe9b753a00c37509b5021e5185370003d0ca56a137b5d626339ef09a1d8b184a0697625964420c91f2e212ddc9764d804664481842684b6c1c728eb793b9812c08490fe4c731cb06b3a077939b83aa96965153611fe3c72e8558b7d74b31cfbabd86db1c91e408d4253942c2671ed91023a96cbc63661555bc20555a39ca49eff98c2a24901854c1b07a8fb6f7c5bc6a22033a8b03592661b485804114ba2708307c538a16c24db5abb7a1be616428bc464b4867a54dd47fcee6708e8badd55cbb00e142e5a68bcc4b6874eb3705931e17558fd975ad8658aa034505092257044207b95b7b786164e589a2a100269ee136538cba5b866c5358838b9608e41b6e5970037c054503c24db69b636edb4300e9ac1b4482132109c9bc9528c17471632e01755e00712bd37518eabc61f0579b1bf511093a85417b3e96a236b0d035ea810b9bd81dbab6bd946275aa6c98562b5e408443b2921cb0c705bc99703345c39f55bef13a7d9f216598fbbacc5548d6408c2fc664d72344480a58fe30358966363fb05612d20c217b6e8d128d223c07f3ac23d0a12bb135bad01a29ec40984b1234382cae377373827b582e0499f3958ee1194d162a67d005b592d8319e04749a67bf47696fc7e1cf5911aea743c3933e833beacea8409a36bb85110ea316c71d89c9d59cfed2a7373d95239aabd206a0cbd423f75c3d42e8eb376265d9f3c12147b4cd42ca47d63d968aa41e6ecd57ec6f888fe569692024558472f8606f54aa782892204aae9fb8bd531151a624e723213fff42abc51178bd4bf8737b3d8b36b7df491813e3aa37601622f7c782a016a61549d217983e8ac2a376deb4d2475decae28081992c1597e2d749c2085629e26489c1cf662ea7e12844ee8dcc58bc1c296ddeebafa5f4b5cea9b643a890d888857f3a6ae6fcf7be3a7b7db7a4dd4b227bb60a2562c3e4cbd8d62e6d3bcb7b4cdba077d469107edc05a063383c6d9914f86b7c2c936d0739afb058a8c7d3e460db21844cde960a85671cc9b021588070bfba64e3798e6dd85598a9d6f4ec23d7efede1895d2ab9e95f99cc658cc0f6ca1cdb2c2dd64f17f4129d1283446da25e4fa4cd5e541bd6d50b3d43d706c86f5f3a07689127d40163e8588bd8611db30faa93c4c32528498b0a53f44581febe146c8b0b91bd56c945ebd9b811bdbc2f9cd74378f9b35bc8390a1eee1674167d29841df51b57d1ce8f1cd1fe2ba370c443900aaf6c0c99fc9e71a00c106978e501b920b9b71e80843a464676f1a5f24791299e688efef3746265ec3a11ba9347c4be99f8c1a23a76dc2f3f3a9564067827bf3372e7a080a01971c20f65dfd9850bec0beda9637649bace8c4f66331684bf5fae0abbf1ad18433ae7f80598d594aef59519af14dc1ba1bb29ac3894c2efd4a3edb1044b323bec3acc706f4fe6a940d99217cf97925a37170b10bc89a3e06df5d3c23ee5e3fa1fc2ad6b303d24854c4a6174ae01df45fe0d0d913d01c799034b3973f1a40294a44fd2bf6a5bc90d3292779b97f2039d1ec6731c41e115a53f94a6385c8edce899f09a6f40cd61f51ac78d7a9c2467476b115f9bc1081362aaf3cf9a8b65302c7f1ca2f8f2f70dd7a2e5efd8b8163ec360b53c87283b1b2097585c78a35b90fbb85b4176a50f56250fc42bc7a1451e97b661ff4853d9fe40f927ccd4e3d50e1253333b68912e040c338284a91d7e7044f6a5fd0a6b0806a94281b87a565f377221d54407a05d5d1bf1103805bb0d7b85186bb60206a5024d7ba48b138091fc74cc9dee261064d6f9f2ae831ee067f8b2238440312084dbcc9647c41b3dd557c4b6526702894970ab543846f90a53ed3c4bbfe5c52448df3dede3621978168a79c63c19674655b80f8d4c082a851d172ba16a5c3ad47d542083ba91342267594b055353954fa251b236e2a336b3ee68719f0af7371ec0d51554a8a0259fce59fae1144efe74f26c7eb8e82735204c5030f0cbdac45175b09fbbcd9df8dbb31eb9839759cb2b82508ac45dfb37616d904a1fd1b881e29ba87cd55f67e7d8529ddbcc1982dfd942e87c8cd6a89b51b8c8a17de40fa7ac744e975113573d11bebd24705ab4c4591e7f234a1c4e48a175489250829c8c4044d31f7845d2d2f7a448bf21544a275ec96f2435feafa6a74ab2863e1ab3376e64e1c75fe81200be47de5836d7d9bc6446d40743d249cf5f7927866ffcb3d266b63", + "password_file": "78a92cf7d33838b10a2066d6e26226930ef7814b962b7a04e9a2348f34754d44caaa49418d001ab4727288be44e8fc834ced9ccb4598b8180306295ba6ad41de1bc89d4c31f3910ab398928cb73c8c24048169ec6a6379a4d400addd745856736c6562fbd0dd0b74ae36123914d923e6aeea1de70fe715f2c88ad5e950a3dc0f5e9b99bc244e39cf575ecb0465e74b7596dc082b6f738025ebce9908094635243ca4fdb8b730d9d1ffd67c34f2930ff333c4bbd078109e2ec0b3a135a4e3be28", + "export_key": "76717386597491f4bc35bb18329ffcd593677e0add6b4e37b85cde7c7d9410f8da105d3eaea4e93a644c6c44650261bd80066e196f7a74d96a275e751c1130bd", + "session_key": "45dec53edb0766b57dad858459bb2c6ae6e1fb3ade8d466323214018a258874f246deb7de77fb15068d6ae2a9afefc0f4b6c0d63da47e5e755a6f3febe640bae" +} +"#; +#[cfg(feature = "ristretto255")] +pub static TEST_VECTOR_RISTRETTO255_TRIPLE_DH_KEM_P256: &str = r#" +{ + "client_s_pk": "021761440ac35a297290a591697aadb2f1237b623064235e0efa0046f169d2814c", + "client_s_sk": "ffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819b", + "client_e_pk": "03bf5d24f2e9291ee278198014d7e0002395d892b25ea06d108456feda2fddfc57", + "client_e_sk": "7c1a6aa69ca785116ed21e536b39b0c1d203ee76399db89ac5db2804307b5780", + "server_s_pk": "022e4591a17060ae9bae244be0a4fe32ede19b065d97c64355087fcb96ccb78bdf", + "server_s_sk": "65b7435899ada2632d7086307b1f127e56182bde709be796a5ba40c3f925b5f0", + "server_e_pk": "028d18f4c3e2422fb6ecf074aa9fa70c9eb67b2de53e653a3045a73a0b44c7ce78", + "server_e_sk": "3427ff48f71d8955166b25349d029315d5a82a8289171b766c551c8ceb2c1493", + "dummy_client_pk": "03a57ec39337d292fed1fc054974fe1ffb8aea5eb49294dbd0bf8c68a135e068b2", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "56d083cb1619798759c53fedf35c0230c53769bf817ca73d29b35d8b6413a80b", + "oprf_seed": "519dbe4c91dc74d173a34505ea59daaf0c1426d027e21dd83425cfb1b644991f83d121ef67bef278e93f0d1026ce1fc6f986681ea7c95b482711cd1540bcaa83", + "dummy_masking_key": "ad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13", + "masking_nonce": "c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedfba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e", + "envelope_nonce": "a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "client_nonce": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "server_nonce": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "server_sig_rng": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "client_sig_rng": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5b", + "context": "636f6e74657874", + "registration_request": "68b6a3bd4f52fb44e68cec8d259f806f8fc676570137775ce8f61c1ca045c027", + "registration_response": "dc21e4b8d4d6d7e72fa29858f2765693202f15f72d6f7ece3302b44460553855022e4591a17060ae9bae244be0a4fe32ede19b065d97c64355087fcb96ccb78bdf", + "registration_upload": "0282e3d2c6bc5743c81e50367d3fcf5ab7d6a87d72f4556ef4a1e4efd4e94129912ddca3f4ca1ba199025c9f490d35c1f93f250110c430331fe4761df3e94532fdf5b5f91146c69501203faedbe93b04e0c4204f995eb0261ba563fb4e3ec7abf4ffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819bde7998e570a07ee865cc86e462cf7e191ecc759f304fb344db12c5e7a987478629e0c852d7263ff297e169e4cad2ad832dd5c6b3ef497c8338c76f206e500251", + "credential_request": "68b6a3bd4f52fb44e68cec8d259f806f8fc676570137775ce8f61c1ca045c0272488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff029a906dad8aad24f5a026ce40f62dbe916c9ad57723d8b9ad29d39f472ae8026f99832eae8a4051e05fbeb05ef8711aaac41bc160ca0dcc1a0f7b373c31696bd917bf4272ab752d145854ca17474e2ab0795c24c8c045f7e512b985a9e6231376ca4358f28fcc475f08079dd10a882a64ab2925106daa4e1c561662977e13c77873b132094b1f6331744e87cc2d50091d38a8d2eca50dc4c2f2e148b85cbdcb0c9d4089c1c782912563688181ba64e758c4d5627bd5a4c9236b475a4fcfacc8f359c180643308fb45de06130f501dd16cc214185c29987cf92a8c938309599276324bb90b1a07dd7830fb5ab36165358845bc25852221e7bd2b98c94fab7ea75a0e687c71f700b2523b0c1f9a6fbd1aa911c274bca1af2ee45ad1f858cd83546473c625388d0470b00991c38725bbb2c9bdd395213018663aa8b6a2c515aa527f137354a08084d9691e18568e90f8a0a3b1abd4a8577851a8cb670cf5639ce96184cfa1bed338b106da639af95a1ddc0d27e06f6b783b1b9276e1e20cfb484b89546242418027824939d68090f62e06473611382118b49336c30e8da56aa51796a6d407aef634a1f168cda2ad4fd05e38891a25049a0ef560a8232946c0bf0e99051e953b3db4c5d2112e8934447d98568c647d463c34e83512b639b3d603574b7330a45b0e430386f19bb4c63ab2217313a7a07284a3994d2012aab965d8379ba5872aea773d03d74ab8b28c6c6152fef81cacb5c21bb541b2349887cc31c0c046237283dc3570caf0ae1d016dd1b67b4c83c758f58bc8ab918e4a8cd4300acfccb00aa9518fea103d8b951b2c425278585c08676635a7d3472066e54f564bab496931def8b43790598cd766726a31aff701bcd222f56cb699b4089f3872fae6a6be544c081265d4808b6743aed64a1b0db8b1be1a2346dbb52dd48023ca6cff44c4668283591a2808bc3417133a6e376ce229c1e075186cd3018b83256ada96520ac8bcd8983e097eadd0387db14556d03e4705a3d007a203167a70273bdfeb7689d1b5aa47b49f70a83a4520be83b10f746014d6b3cdf233e1c3cfbe9bb9b91151b5a848c6976997ca3b8e94b173e32ef5124c2d0b83d0d0ca607071045469cc079e9e3783991a843e7804fcd56012b042b9fc05f05820af5275d33c74bf04201183c3ff73904332ace008b28e176f18c692304b98410a05e808704fbb94e567573cb389d03b1e5df953dcfa8a7bb245b8ea19b3cac9f9f67956a7aa9f2a5cd8c38e0c8b66c02c6df012402d717012ec99badc31174cccd3f0934f92a0cff5ae4f7caec8732ab14b0b33b66a2666c816a4a15b4a2f43c495ace90fb5755ef9b1716ef996cea27e2f654eaa08594937b22bf5a65bd57b34b7bc439827c3bbb074457022ccb96a384de4b2cf5c8b9e508455b6116a3a5a8dd129149bf8a66225555dd646f0f6a1bf12164e499258f558e590754c861cccf563b1a43be96266bcb697a8b6568d0027b0bc7d9d7589b3a723fa623847bc434623cce6f16063bba536e183f5171477f14bfbf5c34706cacc9384195116182765b183353a493baa73cc47b3552de5402f834954a3cdf6dc3fdf817465354fe510117bc1268c7a20800a9d66748324ac2a1b8986fa8ccbe3926f62a0776eba78121c23fd742e387c31fc62f3fd83ffd0f10efcc45fa8452dff757c419a1055ddea0a847490b40e7420", + "credential_response": "dc21e4b8d4d6d7e72fa29858f2765693202f15f72d6f7ece3302b44460553855c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf0112651cd638dcf56f0be26a4198ceec4ecc9905facaa1d260915520c4576abf891fac17d63f1fd8cdebec9e96696e6c92f02bc35499e39cfc2fffb041cff8241162e62d3158f971ac38ea5734b00892b5730d30fdfae9f118cff2b37facf7c5be069bd951a7b8bd033b438e7aa57e3779bf37471c6b4c2b83613017bce406b06a3427ff48f71d8955166b25349d029315d5a82a8289171b766c551c8ceb2c14930218ff26f632e00a66ff4dc579dc0c862ecdeac63551423c3e61bdeddec697070544189abf56d4913cf139097a026a3f6ae1c4cfdeb89ecfe10aa4b3b068e3c78eae7c1a3768d3677d2efc4f5d4a87c815cbba26e2e8ebade34a6438f3d08cdcc51b3f6337f3eae77fcfc0bf7ec43be7c5529cc6e4d42fb0c8f14f3de7c2a799cebc535aaa57ce99d62e8ed634a26b71b11e3c7a9b8a893b3a474943c352105133cedef3f152743621f7c40f68207d68975d90491342fe8be3eb68841bbfabaca51d21798ef50389a569fb16c65af61e0f34d7d03f5daa873a56cda2c81432e101385a8695dcf2312505bd1b704bec5d9c3543580c8b5229affab327d6e36f39aa9536262f2bef0e10fe2bfda7a5513865e22d7fd7e87147eeb1cc4bcfafd2073797f66d0edae73b6192b70beae90751f1e39df1f7b05f70e3189697492ff16728828ae51c9f65727e153e3c842227f7501a1f65c3bd109ec0c67ca0a089d628bfe0d77e2c4c863c9d6e55c831459786ac5ea3b18abf9d425d83d6c04a30ec69d5640864f237f29f8c2edf15ee9a70ed029398579da3cd2fe99672ad74645d262c0ade4bdf7e56fe65cad3d693c44ea9e5cc3ff16ccafccf30f685dfdeb406445ee56529b40833987e78c9149e23260af76fe6efc932abb69af42ae4eaea079a7577f2efdfc1e83e7b910a17335cfe1f10020ecf66cec08bc3242b4e192a55bda9686c09c83f710e93a0d60e7dbdccaf6e5192e5d5d4beef621ddb5676fc4bf8df1b268b97a64fcf4e221a0155751d7c977521a5e48bb0d638678acf990a728f0cebf9715a9f63e437b081e0d0cb49098ab8d6166e6ca37063084a10a53196e12509b673f7266bc4e2b5699231cd5202c07b07ac1be0adf0e4d472e6f028b5228edee1b5f92eaceb8dde96e0f6483ddfed704b58f7f9ef133315e8b1f3bab8593b3c945fc940fd74318636e61fd3fc623e353fc6136ad80a13168acc4458523a856bf561b5857c77ccb13dbd5f3aeb0afeefc14047e0c2b98aa999473d5a678a5e7bea90ad6b4c893d4d819b659d4ec10a984e41635879a720f305c170275d2437da2f5a95636e5991e7d83725e0598bb4556e898f0383e035f06a7991365bb6f6326a260ed1602fe780082056d49534ce16430314c904db54bfbe2fb2d9ebdc7cbb3ac91b7f8a14d45e688e90e2521c54bba31160096801571eb290d700e770aa32c4afa25d3160910adb3aab4b2a71b12b3a9516e59da1d2ab681d84247358a4910f9396944e030013dd2f5b47dfeeef8f17fe6b8dde5c9b8107694a565155388ffe00eb0e7a7212da0fa1cd663030bd9c5d7c270aae4b0aa6c82f9d85c1ad493e65948c3f318c000952c0d05ee0f66c6a83f9e31f2507b019ae8cafa49766413460017f2f29b15e1f2dfb48dc5c5803c2f22b88e7dd999251cd32fb549b53b7fcbc412fe2cac33e653a1dfc7c9e0a98e358de263958fe9ea369f86126388bd5d6b09083b5831024c5fc3579a6cf61ee0d801f9d9405bc3adadcddb2b2e41f55e8576e8175407f49dc0089b46220a307eb4a691fe7b8ae22f91715f15b94111900374d535b53f77ed32dbc83b00a2967edc97cd3f0481f0b0521b1afaa1bbaf9", + "credential_finalization": "ef9cb088ba3039bdaee6887e31197a1d3e033644f18542676515696792e5d9b8", + "client_registration_state": "56d083cb1619798759c53fedf35c0230c53769bf817ca73d29b35d8b6413a80b68b6a3bd4f52fb44e68cec8d259f806f8fc676570137775ce8f61c1ca045c027", + "client_login_state": "56d083cb1619798759c53fedf35c0230c53769bf817ca73d29b35d8b6413a80b68b6a3bd4f52fb44e68cec8d259f806f8fc676570137775ce8f61c1ca045c0272488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff029a906dad8aad24f5a026ce40f62dbe916c9ad57723d8b9ad29d39f472ae8026f99832eae8a4051e05fbeb05ef8711aaac41bc160ca0dcc1a0f7b373c31696bd917bf4272ab752d145854ca17474e2ab0795c24c8c045f7e512b985a9e6231376ca4358f28fcc475f08079dd10a882a64ab2925106daa4e1c561662977e13c77873b132094b1f6331744e87cc2d50091d38a8d2eca50dc4c2f2e148b85cbdcb0c9d4089c1c782912563688181ba64e758c4d5627bd5a4c9236b475a4fcfacc8f359c180643308fb45de06130f501dd16cc214185c29987cf92a8c938309599276324bb90b1a07dd7830fb5ab36165358845bc25852221e7bd2b98c94fab7ea75a0e687c71f700b2523b0c1f9a6fbd1aa911c274bca1af2ee45ad1f858cd83546473c625388d0470b00991c38725bbb2c9bdd395213018663aa8b6a2c515aa527f137354a08084d9691e18568e90f8a0a3b1abd4a8577851a8cb670cf5639ce96184cfa1bed338b106da639af95a1ddc0d27e06f6b783b1b9276e1e20cfb484b89546242418027824939d68090f62e06473611382118b49336c30e8da56aa51796a6d407aef634a1f168cda2ad4fd05e38891a25049a0ef560a8232946c0bf0e99051e953b3db4c5d2112e8934447d98568c647d463c34e83512b639b3d603574b7330a45b0e430386f19bb4c63ab2217313a7a07284a3994d2012aab965d8379ba5872aea773d03d74ab8b28c6c6152fef81cacb5c21bb541b2349887cc31c0c046237283dc3570caf0ae1d016dd1b67b4c83c758f58bc8ab918e4a8cd4300acfccb00aa9518fea103d8b951b2c425278585c08676635a7d3472066e54f564bab496931def8b43790598cd766726a31aff701bcd222f56cb699b4089f3872fae6a6be544c081265d4808b6743aed64a1b0db8b1be1a2346dbb52dd48023ca6cff44c4668283591a2808bc3417133a6e376ce229c1e075186cd3018b83256ada96520ac8bcd8983e097eadd0387db14556d03e4705a3d007a203167a70273bdfeb7689d1b5aa47b49f70a83a4520be83b10f746014d6b3cdf233e1c3cfbe9bb9b91151b5a848c6976997ca3b8e94b173e32ef5124c2d0b83d0d0ca607071045469cc079e9e3783991a843e7804fcd56012b042b9fc05f05820af5275d33c74bf04201183c3ff73904332ace008b28e176f18c692304b98410a05e808704fbb94e567573cb389d03b1e5df953dcfa8a7bb245b8ea19b3cac9f9f67956a7aa9f2a5cd8c38e0c8b66c02c6df012402d717012ec99badc31174cccd3f0934f92a0cff5ae4f7caec8732ab14b0b33b66a2666c816a4a15b4a2f43c495ace90fb5755ef9b1716ef996cea27e2f654eaa08594937b22bf5a65bd57b34b7bc439827c3bbb074457022ccb96a384de4b2cf5c8b9e508455b6116a3a5a8dd129149bf8a66225555dd646f0f6a1bf12164e499258f558e590754c861cccf563b1a43be96266bcb697a8b6568d0027b0bc7d9d7589b3a723fa623847bc434623cce6f16063bba536e183f5171477f14bfbf5c34706cacc9384195116182765b183353a493baa73cc47b3552de5402f834954a3cdf6dc3fdf817465354fe510117bc1268c7a20800a9d66748324ac2a1b8986fa8ccbe3926f62a0776eba78121c23fd742e387c31fc62f3fd83ffd0f10efcc45fa8452dff757c419a1055ddea0a847490b40e7420bf0ab4e51b171cd8492b98cad76f781e16bb630d3f9ad29836f9a0c6e1b554272488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ffcf7672f280b24c1c009b4930a8871b60abb164b59f93b094647c5e1c57a47ce0c11de93c58c322572b43c926a3b6c0b961625c7cd7c1e2f0caed53a781a8cd37842a5f7812a5f276d186821dc26540d40d4d7c99ffe4179d4b13a412653570054ce562730aacd8c3b93312c760d4b79c61c31fcc0fdaa3268f6084f3e979e1c90f335aa0b1d558b3a32b94f2a38fd9a2c530c449aaa77695461c1897a12b5a95ea4611eba76851a33f7822a209aae1230f255585733a01b5ba4d2283881e94c95ebab2e2b063016caeb71a6d0474b8e15592e175c829a246651765170b299006045a2acbf642aa3f235b9c2a39ca5a80bd6a9114764ee139b84d3b2686b542b985892d179b9c705f2a43c54ce708129323b9b450dd4602662956f925322da18a5154230722a43b95273a05a3cb8b1b69bc776d29c6afa8aa197a181efb9672f2cba9b24653349d3f88946a7c2228c68ee329763346230ba9ab5398867f22870f7697b20a3f56d8796aa8506dbb3d69295b866b2033013106f2961aba89b3dc4ab43a657146cf6517611d7226239742195b5100065bbcdb2a79127a38d20ddef447b45ca5ada9c4d5e0a19aeb32d2b4485091146e209916804886c975f47b1a99408b824c22ffc959cd5710fd8c841bfb5fe7c437ce232f345286e5cb778dd51c9fd49c724c924c951803964394d5c3b45a6bb2a23610bbb1560cb438124945c3845fbc8464d98f23d92e696b207900bc24d003f5676adacb4bfd7664060481ab8896be52738ed3a55d19206336c43993c43892955b42783c3840a989c546c421e71baf3c66a26629a21fa73e5e78093603c9c90329a54c1c3e2c4eedd08096c29b7650c214d23d7e03932f99aefe367640f238a106994e662f2aea1785045bef0075d4889da2bcc6b043168b3845574c51dfa60d2ed28900b0526511122832021ffa68b7c450a1089c3bda40ce986d492b7da2baa0bb31737d2cc0127353f6a5c85281442fcb4965f3cafef30463805a4955509ad2c63bea6487c42152442204bc2bd750a0e5f85a6ccb60af1a10c3b44700b65db2d0ad1d6601b5e9b505e7a83cc773ff354d6f87c2ce774fda4263c88b58b116857dc4821077960f9767d180c9c8f7b1e6280f5cf52fa6139428ecb2c796a498a55392c4a4a053b13534cab66973270ad0a41b42415896c4d292616b27cbc1756307c2ff38850b8929fd0a11cd4741344852ac96b325496309b3bfd9316ec81c7418a71843a8709341478f35187b38b5f4f38a5637278513c78bfc179cb4c4b0608fa0b6a5bfc0ba4777b62914848a3388c918056c2929e4c2034fc9719b8b471c341852436fed848e1df20a87b96add836a88a4ac86586b290abc560c71e8954102662e525258d7b76ceef0916bc59a56f909fb9b59a6494636a79f0d60cc7e047159d03f32987c1eebc39993c10ac43d664339a5d4601d33438ba5b31fd128ee5499caa7773c675396f46196994e5c29a5fd4941cde2bd7929690269602d5a3ed92b73766369fd526a0315acab08c97f49b461033338071e05cc3ccc704b74009755409f2479578c498112452c950375c9508c06e3478c4476371346d546744ccc908e6192efd68e8a67cd99832eae8a4051e05fbeb05ef8711aaac41bc160ca0dcc1a0f7b373c31696bd917bf4272ab752d145854ca17474e2ab0795c24c8c045f7e512b985a9e6231376ca4358f28fcc475f08079dd10a882a64ab2925106daa4e1c561662977e13c77873b132094b1f6331744e87cc2d50091d38a8d2eca50dc4c2f2e148b85cbdcb0c9d4089c1c782912563688181ba64e758c4d5627bd5a4c9236b475a4fcfacc8f359c180643308fb45de06130f501dd16cc214185c29987cf92a8c938309599276324bb90b1a07dd7830fb5ab36165358845bc25852221e7bd2b98c94fab7ea75a0e687c71f700b2523b0c1f9a6fbd1aa911c274bca1af2ee45ad1f858cd83546473c625388d0470b00991c38725bbb2c9bdd395213018663aa8b6a2c515aa527f137354a08084d9691e18568e90f8a0a3b1abd4a8577851a8cb670cf5639ce96184cfa1bed338b106da639af95a1ddc0d27e06f6b783b1b9276e1e20cfb484b89546242418027824939d68090f62e06473611382118b49336c30e8da56aa51796a6d407aef634a1f168cda2ad4fd05e38891a25049a0ef560a8232946c0bf0e99051e953b3db4c5d2112e8934447d98568c647d463c34e83512b639b3d603574b7330a45b0e430386f19bb4c63ab2217313a7a07284a3994d2012aab965d8379ba5872aea773d03d74ab8b28c6c6152fef81cacb5c21bb541b2349887cc31c0c046237283dc3570caf0ae1d016dd1b67b4c83c758f58bc8ab918e4a8cd4300acfccb00aa9518fea103d8b951b2c425278585c08676635a7d3472066e54f564bab496931def8b43790598cd766726a31aff701bcd222f56cb699b4089f3872fae6a6be544c081265d4808b6743aed64a1b0db8b1be1a2346dbb52dd48023ca6cff44c4668283591a2808bc3417133a6e376ce229c1e075186cd3018b83256ada96520ac8bcd8983e097eadd0387db14556d03e4705a3d007a203167a70273bdfeb7689d1b5aa47b49f70a83a4520be83b10f746014d6b3cdf233e1c3cfbe9bb9b91151b5a848c6976997ca3b8e94b173e32ef5124c2d0b83d0d0ca607071045469cc079e9e3783991a843e7804fcd56012b042b9fc05f05820af5275d33c74bf04201183c3ff73904332ace008b28e176f18c692304b98410a05e808704fbb94e567573cb389d03b1e5df953dcfa8a7bb245b8ea19b3cac9f9f67956a7aa9f2a5cd8c38e0c8b66c02c6df012402d717012ec99badc31174cccd3f0934f92a0cff5ae4f7caec8732ab14b0b33b66a2666c816a4a15b4a2f43c495ace90fb5755ef9b1716ef996cea27e2f654eaa08594937b22bf5a65bd57b34b7bc439827c3bbb074457022ccb96a384de4b2cf5c8b9e508455b6116a3a5a8dd129149bf8a66225555dd646f0f6a1bf12164e499258f558e590754c861cccf563b1a43be96266bcb697a8b6568d0027b0bc7d9d7589b3a723fa623847bc434623cce6f16063bba536e183f5171477f14bfbf5c34706cacc9384195116182765b183353a493baa73cc47b3552de5402f834954a3cdf6dc3fdf817465354fe510117bc1268c7a20800a9d66748324ac2a1b8986fa8ccbe3926f62a0776eba78121c23fd742e387c31fc62f3fd83ffd0f10efcc45fa8452dff757c419a1055ddea0a847490b40e7420253ceba52f73dc442f96d810d8c3e9a6689c649661627060cf9e44657aa792bf7c1a6aa69ca785116ed21e536b39b0c1d203ee76399db89ac5db2804307b5780", + "server_login_state": "9d7770fcb3500221789235c345dd807a7b90eb731cdfbbf7836b5b9c353641a8ef9cb088ba3039bdaee6887e31197a1d3e033644f18542676515696792e5d9b899832eae8a4051e05fbeb05ef8711aaac41bc160ca0dcc1a0f7b373c31696bd917bf4272ab752d145854ca17474e2ab0795c24c8c045f7e512b985a9e6231376ca4358f28fcc475f08079dd10a882a64ab2925106daa4e1c561662977e13c77873b132094b1f6331744e87cc2d50091d38a8d2eca50dc4c2f2e148b85cbdcb0c9d4089c1c782912563688181ba64e758c4d5627bd5a4c9236b475a4fcfacc8f359c180643308fb45de06130f501dd16cc214185c29987cf92a8c938309599276324bb90b1a07dd7830fb5ab36165358845bc25852221e7bd2b98c94fab7ea75a0e687c71f700b2523b0c1f9a6fbd1aa911c274bca1af2ee45ad1f858cd83546473c625388d0470b00991c38725bbb2c9bdd395213018663aa8b6a2c515aa527f137354a08084d9691e18568e90f8a0a3b1abd4a8577851a8cb670cf5639ce96184cfa1bed338b106da639af95a1ddc0d27e06f6b783b1b9276e1e20cfb484b89546242418027824939d68090f62e06473611382118b49336c30e8da56aa51796a6d407aef634a1f168cda2ad4fd05e38891a25049a0ef560a8232946c0bf0e99051e953b3db4c5d2112e8934447d98568c647d463c34e83512b639b3d603574b7330a45b0e430386f19bb4c63ab2217313a7a07284a3994d2012aab965d8379ba5872aea773d03d74ab8b28c6c6152fef81cacb5c21bb541b2349887cc31c0c046237283dc3570caf0ae1d016dd1b67b4c83c758f58bc8ab918e4a8cd4300acfccb00aa9518fea103d8b951b2c425278585c08676635a7d3472066e54f564bab496931def8b43790598cd766726a31aff701bcd222f56cb699b4089f3872fae6a6be544c081265d4808b6743aed64a1b0db8b1be1a2346dbb52dd48023ca6cff44c4668283591a2808bc3417133a6e376ce229c1e075186cd3018b83256ada96520ac8bcd8983e097eadd0387db14556d03e4705a3d007a203167a70273bdfeb7689d1b5aa47b49f70a83a4520be83b10f746014d6b3cdf233e1c3cfbe9bb9b91151b5a848c6976997ca3b8e94b173e32ef5124c2d0b83d0d0ca607071045469cc079e9e3783991a843e7804fcd56012b042b9fc05f05820af5275d33c74bf04201183c3ff73904332ace008b28e176f18c692304b98410a05e808704fbb94e567573cb389d03b1e5df953dcfa8a7bb245b8ea19b3cac9f9f67956a7aa9f2a5cd8c38e0c8b66c02c6df012402d717012ec99badc31174cccd3f0934f92a0cff5ae4f7caec8732ab14b0b33b66a2666c816a4a15b4a2f43c495ace90fb5755ef9b1716ef996cea27e2f654eaa08594937b22bf5a65bd57b34b7bc439827c3bbb074457022ccb96a384de4b2cf5c8b9e508455b6116a3a5a8dd129149bf8a66225555dd646f0f6a1bf12164e499258f558e590754c861cccf563b1a43be96266bcb697a8b6568d0027b0bc7d9d7589b3a723fa623847bc434623cce6f16063bba536e183f5171477f14bfbf5c34706cacc9384195116182765b183353a493baa73cc47b3552de5402f834954a3cdf6dc3fdf817465354fe510117bc1268c7a20800a9d66748324ac2a1b8986fa8ccbe3926f62a0776eba78121c23fd742e387c31fc62f3fd83ffd0f10efcc45fa8452dff757c419a1055ddea0a847490b40e7420ae7c1a3768d3677d2efc4f5d4a87c815cbba26e2e8ebade34a6438f3d08cdcc51b3f6337f3eae77fcfc0bf7ec43be7c5529cc6e4d42fb0c8f14f3de7c2a799cebc535aaa57ce99d62e8ed634a26b71b11e3c7a9b8a893b3a474943c352105133cedef3f152743621f7c40f68207d68975d90491342fe8be3eb68841bbfabaca51d21798ef50389a569fb16c65af61e0f34d7d03f5daa873a56cda2c81432e101385a8695dcf2312505bd1b704bec5d9c3543580c8b5229affab327d6e36f39aa9536262f2bef0e10fe2bfda7a5513865e22d7fd7e87147eeb1cc4bcfafd2073797f66d0edae73b6192b70beae90751f1e39df1f7b05f70e3189697492ff16728828ae51c9f65727e153e3c842227f7501a1f65c3bd109ec0c67ca0a089d628bfe0d77e2c4c863c9d6e55c831459786ac5ea3b18abf9d425d83d6c04a30ec69d5640864f237f29f8c2edf15ee9a70ed029398579da3cd2fe99672ad74645d262c0ade4bdf7e56fe65cad3d693c44ea9e5cc3ff16ccafccf30f685dfdeb406445ee56529b40833987e78c9149e23260af76fe6efc932abb69af42ae4eaea079a7577f2efdfc1e83e7b910a17335cfe1f10020ecf66cec08bc3242b4e192a55bda9686c09c83f710e93a0d60e7dbdccaf6e5192e5d5d4beef621ddb5676fc4bf8df1b268b97a64fcf4e221a0155751d7c977521a5e48bb0d638678acf990a728f0cebf9715a9f63e437b081e0d0cb49098ab8d6166e6ca37063084a10a53196e12509b673f7266bc4e2b5699231cd5202c07b07ac1be0adf0e4d472e6f028b5228edee1b5f92eaceb8dde96e0f6483ddfed704b58f7f9ef133315e8b1f3bab8593b3c945fc940fd74318636e61fd3fc623e353fc6136ad80a13168acc4458523a856bf561b5857c77ccb13dbd5f3aeb0afeefc14047e0c2b98aa999473d5a678a5e7bea90ad6b4c893d4d819b659d4ec10a984e41635879a720f305c170275d2437da2f5a95636e5991e7d83725e0598bb4556e898f0383e035f06a7991365bb6f6326a260ed1602fe780082056d49534ce16430314c904db54bfbe2fb2d9ebdc7cbb3ac91b7f8a14d45e688e90e2521c54bba31160096801571eb290d700e770aa32c4afa25d3160910adb3aab4b2a71b12b3a9516e59da1d2ab681d84247358a4910f9396944e030013dd2f5b47dfeeef8f17fe6b8dde5c9b8107694a565155388ffe00eb0e7a7212da0fa1cd663030bd9c5d7c270aae4b0aa6c82f9d85c1ad493e65948c3f318c000952c0d05ee0f66c6a83f9e31f2507b019ae8cafa49766413460017f2f29b15e1f2dfb48dc5c5803c2f22b88e7dd999251cd32fb549b53b7fcbc412fe2cac33e653a1dfc7c9e0a98e358de263958fe9ea369f86126388bd5d6b09083b5831024c5fc3579a6cf61ee0d801f9d9405bc3adadcddb2b2e41f55e8576e8175407f49dc0089b46220a307eb4a691fe7b8ae22f91715f15b94111900374d535b53f77ed32dbc83b00a2967edc97cd3f0481f0b0521b1afaa1bbaf9", + "password_file": "0282e3d2c6bc5743c81e50367d3fcf5ab7d6a87d72f4556ef4a1e4efd4e94129912ddca3f4ca1ba199025c9f490d35c1f93f250110c430331fe4761df3e94532fdf5b5f91146c69501203faedbe93b04e0c4204f995eb0261ba563fb4e3ec7abf4ffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819bde7998e570a07ee865cc86e462cf7e191ecc759f304fb344db12c5e7a987478629e0c852d7263ff297e169e4cad2ad832dd5c6b3ef497c8338c76f206e500251", + "export_key": "62b868686900df0f1a68ad7d18f04cc14886db48b36593035202efed00e03a0beb49976be242bdcffb088c9d8d6c7f6eee9dc7661ebfcb7153a78332b3c41eea", + "session_key": "9d7770fcb3500221789235c345dd807a7b90eb731cdfbbf7836b5b9c353641a8" +} +"#; +pub static TEST_VECTOR_P256_TRIPLE_DH_KEM_P256: &str = r#" +{ + "client_s_pk": "021761440ac35a297290a591697aadb2f1237b623064235e0efa0046f169d2814c", + "client_s_sk": "ffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819b", + "client_e_pk": "03bf5d24f2e9291ee278198014d7e0002395d892b25ea06d108456feda2fddfc57", + "client_e_sk": "7c1a6aa69ca785116ed21e536b39b0c1d203ee76399db89ac5db2804307b5780", + "server_s_pk": "022e4591a17060ae9bae244be0a4fe32ede19b065d97c64355087fcb96ccb78bdf", + "server_s_sk": "65b7435899ada2632d7086307b1f127e56182bde709be796a5ba40c3f925b5f0", + "server_e_pk": "028d18f4c3e2422fb6ecf074aa9fa70c9eb67b2de53e653a3045a73a0b44c7ce78", + "server_e_sk": "3427ff48f71d8955166b25349d029315d5a82a8289171b766c551c8ceb2c1493", + "dummy_client_pk": "03a57ec39337d292fed1fc054974fe1ffb8aea5eb49294dbd0bf8c68a135e068b2", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "oprf_seed": "519dbe4c91dc74d173a34505ea59daaf0c1426d027e21dd83425cfb1b644991f", + "dummy_masking_key": "83d121ef67bef278e93f0d1026ce1fc6f986681ea7c95b482711cd1540bcaa83", + "masking_nonce": "ad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13", + "envelope_nonce": "c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf", + "client_nonce": "ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e", + "server_nonce": "a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "server_sig_rng": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "client_sig_rng": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "context": "636f6e74657874", + "registration_request": "0389554a672d6d40ec3f70af1d02004d459f3f6b04f821ea4179b630e0c515fc65", + "registration_response": "028b9e1cc6ad67bb2142936f53f9ab0aee35db08f4316bf33ce0b1b46372adc50b022e4591a17060ae9bae244be0a4fe32ede19b065d97c64355087fcb96ccb78bdf", + "registration_upload": "027bc63c9e814f31e486b74317935d809becdee6e5fe5bf53335342880925a0ca84226853714b55d305621d2ff4ec7e8f51b9040d2b97fe6fbf524d2ebdf1f27faffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819b198eaa6745315aaf6d44823cfc32e036564356436eea5d2f98dc68cedaf4f25d", + "credential_request": "0389554a672d6d40ec3f70af1d02004d459f3f6b04f821ea4179b630e0c515fc65ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e029a906dad8aad24f5a026ce40f62dbe916c9ad57723d8b9ad29d39f472ae8026f238bb13a6b8dfb578b9f90765592a8a3bc5277ac76b04c4fa1386729f18705585e79c25174f7a6f740233d484166c615e9c924f0d6200dca1a30e46f3ef1827f36be43d8c6c17145332aac92d20b11776513b241cbb181b0b6ae8e596e84c08f09aa1a5cc07c1d4bb407d157809109f9861ba8c9bf85cb5ea153a862886d9db533bde592eb439bf821cde8689fa96c718f347e84d765ed681878f2679c43ae0fea6fe7914bd3887d69d2600cbc672d957948e479eaf9738b3b7faedb23bdb437c9378e05a60cb95b172d07d07a42bec3e55dcca06d09e811c849b63401b67e2679d9145a2eb344621328552410ad625e0822118ad988354257d2d9301cd77d2769bad0455ca5ca50782b1a65ab8a6b63b98f95b11b01ba6cd56abb09cd00475b6904b3293b3ff637637d538786eb9aeba4707f000226246defcb6af4da5cc3fbb550fa041e307ae1502b5db9145cf9790a201e88774f63885a3f7593b6c591d3671776cc0fa3029e7a1b809c570e1316c5a2a37c2bc05d9f13950aca715bd62e36702e3486b6242349e1fa247dc64cb3ab7dce631af71b2eb3f30017971a38c56f7d938ae38650cde095fdac9fc63aba15373d1d91a781cac9a9eb5728f00f855398c81a9db83b7e30d4c341566421461b2ec81e2794bcfcac7182e552e1e837b9705931601b55f312f3c143b4f32b904ab720738b396b4f28b92514c74c25118a5babc5e4f087ca56cb4783cd56cc3300fc5dd62c4a1e84af3c3424a20442b2e0b91a330fbf823e141415875c79b871050af5a1082b515b986dfd4ac54d006fc76818be8c011594a582086e22475042779d96c91ac11c29160a0ece9cb40a6993b4c059646b709c28b3ccc29c942413fac319556238c5632bcd30a86af6a72eaa3e6e2b3ab34629e5a744335caeeea2b157f89fa3320552b3c8f4dc4cfa540395fb70f48c471a457e11f6116481398596b54ff76d04a3add52121415a50d0538082a1715d066ba0aa351f789ae395658dfb6f4443bd5f69106597b12fb4a58d2151f6e211df8a5beb52158ed5626fc7331c813beb492cbc811fc5c004102c23d52a07dbe62358cc8ff8a5ca63ec1b6e234bd23c9b9099ca32a3b112460e4543890cd3c29e645088590f1260b76784738d7164789c8b5ec26aaba0428a565fb2dc75cab09418f848c889261b5989e8824ce5350267a7ceda0a7912211684abaf324a727eb0bf82c58f4587314cb7a478f781369273e9c9b1aea85b3a93037c56677858cff5ec09b01259c47691a56c9af3286a8e90964385cff7096be3e34b3c474d358cb683815076e8a1269cc1ac6bb4e38bb360ea966aac7dac609f95e46a8b4b3ed4b45eed584e1cb15dbdfaaa298b707522020f4461a0f8370f8bcc40945fee5036aef645319233037abd35235aaf9126a51724ea112c57b37806aa0a919b2eec1343677597ef13a1a6a3936aec305528358b3794423c6ee9f9763c8ca8a5442cffc0877e7a23f8e3a9a429238fa65e504cc92077a8503ace3a0abc8303275749687aa08495d183f7553eb4b72fbe5a5f74a319312c7bc58c90e633b391cab8bda4afc7265d79661ec2f54d488c166eb0467d53abcf5729701422de694408ad8f984750c73bf29292879e7da91cbf2baf147cc0ac8f31f10d7d2eb96bd2", + "credential_response": "028b9e1cc6ad67bb2142936f53f9ab0aee35db08f4316bf33ce0b1b46372adc50bad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd202a890e83d727d32676b6012ce4e7cd1f5eba22223b83b555c07f32e8d27ba428f2b6d597df610ed674dcb39d2865c91e2730f466efa72f6bfffa1bb1ab9937063f08756746d4724355b3e128f1301dc35b829c7c96b1113dbafd29fe898557fc3427ff48f71d8955166b25349d029315d5a82a8289171b766c551c8ceb2c1493033764d541fd90bcf1af004586d31c2b3f896af9f9badf1f4b92c71b78b7da0ff797ae106c918746e3aa2c5960dbb0f1048c8793dbf428fa78d34097847967564fb2bf35ea47341671262e96a73bd7eaa52ee208dc28428e3fef8f62364be33dd9fbd6c65e9e4170882feb9a0ebf48db239cdabc0c247b2827d68f56c3443e30b82ecef30fb33e3ce495bd6b65bdc29d3ca2df061f40b27d27c7c9be391e8fdc4e57ddc10174e2e593d9b9771c88fa7b71f475b57e62da293d3f950e11b80cbf52be703af32b071dbed03b2f432ea71c12dcf93852e6b1ce7841fe6a1e754bf57af4577a05e980269b066a78b49dc279427885e367075765e5abc8a33721b2943fe041461c3692d3da64824a52bb59a03cbf15042be35382de45d6eaf624c874268613d184d08caa3dead079d49098498aa449c13663bb900c437fcb47755f8b2c6069cbbcbc67b37402ced1d86cef06450b17e1701a8907271a77bab655e351ff0358c0a7d38f85f8d33b7f6fdd02976959f039d192f575ea1911df19adb17efbdea3b292cc81ef1bf1b3fb2b53c40cca00a0aea54e70f0f627694fa2dd9dadcd1f3aa5d3c94558e2a73b11dfa9601c3e1a40398daab2c4916447adfa1ee56ceca110c29eb14e343574e9be4dda6f857f59d19f4dbc4f79d11689c1377b5896c2503c42204fdbe5681457e614d78cfa5393d48468491bcbd01f920b88088953c269a68827f3ffd87355494b5268fdfb08065d948006bea90d116fb58a4d272294fa1c93e400f19a9870c16505eb42b5cc67cd1cc80c786b287f441cc0594b763faa1e2b1ad52df54713a095914bde3f8be40e98cc5669d2e050ff23665c305bd9cc95e2cf14145e44d4f7014619468fad1000fef399ed3a0460f5bae59550dc66f02eab4d509338a7b286cf59dd1d391b9fe12252921086854203575239f0738c0b18a20e4bdc61d9eceb7128431523d98d0120577009c4b713b903e40d9a79506403b64e47e25aff596ef1c812abf449364478d3b2be3703991f4f1fefb31c7208aff0c284ae5a235b51c9f227902effde54dc65c31d9d06b532f3e514354c4ce3828e045dd2457d9457379d654edb54def5c8ee275294b2a6be58ac6b82e950864a5be9c990c7314dc6009a13efcf91f4f01e1baf4542e6570cb25e65a18a0d9f163a028686dbb1710d0f7191d4aebf6a3d6a2a810fec156fd28b4d0d4667e74912cbae62b79721d0c1634bb98b6a50287ecab95608716afc75f5e7589010b0fefc7650e759e35faf3624dedde8150f3c730f8803a01ba4aabba2dc9de4b320aaa6a815bc4be1aa41a01ca44fd98adf2fb6e7cb266ae52c93f08b79789b1d0f0703aac04e2bef3953f7fd06cfc5ef1ec17fda547a6d59b66216c899288ca329801e46f4b81c7c74483c076367acc636bc2b204798a107ba03a108856656a09f9158fc661a3468f6e171014f7034f7bbcd446977c314da7a6eb0202d1e0d9cd92ce88a03b84f6fd4109b806f9aab4bdebec429147b81c052d39f4d5037dbd0cbd61709f146bb178fd8372b4dea12c7a3b5f95522e5ca909323ec03f3067e79ea8ed9f464f7707a7444483439eabe27c366e5cfa0fd31c4bce694f89a71208a44", + "credential_finalization": "1d32efd27564880782baf5983607fcf3bc1620a20834d2158e9a60d1e532353c", + "client_registration_state": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f212380389554a672d6d40ec3f70af1d02004d459f3f6b04f821ea4179b630e0c515fc65", + "client_login_state": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f212380389554a672d6d40ec3f70af1d02004d459f3f6b04f821ea4179b630e0c515fc65ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e029a906dad8aad24f5a026ce40f62dbe916c9ad57723d8b9ad29d39f472ae8026f238bb13a6b8dfb578b9f90765592a8a3bc5277ac76b04c4fa1386729f18705585e79c25174f7a6f740233d484166c615e9c924f0d6200dca1a30e46f3ef1827f36be43d8c6c17145332aac92d20b11776513b241cbb181b0b6ae8e596e84c08f09aa1a5cc07c1d4bb407d157809109f9861ba8c9bf85cb5ea153a862886d9db533bde592eb439bf821cde8689fa96c718f347e84d765ed681878f2679c43ae0fea6fe7914bd3887d69d2600cbc672d957948e479eaf9738b3b7faedb23bdb437c9378e05a60cb95b172d07d07a42bec3e55dcca06d09e811c849b63401b67e2679d9145a2eb344621328552410ad625e0822118ad988354257d2d9301cd77d2769bad0455ca5ca50782b1a65ab8a6b63b98f95b11b01ba6cd56abb09cd00475b6904b3293b3ff637637d538786eb9aeba4707f000226246defcb6af4da5cc3fbb550fa041e307ae1502b5db9145cf9790a201e88774f63885a3f7593b6c591d3671776cc0fa3029e7a1b809c570e1316c5a2a37c2bc05d9f13950aca715bd62e36702e3486b6242349e1fa247dc64cb3ab7dce631af71b2eb3f30017971a38c56f7d938ae38650cde095fdac9fc63aba15373d1d91a781cac9a9eb5728f00f855398c81a9db83b7e30d4c341566421461b2ec81e2794bcfcac7182e552e1e837b9705931601b55f312f3c143b4f32b904ab720738b396b4f28b92514c74c25118a5babc5e4f087ca56cb4783cd56cc3300fc5dd62c4a1e84af3c3424a20442b2e0b91a330fbf823e141415875c79b871050af5a1082b515b986dfd4ac54d006fc76818be8c011594a582086e22475042779d96c91ac11c29160a0ece9cb40a6993b4c059646b709c28b3ccc29c942413fac319556238c5632bcd30a86af6a72eaa3e6e2b3ab34629e5a744335caeeea2b157f89fa3320552b3c8f4dc4cfa540395fb70f48c471a457e11f6116481398596b54ff76d04a3add52121415a50d0538082a1715d066ba0aa351f789ae395658dfb6f4443bd5f69106597b12fb4a58d2151f6e211df8a5beb52158ed5626fc7331c813beb492cbc811fc5c004102c23d52a07dbe62358cc8ff8a5ca63ec1b6e234bd23c9b9099ca32a3b112460e4543890cd3c29e645088590f1260b76784738d7164789c8b5ec26aaba0428a565fb2dc75cab09418f848c889261b5989e8824ce5350267a7ceda0a7912211684abaf324a727eb0bf82c58f4587314cb7a478f781369273e9c9b1aea85b3a93037c56677858cff5ec09b01259c47691a56c9af3286a8e90964385cff7096be3e34b3c474d358cb683815076e8a1269cc1ac6bb4e38bb360ea966aac7dac609f95e46a8b4b3ed4b45eed584e1cb15dbdfaaa298b707522020f4461a0f8370f8bcc40945fee5036aef645319233037abd35235aaf9126a51724ea112c57b37806aa0a919b2eec1343677597ef13a1a6a3936aec305528358b3794423c6ee9f9763c8ca8a5442cffc0877e7a23f8e3a9a429238fa65e504cc92077a8503ace3a0abc8303275749687aa08495d183f7553eb4b72fbe5a5f74a319312c7bc58c90e633b391cab8bda4afc7265d79661ec2f54d488c166eb0467d53abcf5729701422de694408ad8f984750c73bf29292879e7da91cbf2baf147cc0ac8f31f10d7d2eb96bd2bf0ab4e51b171cd8492b98cad76f781e16bb630d3f9ad29836f9a0c6e1b55427ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52ee3b2a983a47952f1763d43378f71882951ac98c8b2420833a070b01f38634bdab41bbbaf2cfcce824a9ee521223835796bbbbc9bd443e195396e9348da3b10ca213bbef380bad8a55cc571c6f734eaf5adb3529f76c6057d9b1a7d01956ea810e4240d57c457923b4cc72054a9898d6dd9385cd51da69104461c5ad2a65264c52e368c6d28820a91a640019714d9b5255f0755f2b80475db54d495650684cdbc544fe9083b8ec00e46197c8aca84c3db434ef5780e608a39db1b48c888868cb7824ac666c5445c264af06b63db3728d15784401a9f4053819051c145472923e9a3ace13dc31bc0922a88dca846924c0a4e1501c21a51a078b6ea1c822a982d042aa3239339eb9c2f3bd08e1e63288efc5d3b039af2dc3fecf2b343abc3bdc4bfa0cc0ec87062361457b20014e27b42968959653b4ccce7b631321047f8849208b526560aecc4acad065b3b086bd7962c7e080fd40305e2c339befbb986119e13d5218a307c4f0905b63861f40b3f9db6b4a6ac0a469aa20e804e31182abef1b530f86d89182e8a51486c507bbdfbb395f0a4e81357c1a3c5ed37c8b4aa65c7388803062eed63b19af2b89eb75d3d08b86f2914292bb888d8505d196d283b90bfa56a5cdba7cf41a815e3318f54465bc53596dc5f9874c248c266f20640421570580989713681f4c0057197b79fd51e6d5686e3d2a9d35875458a47d9059fa4ea5c0e2c5b2c0ca1f104909f41279675630ae75111f728f8260683c45bc8e5c6195b69c9d1ccccc3b9ec14aee035aee3c12dbf1cc80dd33cca3a3fe98c49c7061e887a0af5b26a69610245871a942a868c768aaa37c665a50698887f2790583c8a28fcf48d3e299d381731eefb65fee790ddf9c36ce6a61ae60b35c718c530696b3081da31b31d6575629216bf7744f5a82d7ce824df449852d84d395bb29263cef6b4a57678a5dbecc4acd6b58d30290d39ad72b63204fc6fd38cb149a2c2cf78a82a132c81cbcb16525c3a96bc2047c7c058b9144a023e8453033b1e5ec54e5516254f655326915bb60b1fd48829b5d82329a98656f8a22ec252fd7847d14073b24abdee277e2444ad8dd1a601b24ada9abeb86abda9737b5c266b73869baeb5ae28b246a7c11f1604023718cf6ccc87057168c569b130f3a65a4268b678289b404995d320f7ca4d2cb22f0a4cc5c27c709a36acd879074230c515aa98338031ad7ac920eb2cb19a0a8cd31a4f13b925a933ea1900c1f0831a3a2850b82877d742d6144c81c2ac811ac5d060790226bf2409d0a12c9276eab7553c6a0e4124b0951b6600718296126ac21f2d138c29a04ae71204bd4c66b535ac99ac3debe53159212a749b722782bf9df8139a16233d89a044875312b8ade1855fde7b5d0177204921289fbb0c0ac19cbf4ac8d4603fbbb28492c2c125e9012a2cac330c91227a72312184453b0b6680692fa80a4f553be8b8118890c616120c1d583d0fb5731cab2fb1d4abbaa8627e415ca4cb9bd1b4693e4537074c152700a85aa529675ca76eba4978a4230c525800e2785c20992dc75233d198a4aa6f0af67b22dc95c7c5460a563c204533b653876195c176a563e357640b082a63e4b7fb43ac11957b238bb13a6b8dfb578b9f90765592a8a3bc5277ac76b04c4fa1386729f18705585e79c25174f7a6f740233d484166c615e9c924f0d6200dca1a30e46f3ef1827f36be43d8c6c17145332aac92d20b11776513b241cbb181b0b6ae8e596e84c08f09aa1a5cc07c1d4bb407d157809109f9861ba8c9bf85cb5ea153a862886d9db533bde592eb439bf821cde8689fa96c718f347e84d765ed681878f2679c43ae0fea6fe7914bd3887d69d2600cbc672d957948e479eaf9738b3b7faedb23bdb437c9378e05a60cb95b172d07d07a42bec3e55dcca06d09e811c849b63401b67e2679d9145a2eb344621328552410ad625e0822118ad988354257d2d9301cd77d2769bad0455ca5ca50782b1a65ab8a6b63b98f95b11b01ba6cd56abb09cd00475b6904b3293b3ff637637d538786eb9aeba4707f000226246defcb6af4da5cc3fbb550fa041e307ae1502b5db9145cf9790a201e88774f63885a3f7593b6c591d3671776cc0fa3029e7a1b809c570e1316c5a2a37c2bc05d9f13950aca715bd62e36702e3486b6242349e1fa247dc64cb3ab7dce631af71b2eb3f30017971a38c56f7d938ae38650cde095fdac9fc63aba15373d1d91a781cac9a9eb5728f00f855398c81a9db83b7e30d4c341566421461b2ec81e2794bcfcac7182e552e1e837b9705931601b55f312f3c143b4f32b904ab720738b396b4f28b92514c74c25118a5babc5e4f087ca56cb4783cd56cc3300fc5dd62c4a1e84af3c3424a20442b2e0b91a330fbf823e141415875c79b871050af5a1082b515b986dfd4ac54d006fc76818be8c011594a582086e22475042779d96c91ac11c29160a0ece9cb40a6993b4c059646b709c28b3ccc29c942413fac319556238c5632bcd30a86af6a72eaa3e6e2b3ab34629e5a744335caeeea2b157f89fa3320552b3c8f4dc4cfa540395fb70f48c471a457e11f6116481398596b54ff76d04a3add52121415a50d0538082a1715d066ba0aa351f789ae395658dfb6f4443bd5f69106597b12fb4a58d2151f6e211df8a5beb52158ed5626fc7331c813beb492cbc811fc5c004102c23d52a07dbe62358cc8ff8a5ca63ec1b6e234bd23c9b9099ca32a3b112460e4543890cd3c29e645088590f1260b76784738d7164789c8b5ec26aaba0428a565fb2dc75cab09418f848c889261b5989e8824ce5350267a7ceda0a7912211684abaf324a727eb0bf82c58f4587314cb7a478f781369273e9c9b1aea85b3a93037c56677858cff5ec09b01259c47691a56c9af3286a8e90964385cff7096be3e34b3c474d358cb683815076e8a1269cc1ac6bb4e38bb360ea966aac7dac609f95e46a8b4b3ed4b45eed584e1cb15dbdfaaa298b707522020f4461a0f8370f8bcc40945fee5036aef645319233037abd35235aaf9126a51724ea112c57b37806aa0a919b2eec1343677597ef13a1a6a3936aec305528358b3794423c6ee9f9763c8ca8a5442cffc0877e7a23f8e3a9a429238fa65e504cc92077a8503ace3a0abc8303275749687aa08495d183f7553eb4b72fbe5a5f74a319312c7bc58c90e633b391cab8bda4afc7265d79661ec2f54d488c166eb0467d53abcf5729701422de694408ad8f984750c73bf29292879e7da91cbf2baf147cc0ac8f31f10d7d2eb96bd2da2b22bbb9275070fd5a3be2b4c4b3ce48f3ad55cbe0ce3710f8f174e4ba72737c1a6aa69ca785116ed21e536b39b0c1d203ee76399db89ac5db2804307b5780", + "server_login_state": "97e11e27f937bba60443c4061fc56d474e9439422b637b1d5701b950298f94181d32efd27564880782baf5983607fcf3bc1620a20834d2158e9a60d1e532353c238bb13a6b8dfb578b9f90765592a8a3bc5277ac76b04c4fa1386729f18705585e79c25174f7a6f740233d484166c615e9c924f0d6200dca1a30e46f3ef1827f36be43d8c6c17145332aac92d20b11776513b241cbb181b0b6ae8e596e84c08f09aa1a5cc07c1d4bb407d157809109f9861ba8c9bf85cb5ea153a862886d9db533bde592eb439bf821cde8689fa96c718f347e84d765ed681878f2679c43ae0fea6fe7914bd3887d69d2600cbc672d957948e479eaf9738b3b7faedb23bdb437c9378e05a60cb95b172d07d07a42bec3e55dcca06d09e811c849b63401b67e2679d9145a2eb344621328552410ad625e0822118ad988354257d2d9301cd77d2769bad0455ca5ca50782b1a65ab8a6b63b98f95b11b01ba6cd56abb09cd00475b6904b3293b3ff637637d538786eb9aeba4707f000226246defcb6af4da5cc3fbb550fa041e307ae1502b5db9145cf9790a201e88774f63885a3f7593b6c591d3671776cc0fa3029e7a1b809c570e1316c5a2a37c2bc05d9f13950aca715bd62e36702e3486b6242349e1fa247dc64cb3ab7dce631af71b2eb3f30017971a38c56f7d938ae38650cde095fdac9fc63aba15373d1d91a781cac9a9eb5728f00f855398c81a9db83b7e30d4c341566421461b2ec81e2794bcfcac7182e552e1e837b9705931601b55f312f3c143b4f32b904ab720738b396b4f28b92514c74c25118a5babc5e4f087ca56cb4783cd56cc3300fc5dd62c4a1e84af3c3424a20442b2e0b91a330fbf823e141415875c79b871050af5a1082b515b986dfd4ac54d006fc76818be8c011594a582086e22475042779d96c91ac11c29160a0ece9cb40a6993b4c059646b709c28b3ccc29c942413fac319556238c5632bcd30a86af6a72eaa3e6e2b3ab34629e5a744335caeeea2b157f89fa3320552b3c8f4dc4cfa540395fb70f48c471a457e11f6116481398596b54ff76d04a3add52121415a50d0538082a1715d066ba0aa351f789ae395658dfb6f4443bd5f69106597b12fb4a58d2151f6e211df8a5beb52158ed5626fc7331c813beb492cbc811fc5c004102c23d52a07dbe62358cc8ff8a5ca63ec1b6e234bd23c9b9099ca32a3b112460e4543890cd3c29e645088590f1260b76784738d7164789c8b5ec26aaba0428a565fb2dc75cab09418f848c889261b5989e8824ce5350267a7ceda0a7912211684abaf324a727eb0bf82c58f4587314cb7a478f781369273e9c9b1aea85b3a93037c56677858cff5ec09b01259c47691a56c9af3286a8e90964385cff7096be3e34b3c474d358cb683815076e8a1269cc1ac6bb4e38bb360ea966aac7dac609f95e46a8b4b3ed4b45eed584e1cb15dbdfaaa298b707522020f4461a0f8370f8bcc40945fee5036aef645319233037abd35235aaf9126a51724ea112c57b37806aa0a919b2eec1343677597ef13a1a6a3936aec305528358b3794423c6ee9f9763c8ca8a5442cffc0877e7a23f8e3a9a429238fa65e504cc92077a8503ace3a0abc8303275749687aa08495d183f7553eb4b72fbe5a5f74a319312c7bc58c90e633b391cab8bda4afc7265d79661ec2f54d488c166eb0467d53abcf5729701422de694408ad8f984750c73bf29292879e7da91cbf2baf147cc0ac8f31f10d7d2eb96bd2b2bf35ea47341671262e96a73bd7eaa52ee208dc28428e3fef8f62364be33dd9fbd6c65e9e4170882feb9a0ebf48db239cdabc0c247b2827d68f56c3443e30b82ecef30fb33e3ce495bd6b65bdc29d3ca2df061f40b27d27c7c9be391e8fdc4e57ddc10174e2e593d9b9771c88fa7b71f475b57e62da293d3f950e11b80cbf52be703af32b071dbed03b2f432ea71c12dcf93852e6b1ce7841fe6a1e754bf57af4577a05e980269b066a78b49dc279427885e367075765e5abc8a33721b2943fe041461c3692d3da64824a52bb59a03cbf15042be35382de45d6eaf624c874268613d184d08caa3dead079d49098498aa449c13663bb900c437fcb47755f8b2c6069cbbcbc67b37402ced1d86cef06450b17e1701a8907271a77bab655e351ff0358c0a7d38f85f8d33b7f6fdd02976959f039d192f575ea1911df19adb17efbdea3b292cc81ef1bf1b3fb2b53c40cca00a0aea54e70f0f627694fa2dd9dadcd1f3aa5d3c94558e2a73b11dfa9601c3e1a40398daab2c4916447adfa1ee56ceca110c29eb14e343574e9be4dda6f857f59d19f4dbc4f79d11689c1377b5896c2503c42204fdbe5681457e614d78cfa5393d48468491bcbd01f920b88088953c269a68827f3ffd87355494b5268fdfb08065d948006bea90d116fb58a4d272294fa1c93e400f19a9870c16505eb42b5cc67cd1cc80c786b287f441cc0594b763faa1e2b1ad52df54713a095914bde3f8be40e98cc5669d2e050ff23665c305bd9cc95e2cf14145e44d4f7014619468fad1000fef399ed3a0460f5bae59550dc66f02eab4d509338a7b286cf59dd1d391b9fe12252921086854203575239f0738c0b18a20e4bdc61d9eceb7128431523d98d0120577009c4b713b903e40d9a79506403b64e47e25aff596ef1c812abf449364478d3b2be3703991f4f1fefb31c7208aff0c284ae5a235b51c9f227902effde54dc65c31d9d06b532f3e514354c4ce3828e045dd2457d9457379d654edb54def5c8ee275294b2a6be58ac6b82e950864a5be9c990c7314dc6009a13efcf91f4f01e1baf4542e6570cb25e65a18a0d9f163a028686dbb1710d0f7191d4aebf6a3d6a2a810fec156fd28b4d0d4667e74912cbae62b79721d0c1634bb98b6a50287ecab95608716afc75f5e7589010b0fefc7650e759e35faf3624dedde8150f3c730f8803a01ba4aabba2dc9de4b320aaa6a815bc4be1aa41a01ca44fd98adf2fb6e7cb266ae52c93f08b79789b1d0f0703aac04e2bef3953f7fd06cfc5ef1ec17fda547a6d59b66216c899288ca329801e46f4b81c7c74483c076367acc636bc2b204798a107ba03a108856656a09f9158fc661a3468f6e171014f7034f7bbcd446977c314da7a6eb0202d1e0d9cd92ce88a03b84f6fd4109b806f9aab4bdebec429147b81c052d39f4d5037dbd0cbd61709f146bb178fd8372b4dea12c7a3b5f95522e5ca909323ec03f3067e79ea8ed9f464f7707a7444483439eabe27c366e5cfa0fd31c4bce694f89a71208a44", + "password_file": "027bc63c9e814f31e486b74317935d809becdee6e5fe5bf53335342880925a0ca84226853714b55d305621d2ff4ec7e8f51b9040d2b97fe6fbf524d2ebdf1f27faffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819b198eaa6745315aaf6d44823cfc32e036564356436eea5d2f98dc68cedaf4f25d", + "export_key": "c7d3f226be713924ef78170e520fa5866cc915bb70c7e48c91e418e3674ce1ce", + "session_key": "97e11e27f937bba60443c4061fc56d474e9439422b637b1d5701b950298f9418" +} +"#; +pub static TEST_VECTOR_P384_TRIPLE_DH_KEM_P256: &str = r#" +{ + "client_s_pk": "021761440ac35a297290a591697aadb2f1237b623064235e0efa0046f169d2814c", + "client_s_sk": "ffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819b", + "client_e_pk": "03bf5d24f2e9291ee278198014d7e0002395d892b25ea06d108456feda2fddfc57", + "client_e_sk": "7c1a6aa69ca785116ed21e536b39b0c1d203ee76399db89ac5db2804307b5780", + "server_s_pk": "022e4591a17060ae9bae244be0a4fe32ede19b065d97c64355087fcb96ccb78bdf", + "server_s_sk": "65b7435899ada2632d7086307b1f127e56182bde709be796a5ba40c3f925b5f0", + "server_e_pk": "028d18f4c3e2422fb6ecf074aa9fa70c9eb67b2de53e653a3045a73a0b44c7ce78", + "server_e_sk": "3427ff48f71d8955166b25349d029315d5a82a8289171b766c551c8ceb2c1493", + "dummy_client_pk": "03a57ec39337d292fed1fc054974fe1ffb8aea5eb49294dbd0bf8c68a135e068b2", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5bd198aa66d474460a0959f960309cf180", + "oprf_seed": "519dbe4c91dc74d173a34505ea59daaf0c1426d027e21dd83425cfb1b644991f83d121ef67bef278e93f0d1026ce1fc6", + "dummy_masking_key": "f986681ea7c95b482711cd1540bcaa83ad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd", + "masking_nonce": "698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf", + "envelope_nonce": "ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e", + "client_nonce": "a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "server_nonce": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "server_sig_rng": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "client_sig_rng": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "context": "636f6e74657874", + "registration_request": "03cce770cdec2d2fe346969374bb727b93d194c261bf6d6a65bfac528ad052c6ab1f3676bb0836a6ee4fde74644c3ed7b5", + "registration_response": "021191750af08937398160e87d7904d3aff294cde6aef2e604831f11d91d9c7a51dfb040d798351e5634ee25866ba5e8d7022e4591a17060ae9bae244be0a4fe32ede19b065d97c64355087fcb96ccb78bdf", + "registration_upload": "02f5f57a7a1beea624455b52285c24c7130284982c2155eeae08cba8c223073ff54b96697838ade27288f15d808d59a2d801f84422417515512c8e097ffda9836ee243ee9da1217022028a7c0256017e8cffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819b579e8d2c0f68ab63a6d0225c14327c59998aad1064c5ee9c47527ecd2a5c906e338e6902a175f63fbc164d1463e7ebdb", + "credential_request": "03cce770cdec2d2fe346969374bb727b93d194c261bf6d6a65bfac528ad052c6ab1f3676bb0836a6ee4fde74644c3ed7b5a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1029a906dad8aad24f5a026ce40f62dbe916c9ad57723d8b9ad29d39f472ae8026f0df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7", + "credential_response": "021191750af08937398160e87d7904d3aff294cde6aef2e604831f11d91d9c7a51dfb040d798351e5634ee25866ba5e8d7698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13612e12fd160f11a82e9239e6592090257b234e9497ed319f5240894839704b2ed8e9b26103490d89c628fc2ed5c1e31c21a47a0633f6f01f3f5bf5b7159b94f8febb3b1bace905029118806c0aa2928d69ffbccc3cc738205c70ec8cf1ec08aa3395c4fc58e871417baf808d0b340ce4e03427ff48f71d8955166b25349d029315d5a82a8289171b766c551c8ceb2c149302fcb39ecddb8b6163466dd5efe4a5219fd428cd5330bbb99331a2695629971026afd108c46ec80c725f31491f4055564175c9c18d4c4aa4b5a6ea737cb90ae131ca1be8a4f80417d4bcfdb074079d2317641528f8bb161b563b0f4cf4c4dc9bc6a1aefaf682d59d37d0633794e60b400d37de9b5bf393e219171c4553ace32ee6a8f3a975062eae6afef5737163f994d111fc8449ccac2f9aa964c324a81a6c919a5e1a1438e6cec521d4c207a6de49d9659e8655825602a4239bf3a611f4383734bcaa7e2b6a420aef25109150d6471d7f5f4b89e6a2b082c09718d0051dfe50f9d6a5e64ff04542f24a4707e331268250a93eb207b2f64a407965da7d269fb4b8877008e17135e49fd4e3bf18a291fb3f69b8bff4b0fdc85dde65484150d760e3bf4bc558450992e175320dcaeba9389b3ed7ab96cf85475e8b1117a3eaabc5147659f333dbe57f5c46cda6ec9fd0468334398fd3e030ac8cf9a5bca07876a9d26cba648ea7f4097755d2cf7e6bd85076bc8f5b893ef960b74a226d15cbbb3d38edbdd902dc92343c0bb7aefcac6abef2cbb77f249a140ca072cd1caea80c6c0d5547e3c7096177fc1bf859c94ed363414bd13863454800523467690518308e3d96caa2744fcb22188c262b0d69489aa0f6de477a7bf90e595cb15c1b242c3c855cb8884c359a55f10f6f62763fd1a0f3c3d9c39fedf0387bcb10011bedb32f82ad075ad800ffb53f77b5cc777c928e1a3534b3d6c6a9517bfe2e336220dd9a79fcc0ffcb3fc2ed75eac5eb92210c320022ab46de39b7f72d6604a3af264df80e5a7077b8a9067c7787547d3f001592721f7c0e1d0602e41178c937e835ba6d19c9359d8a1ce1eca6bdb40b0be77c1e36da07be1382364f3e4968dfeab9da96eeaa4b4f062492e7bb2efe24852ab805c304eae081d67d24d20b09724cf4cd6e3676bd56d26fcc7290d6b13cc347ed6c92fc6b967212b5a7a22287ce373c0b6a53d88a3cb0b27e5d0fcd2e5296f31ad27ff0a3531feef8b86afc1154bb9187ebb240295cb6cad40a0277cea0213452e88330602b0c435f9f1bcc35b4b02dd96a56fb3c113cfcd4005354e892acd69d45023ed4446678c9d42245c2866321b528e69bf0bec44bd2a4f67ce306d01ad49a3078166460c06f517592acc1712823ef0600a878a01d55aeaf57d1ff422f3a356621dd3e28df017d2c24cc7f1f65c1f56a3267b84c9652eb4c043c9e838f1ff97be7d8c57713bae0299c2e34b6e6522a88a5d4c39e9cc62fdffcc44a810834e04e237dbf9a5f714280da1e2b4b7aeaf9885b73bdf4432d445be949adaa05744244a1ad9ef900d6e54d1b24f2659b99a7ae354d64dbc052ce9ac1b9242bf8920f9fa3e11a026305245641c6a3050ab13bc4795de889661aa57c4aafa95776133e7bf270fdf694bf7f3f187069966dfb21637e6468a8e927baec83a07a5da4e3cab265d882df68c57060c0aacbdddb9b466aad8a255033d07e8c3de43256c2e334d6926cde7d4bb3aca5e58647582bd2da168a6555b546b5cb18308a7e9944e9c1cc5264f0d7484590e04bb7c57f2b635ea5a79f4c6ed89b90b9bf87e18eb53d4743383c5c24709aa4b8dc4423e10c7b0d", + "credential_finalization": "eebb945f5b4ad5255404a4ea8364e3b4c8a63dd4b274867d87f3ee9f1589d94b", + "client_registration_state": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5bd198aa66d474460a0959f960309cf18003cce770cdec2d2fe346969374bb727b93d194c261bf6d6a65bfac528ad052c6ab1f3676bb0836a6ee4fde74644c3ed7b5", + "client_login_state": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5bd198aa66d474460a0959f960309cf18003cce770cdec2d2fe346969374bb727b93d194c261bf6d6a65bfac528ad052c6ab1f3676bb0836a6ee4fde74644c3ed7b5a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1029a906dad8aad24f5a026ce40f62dbe916c9ad57723d8b9ad29d39f472ae8026f0df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7bf0ab4e51b171cd8492b98cad76f781e16bb630d3f9ad29836f9a0c6e1b55427a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1e234b6047353e07437a54b0b4ce1784896bfa3a52fabca52c7222f3414623f9a4fbbf7447c04aaea852adeb839539560148ca4a89a8f8c2b8582ac29f4867a6bc9135aba83027a61189b3581a18184b1802a88463ea8cd41c40f2e344707314ba01c4e320292ce440c8081cb0960832cd03800dbcf333563218084a042b0f05c2f09936847d4bd391962b6860808a1a262bc7af6f11de67b98a7a1104cf6b434b86a23f15ceb019e197790c8f0116a551f04664f72286ff4c437288ab9b5b27366c8ab7d15327b85cba340713c67baab684edeb251fcd70a000c15b90cbf41b36259f37a7f743e47c525e5436e19815d91d452cd4c8e0cc70e069b491176adcf8ac58a349f98d669a1e511aa59bdaf34a0aea104ce6ca27a2347de406ea5a26bf4924fb5a27132113768f40573016867e5161251a09e1513a79b98907864c7b3b14fd350b6d5c6dda6025b4c6a5c7841bf4407fc3c780ff7866ca89715ab18317cb67ba78198312ca3ac7218b44d45b593948a6585d2836927b27418cf38a3cf5091579279c514356b43b0014ad53f20377de1dc32c89031e8ac94cc4c3caf4513edfb6e8a634866e78a86c8c0296275c873858e985dbb505c279145741807f0c419a10345825b7a3394cda9512920f49a8cf37709b0bddc10bd1f96587843b5be795ab8642c34506b285c70788a660fc73f96198ebb16c67ad11316124aa5457c972cc8192553ea450704cb0730ba9814326b083c14a23962ced1bcdbb790985bbfe9f323e4b463a386866b546a24d06d9b7704cba29eaf437016180d2b1b406e2a4eafd87b6b4a5e811734e47bbc2be6cefeda8c9ef09b37ec9df84086e21b352e7293eb508143fbb09f142cea7515e99baa730a12c7b916c21941eddc5a6a8c32312c3a7e2c5dfec934ba33cced8206b54a1785442c11044805699f991153880628d0032acb84bc62ca2e256c4ad44459bdbb0baf5b62ce1c37561c517765947c195656ccce8fb5269981b70f0c79c44c8ebcf5c46a007177e9c62df67531ba8f23253539371466215745181c25c3c74147861190c833ecbecf02d0552cc5265a395f892a191a76c861bdf5c2966c5ba0f5f8c414555ca1c7a95f264cd56ba40a454522885e57e2b7e03428d75ba7edb44c9d183a2a94bc48f6c7bba360ac242475da225c42c1430ac5da6b3a518ba0e378700699a3cef48744589295092623647110e461a8aa39b2919fc1f257e4d49cb69a8f4933109770bf9ab7a1e54c89ed1387aee61cbef99b1348834d2c7d33837767512b4ec3c38dfc89d0129f29f171f9fac246aa7537150f62a60c6f4945360823c95c585c4a09451029baf86e1f25b6189266338c862648a746f4590022bf70d59dbe67b1a9f14362e08181d4183b3a48c867147eb453124488f94173f8e78495302290874b305659084a4cc983ce51372895e054117082914ca9fc4040d6c66ac50164e813314ac4284339031ef27c217c843022260b462e7c92204f72a5b3a48bdee23e080b7a6eab7fc92a3d34a952b209c0a671257c051249137154060c1605034d10c3004a42302715010184de80cca2d2819dbc5caed72888d38ae6eb043b663b3de1c8e6955deb8b900df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7c43e8ded31c09c3034e2803679bcb56541de9c8492c916517cc1a84a7bba3e3cd198aa66d474460a0959f960309cf1807c1a6aa69ca785116ed21e536b39b0c1", + "server_login_state": "31a05a1aa7ca421d6ee9c96e98f2f2fe4ab4f3c607c1eefd1d972f4268d4ce3deebb945f5b4ad5255404a4ea8364e3b4c8a63dd4b274867d87f3ee9f1589d94b0df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7ca1be8a4f80417d4bcfdb074079d2317641528f8bb161b563b0f4cf4c4dc9bc6a1aefaf682d59d37d0633794e60b400d37de9b5bf393e219171c4553ace32ee6a8f3a975062eae6afef5737163f994d111fc8449ccac2f9aa964c324a81a6c919a5e1a1438e6cec521d4c207a6de49d9659e8655825602a4239bf3a611f4383734bcaa7e2b6a420aef25109150d6471d7f5f4b89e6a2b082c09718d0051dfe50f9d6a5e64ff04542f24a4707e331268250a93eb207b2f64a407965da7d269fb4b8877008e17135e49fd4e3bf18a291fb3f69b8bff4b0fdc85dde65484150d760e3bf4bc558450992e175320dcaeba9389b3ed7ab96cf85475e8b1117a3eaabc5147659f333dbe57f5c46cda6ec9fd0468334398fd3e030ac8cf9a5bca07876a9d26cba648ea7f4097755d2cf7e6bd85076bc8f5b893ef960b74a226d15cbbb3d38edbdd902dc92343c0bb7aefcac6abef2cbb77f249a140ca072cd1caea80c6c0d5547e3c7096177fc1bf859c94ed363414bd13863454800523467690518308e3d96caa2744fcb22188c262b0d69489aa0f6de477a7bf90e595cb15c1b242c3c855cb8884c359a55f10f6f62763fd1a0f3c3d9c39fedf0387bcb10011bedb32f82ad075ad800ffb53f77b5cc777c928e1a3534b3d6c6a9517bfe2e336220dd9a79fcc0ffcb3fc2ed75eac5eb92210c320022ab46de39b7f72d6604a3af264df80e5a7077b8a9067c7787547d3f001592721f7c0e1d0602e41178c937e835ba6d19c9359d8a1ce1eca6bdb40b0be77c1e36da07be1382364f3e4968dfeab9da96eeaa4b4f062492e7bb2efe24852ab805c304eae081d67d24d20b09724cf4cd6e3676bd56d26fcc7290d6b13cc347ed6c92fc6b967212b5a7a22287ce373c0b6a53d88a3cb0b27e5d0fcd2e5296f31ad27ff0a3531feef8b86afc1154bb9187ebb240295cb6cad40a0277cea0213452e88330602b0c435f9f1bcc35b4b02dd96a56fb3c113cfcd4005354e892acd69d45023ed4446678c9d42245c2866321b528e69bf0bec44bd2a4f67ce306d01ad49a3078166460c06f517592acc1712823ef0600a878a01d55aeaf57d1ff422f3a356621dd3e28df017d2c24cc7f1f65c1f56a3267b84c9652eb4c043c9e838f1ff97be7d8c57713bae0299c2e34b6e6522a88a5d4c39e9cc62fdffcc44a810834e04e237dbf9a5f714280da1e2b4b7aeaf9885b73bdf4432d445be949adaa05744244a1ad9ef900d6e54d1b24f2659b99a7ae354d64dbc052ce9ac1b9242bf8920f9fa3e11a026305245641c6a3050ab13bc4795de889661aa57c4aafa95776133e7bf270fdf694bf7f3f187069966dfb21637e6468a8e927baec83a07a5da4e3cab265d882df68c57060c0aacbdddb9b466aad8a255033d07e8c3de43256c2e334d6926cde7d4bb3aca5e58647582bd2da168a6555b546b5cb18308a7e9944e9c1cc5264f0d7484590e04bb7c57f2b635ea5a79f4c6ed89b90b9bf87e18eb53d4743383c5c24709aa4b8dc4423e10c7b0d", + "password_file": "02f5f57a7a1beea624455b52285c24c7130284982c2155eeae08cba8c223073ff54b96697838ade27288f15d808d59a2d801f84422417515512c8e097ffda9836ee243ee9da1217022028a7c0256017e8cffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819b579e8d2c0f68ab63a6d0225c14327c59998aad1064c5ee9c47527ecd2a5c906e338e6902a175f63fbc164d1463e7ebdb", + "export_key": "5cbb95dbbf4fefb3fbb763000301a4aad7b85d79fc7396041c16d7c9408c1aae322e49f9e1d643bd82eb8b22e1c45511", + "session_key": "31a05a1aa7ca421d6ee9c96e98f2f2fe4ab4f3c607c1eefd1d972f4268d4ce3d" +} +"#; +pub static TEST_VECTOR_P521_TRIPLE_DH_KEM_P256: &str = r#" +{ + "client_s_pk": "021761440ac35a297290a591697aadb2f1237b623064235e0efa0046f169d2814c", + "client_s_sk": "ffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819b", + "client_e_pk": "03bf5d24f2e9291ee278198014d7e0002395d892b25ea06d108456feda2fddfc57", + "client_e_sk": "7c1a6aa69ca785116ed21e536b39b0c1d203ee76399db89ac5db2804307b5780", + "server_s_pk": "022e4591a17060ae9bae244be0a4fe32ede19b065d97c64355087fcb96ccb78bdf", + "server_s_sk": "65b7435899ada2632d7086307b1f127e56182bde709be796a5ba40c3f925b5f0", + "server_e_pk": "028d18f4c3e2422fb6ecf074aa9fa70c9eb67b2de53e653a3045a73a0b44c7ce78", + "server_e_sk": "3427ff48f71d8955166b25349d029315d5a82a8289171b766c551c8ceb2c1493", + "dummy_client_pk": "03a57ec39337d292fed1fc054974fe1ffb8aea5eb49294dbd0bf8c68a135e068b2", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "0116f8f7d26a7c58739c92a79677b755283627f15538286319a03c6829c8695a77bed7570cd4597aa2fd45925e558acb346cb3f097e42bea46042547f576e07639fc", + "oprf_seed": "519dbe4c91dc74d173a34505ea59daaf0c1426d027e21dd83425cfb1b644991f83d121ef67bef278e93f0d1026ce1fc6f986681ea7c95b482711cd1540bcaa83", + "dummy_masking_key": "ad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13", + "masking_nonce": "c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedfba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e", + "envelope_nonce": "a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "client_nonce": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "server_nonce": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "server_sig_rng": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "client_sig_rng": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5b", + "context": "636f6e74657874", + "registration_request": "0301f864fc13c07b2c9b2e0c8ba30d47a68debd95630d317b3f3eb527ccd8eb10c3a3b142ef7e9b739152ffb4a69173001c9a0ef90631e5760eb1ac38ca5d19a255188", + "registration_response": "02003693a3d92a391990b42a68cd3fafa123901ce943b68ddbede6ca46d5b12db0038e471611f23ae06c397d5e504c4e66df19c09ac75fba23318e6265954264851e4d022e4591a17060ae9bae244be0a4fe32ede19b065d97c64355087fcb96ccb78bdf", + "registration_upload": "020d09a7a97118c72b546637111de6ebebb5efef5f105f100709f607b3388fb00f5cfa314a3ee3ee21b972444761a82c945b3e731f32ecdcd4bea59587acaddf4456877b601131e205b5997243b58ebfb11aaa3a512d9eb402dffd1091059b7240ffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819b418428d884c5e33f1dc9bfd9663a634aba9014b3b25b82077551c8a02d2677f9ba340dfed4df5233e16fa1f7db5a735cdc8de74d462cbf67e44d6dd61706067e", + "credential_request": "0301f864fc13c07b2c9b2e0c8ba30d47a68debd95630d317b3f3eb527ccd8eb10c3a3b142ef7e9b739152ffb4a69173001c9a0ef90631e5760eb1ac38ca5d19a2551882488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff029a906dad8aad24f5a026ce40f62dbe916c9ad57723d8b9ad29d39f472ae8026f0d124317a31e57bc357cc6914d890b588548c91864fd224047a9c7b5f768919035ee8662eee85cb0d8745756a44df788f2a08f2c5058f6d8140b9a7ff2936345b39b543b069b58a927142e1e91289e41c056912965450a8f837a4e05362c0309fcf31469f5c32247147cf02d4a945eec467b24f8145312c26d941b6ed48a49c5b5c4967db2273d15999895d1bad62a8439cabc48b56f17e1ab7cd303d984ac26072326f81978b2ba2aba979436c35c10ad0f470ee46832a4a16b07e06b141584c2a7257a72cb2db0735e56bb4af146248770b546aa102b1da1305e4b28369100bbd90b7b48a37af00259bfca3091c9b7aec782f94474d8c41e2f87bc15f3350ca93b64847fefc8ab9f9a3a886c67658a3becb07548b4c8abb1cab357bdc15615a325c8a1da073264293098995ef0ae444654fa42342ebb8bc704860cb25bfa70aa8800a67242a17d106df20a1b9f763f6c2617f094c48cb025a1151ed94c649bf466590b13cd4b87e688423ac3143a62c2e1b509487c09da48bc79960ccc13133388ba88e75898a7c96e3837465256b3131c48a3827bd594efa6ac58a514c0b4a70d3536dc862c362a22b98316b45779a4497f260407ae6c5b3cf21a4e8042b8826ae3ab61b0e7279fc1a1cfdc8a2d786f16088c61d894a747143899b218aa011d4113c52a9ed6237798da44b1f2771a2067e8eb763d664eced59a563b8c17b7431958a5b235666b2003e5e39f3b108dc86587dfd5b57ed283d8b9a726fc85ab067385e5a23350340e977e82ac2c306a4dfbe95a12b0a959239c28c533e04ac023953817d9a201802ca6e94922146f9a2554d0038575ba7bc6600c472a4a54c248c2fc1d69c0b81caab086041f95a96358e9bcaad144ead50e8f9982375a30a13c5679d2bafb72912a6013d831ac1e4acff27aca46b27949d521042999f3518f79c506ab41a3b803cb3b31a8a0b06b293a45b1285f34906290f01f570394d9a6b0b475b40c579560498855fc175a14bd23ba6972f138ac6a2e4c5711fa4a213c8936c23063430b456ca3b2b05c5b3bc32f13790a02627500039ee67c3feb68c97fb7c4b8827fd8c89de3d18615488f8bac7e365755213268c31804d34c6be672a34d8045605c2c819ca684285c9d08cc49bcbadd0b3eedaac6cc854afd735512a406a7b97cba14a49e2b7ef37c2f6c54a7fef902b066cea1a2488ae66fd87c56eb2351ac3293d2330b861937fbf42225540259d1ab4a722b7a273f2490c97525949cf8c8504c751467ccbb5102d6fb4d89faad6890187c008770c2524ba0645c8c387b2925af5629e0b6ba9cb55c0c6918a90975bcf854c56c9b94e18bae3545a69449be3509c033c436279611c13ba91c10010bc71a040663c23265a8376ca1b251e05d866268761aba32851b7ef2b490449eb12c72fa1190edb4125e6c4978bb7fc65911f8c446d056a14a6283d6f75036128c0227049e807580357af805bd0713032e73016b87840edcc29bdbb20c61687f1653668544b43381517336a9d77213b5b3d11996e8dcb70872089244c73166b8955982f172c00c6129434b0587927e92fc9ddee8c33fc433ec66134b01816446249fd046c3b1c647f97df2a95b19d642c3d4dc01ff4c8c3a9734a8fb62e7c8f216a81a8af239461054fe89e6c3", + "credential_response": "02003693a3d92a391990b42a68cd3fafa123901ce943b68ddbede6ca46d5b12db0038e471611f23ae06c397d5e504c4e66df19c09ac75fba23318e6265954264851e4dc8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf2705faeb33148e8f55d76d29ec573a433ed70d4ee225a2c5a8fa14b1001fbcce2bfcb50479d46b7b2cbd0115073fbff7d28a67bbae123fd6d2f05ec38171321dc5ce8e3a54667aa984262be44b8bd0884db49dbf17bfb099f3c75a3ae758a75d6f674a3df89a99dc6644d106dd294377dd324a233ad9cc11f78ce9e6d56517bde43427ff48f71d8955166b25349d029315d5a82a8289171b766c551c8ceb2c14930218ff26f632e00a66ff4dc579dc0c862ecdeac63551423c3e61bdeddec6970705087076143106e762e41ec666fac82e39fae23c3d9448a77e98ba75f23b16841b914cdc5a2a4e246f796d132148213c6d8f7b564ebdef20809c4d0fb109e4115be464f24d0f342dfea83b38f01444760066227cbf83bc02d2587c0a94f1d9bee3eba3e09d08252f7cd9911470b7dd2dcd6c9bbe32fcb4628a1777617f628c33539eb7365a93c9dd0d37d1f5dea544518a978af987144f5c69fc12087f44519106dc1c0f2433c2bcfbcd5eddc7aa87a01c67438c7d1505f5ca2b84bfbbda6705bfec8d9152d58b3b15be3ece14925746469439feeb88adf52883b006a67f29adb32b2dd89b77f390a2d32a488c740df692f5c5f4d199eeee1410096ed01d514ad9d38a311765b38a776ba55817ddf4230073f0165e04e7560a57c2a61f590e1cc94dfd213f39c23e35a0393e439a68d6a0fc274afb67b8f0ca26f94a45b264c824d83816c7242800f26615f1aef081d94062b7609c4078ba5b4fc5e32cc48fe84fd1de285723199bfb16a852cf1b67e20fbb64b8e0aa3fd425b8f7ed93c7b304dd7b8884ce3fd3783386a740a0c4331f941eaa32d4536f6d7cb91e9279e24c2a66189dc144d88396efe63ad3d96c1f5bf3422de40096ab8eb8e7b466ceb14356c9aca487718357bf740fa0f614c1062a6bf9e41c019dbdcc7f877eb8514be2a1cc93ea381e0262235e47d412e17cc28b248106b9f7c86a52842298868802b295f3f0581852fb99746cda24541f0c4b64a19a35aa6452b68a5d040188ba457b274f5fa20325fbe0f60ff5eb10e30eb845ab4d84aa5a2454afe6e6f9edb285e4aee9cf6301c1f36ef553b61e360b22f9c3aa597fae5ee7d6959684bef0e085ac2703f50610ef01e1ba0fadcc3118c8f1d663fb3f7e4269df8b3c36a4232dc0471dafc05993e1dd6c1176250c9849d7b237fdb7e241113ed88964c50524449f673ed29b534109b3ca4dc1be201383a787d9c6334a5447fde4d35d880094678c8e371eadf92f14e4612f1939443e29bcc777d6dc92b392ba2860f877d195201ff3ea338a3204bc70566350202b0629df31a4a4b7ba9286b4494fe01e84f0ed9e94515114dd5664e6657152094f6fc08ac90c1d586a3dc76654c311347755fb952d668adc4e4b9dbff21defc2140638fb62a19d83850b7d40e976667be16b1030c0926a362d4437ec630193b1ce010b4c07c470710b22ec1c3452944179e9a01065966aab29627e9731abc97b1b6a1874dbf89adb2cb6b5517fb047997d63f9482ee4f35ac2537fedca355ebbba7b36a4a5be1ebe3eb68f10212501545f1f339205562b15eeafc551a6616423a9903245baeeb1326fe9d6b89421210267d99ffc6f23ed5ef28c772bd177017b92f1af6d0c4db7d58e22571e05d9dd5a69136dcfc4689d0aa2bb6a1210bb0ae8806c79d892758ae0372f3ad5f1a016fef3f67f030cbe8a1a28473035c428f13dac7b4d044bd9b9c54e0fd88be9b60867e183f718913b6e9d657dc41e0c47ffd8856e143d2451fb139865790d9d2bf7db493b58f2b0ac94c1a1d2456909d3526ce10870bc63298ac5b908d2043618a9841e06d953c76d4f", + "credential_finalization": "492d70f023925acce68a36411ffddace57a6a9b3932fcc2a78fc4f0de51fef50", + "client_registration_state": "0116f8f7d26a7c58739c92a79677b755283627f15538286319a03c6829c8695a77bed7570cd4597aa2fd45925e558acb346cb3f097e42bea46042547f576e07639fc0301f864fc13c07b2c9b2e0c8ba30d47a68debd95630d317b3f3eb527ccd8eb10c3a3b142ef7e9b739152ffb4a69173001c9a0ef90631e5760eb1ac38ca5d19a255188", + "client_login_state": "0116f8f7d26a7c58739c92a79677b755283627f15538286319a03c6829c8695a77bed7570cd4597aa2fd45925e558acb346cb3f097e42bea46042547f576e07639fc0301f864fc13c07b2c9b2e0c8ba30d47a68debd95630d317b3f3eb527ccd8eb10c3a3b142ef7e9b739152ffb4a69173001c9a0ef90631e5760eb1ac38ca5d19a2551882488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff029a906dad8aad24f5a026ce40f62dbe916c9ad57723d8b9ad29d39f472ae8026f0d124317a31e57bc357cc6914d890b588548c91864fd224047a9c7b5f768919035ee8662eee85cb0d8745756a44df788f2a08f2c5058f6d8140b9a7ff2936345b39b543b069b58a927142e1e91289e41c056912965450a8f837a4e05362c0309fcf31469f5c32247147cf02d4a945eec467b24f8145312c26d941b6ed48a49c5b5c4967db2273d15999895d1bad62a8439cabc48b56f17e1ab7cd303d984ac26072326f81978b2ba2aba979436c35c10ad0f470ee46832a4a16b07e06b141584c2a7257a72cb2db0735e56bb4af146248770b546aa102b1da1305e4b28369100bbd90b7b48a37af00259bfca3091c9b7aec782f94474d8c41e2f87bc15f3350ca93b64847fefc8ab9f9a3a886c67658a3becb07548b4c8abb1cab357bdc15615a325c8a1da073264293098995ef0ae444654fa42342ebb8bc704860cb25bfa70aa8800a67242a17d106df20a1b9f763f6c2617f094c48cb025a1151ed94c649bf466590b13cd4b87e688423ac3143a62c2e1b509487c09da48bc79960ccc13133388ba88e75898a7c96e3837465256b3131c48a3827bd594efa6ac58a514c0b4a70d3536dc862c362a22b98316b45779a4497f260407ae6c5b3cf21a4e8042b8826ae3ab61b0e7279fc1a1cfdc8a2d786f16088c61d894a747143899b218aa011d4113c52a9ed6237798da44b1f2771a2067e8eb763d664eced59a563b8c17b7431958a5b235666b2003e5e39f3b108dc86587dfd5b57ed283d8b9a726fc85ab067385e5a23350340e977e82ac2c306a4dfbe95a12b0a959239c28c533e04ac023953817d9a201802ca6e94922146f9a2554d0038575ba7bc6600c472a4a54c248c2fc1d69c0b81caab086041f95a96358e9bcaad144ead50e8f9982375a30a13c5679d2bafb72912a6013d831ac1e4acff27aca46b27949d521042999f3518f79c506ab41a3b803cb3b31a8a0b06b293a45b1285f34906290f01f570394d9a6b0b475b40c579560498855fc175a14bd23ba6972f138ac6a2e4c5711fa4a213c8936c23063430b456ca3b2b05c5b3bc32f13790a02627500039ee67c3feb68c97fb7c4b8827fd8c89de3d18615488f8bac7e365755213268c31804d34c6be672a34d8045605c2c819ca684285c9d08cc49bcbadd0b3eedaac6cc854afd735512a406a7b97cba14a49e2b7ef37c2f6c54a7fef902b066cea1a2488ae66fd87c56eb2351ac3293d2330b861937fbf42225540259d1ab4a722b7a273f2490c97525949cf8c8504c751467ccbb5102d6fb4d89faad6890187c008770c2524ba0645c8c387b2925af5629e0b6ba9cb55c0c6918a90975bcf854c56c9b94e18bae3545a69449be3509c033c436279611c13ba91c10010bc71a040663c23265a8376ca1b251e05d866268761aba32851b7ef2b490449eb12c72fa1190edb4125e6c4978bb7fc65911f8c446d056a14a6283d6f75036128c0227049e807580357af805bd0713032e73016b87840edcc29bdbb20c61687f1653668544b43381517336a9d77213b5b3d11996e8dcb70872089244c73166b8955982f172c00c6129434b0587927e92fc9ddee8c33fc433ec66134b01816446249fd046c3b1c647f97df2a95b19d642c3d4dc01ff4c8c3a9734a8fb62e7c8f216a81a8af239461054fe89e6c3bf0ab4e51b171cd8492b98cad76f781e16bb630d3f9ad29836f9a0c6e1b554272488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff67a85f7348281ee627c11419c80c218a028d4a1a5fceba07fceaa7fcab748bc504ffe39e6f77084c00b0c606aa23a2b31de083e0e105b39a2d605248a2973ab5694f7c4833b8bc319bf71b8aba425de972b75706a1a52078ec12e38c60b9405b3d853bc1994b19bbb69bf7481fecc07b7a697a7513724c3c60f19a8e500a5672ce92f01b07315907d05890d69c85b2288355baad3a34edab60b1356e9ba47d34110fa9667b869a68c85a0e8b785169f2c9dc17c858a07c62304368e21517435939165f45162424591489c01881284858e4067bfaa146998521a22bcf120abcb3b3f2615c135358058cbbfc7a634fe06d062c137579ba3739592f018cd3c99ef0cb92d1566bc00b23883148119450fe0a9cb75525583199bb01125b584a192a4ea93a1f7c48be5f32cb2c1957de98237bc68804a27d06989388a92facc94b1239245cdcce57bb34da622381c358e7c01428b94297775fae2c8374931975025e714899a3a2ad3c614a9bd28ac74aa1e6d84bf0006a7dd322c260b9fd823967314baf27b14ee6af7e3450caf481d07238a91a1f1334c4130414e820b2df586418d603cac8782dbcb6f1d7c6c41b3b0e7b9c0386376a86c6a2f93bf096690f58c67194130266bf9c24786df97f3e169aca9a4bb56016b3283606d3a2ff5983b6c7533a388effd37b9c113242a55cccb11bc618c16ca64a55422e56bbca8f767c8e63b321b97228636a77a4202c364e8eec82af9569512723a3953918423e9162b89b234f808a107127b9d5da55a022402cb957b62c0d1f147971b311a3817913207cf6c4c8ae5c4f6d316505ec1d8714055535abfa41014a554049f540dce357b3027dd827af763bc0b3778bbd939514145b34d30f864500d716360cb34188b0889c77736c34a964701e09b6876d9740d6504e0bf4127513392f6cab9de98ed4e05f8e48356b90790eda565ebcadf32218a2f6aa64e56cc4d230fda2ab6b294211691e68ac2bea0b5a0e830d10875bcae4511fa25b21c5162ab68b9219c9df174ce20cce707276cb24c58ef90b8ea03fc661396fa9b3fcc688f2b83c289112ad93cb1a671e4e846769b3b28ff8267436324efc07d8b831782076831630a9a199bce50a26792972d9a77fd04f4df9c349fa4d6ab510e0237ec455408c01cce58560e7e931f986705795a1fcb91750cc2a9fe79ff77cb74d0c5998509705319978ac7a0fc7c2ad28793d622afea5b740c6a2f901d0576734f9934427977b85cc9924a487b28cc0c1cba64a6436f9150b7f872cda1a79e6576d42a655ae2a74a3898e6a999b185200cbc7566773c6028b2c61e47b5ee53a40f99297a9a2c2e7b71db935b1e0a76e57a2ab07416db633f2272c7f5c7b59164c17c424693585b45611104100f1e577dae178e45794e8204cecbaa3caa84d72520db9928e12b622c7243ca65271dcf326cad46ca5e48cc386b0c989b19fb9a2ed01a15dd6b391f6b629b4b788c86741a61b137c637a71cc1740addbe55ea78b1e2f3c55980c36074846a1ac089a2189e9fc23cc138ce672c70e514f8a46ca69244f5fd10c01877ec19b54a262c3f57500f2769134c7a3ff6511fc242aca8688c6747e0f5b6c5b133420e9010d124317a31e57bc357cc6914d890b588548c91864fd224047a9c7b5f768919035ee8662eee85cb0d8745756a44df788f2a08f2c5058f6d8140b9a7ff2936345b39b543b069b58a927142e1e91289e41c056912965450a8f837a4e05362c0309fcf31469f5c32247147cf02d4a945eec467b24f8145312c26d941b6ed48a49c5b5c4967db2273d15999895d1bad62a8439cabc48b56f17e1ab7cd303d984ac26072326f81978b2ba2aba979436c35c10ad0f470ee46832a4a16b07e06b141584c2a7257a72cb2db0735e56bb4af146248770b546aa102b1da1305e4b28369100bbd90b7b48a37af00259bfca3091c9b7aec782f94474d8c41e2f87bc15f3350ca93b64847fefc8ab9f9a3a886c67658a3becb07548b4c8abb1cab357bdc15615a325c8a1da073264293098995ef0ae444654fa42342ebb8bc704860cb25bfa70aa8800a67242a17d106df20a1b9f763f6c2617f094c48cb025a1151ed94c649bf466590b13cd4b87e688423ac3143a62c2e1b509487c09da48bc79960ccc13133388ba88e75898a7c96e3837465256b3131c48a3827bd594efa6ac58a514c0b4a70d3536dc862c362a22b98316b45779a4497f260407ae6c5b3cf21a4e8042b8826ae3ab61b0e7279fc1a1cfdc8a2d786f16088c61d894a747143899b218aa011d4113c52a9ed6237798da44b1f2771a2067e8eb763d664eced59a563b8c17b7431958a5b235666b2003e5e39f3b108dc86587dfd5b57ed283d8b9a726fc85ab067385e5a23350340e977e82ac2c306a4dfbe95a12b0a959239c28c533e04ac023953817d9a201802ca6e94922146f9a2554d0038575ba7bc6600c472a4a54c248c2fc1d69c0b81caab086041f95a96358e9bcaad144ead50e8f9982375a30a13c5679d2bafb72912a6013d831ac1e4acff27aca46b27949d521042999f3518f79c506ab41a3b803cb3b31a8a0b06b293a45b1285f34906290f01f570394d9a6b0b475b40c579560498855fc175a14bd23ba6972f138ac6a2e4c5711fa4a213c8936c23063430b456ca3b2b05c5b3bc32f13790a02627500039ee67c3feb68c97fb7c4b8827fd8c89de3d18615488f8bac7e365755213268c31804d34c6be672a34d8045605c2c819ca684285c9d08cc49bcbadd0b3eedaac6cc854afd735512a406a7b97cba14a49e2b7ef37c2f6c54a7fef902b066cea1a2488ae66fd87c56eb2351ac3293d2330b861937fbf42225540259d1ab4a722b7a273f2490c97525949cf8c8504c751467ccbb5102d6fb4d89faad6890187c008770c2524ba0645c8c387b2925af5629e0b6ba9cb55c0c6918a90975bcf854c56c9b94e18bae3545a69449be3509c033c436279611c13ba91c10010bc71a040663c23265a8376ca1b251e05d866268761aba32851b7ef2b490449eb12c72fa1190edb4125e6c4978bb7fc65911f8c446d056a14a6283d6f75036128c0227049e807580357af805bd0713032e73016b87840edcc29bdbb20c61687f1653668544b43381517336a9d77213b5b3d11996e8dcb70872089244c73166b8955982f172c00c6129434b0587927e92fc9ddee8c33fc433ec66134b01816446249fd046c3b1c647f97df2a95b19d642c3d4dc01ff4c8c3a9734a8fb62e7c8f216a81a8af239461054fe89e6c327303bbdb9f2f6d263a15cd1f85cc8ddf1f7aa098c4db7408cf6355fdd2af70877bed7570cd4597aa2fd45925e558acb346cb3f097e42bea46042547f576e076", + "server_login_state": "08d3a1bd61e851947c6eb92158f5ae724dfb3380296a7e982d43b56358b8b32c492d70f023925acce68a36411ffddace57a6a9b3932fcc2a78fc4f0de51fef500d124317a31e57bc357cc6914d890b588548c91864fd224047a9c7b5f768919035ee8662eee85cb0d8745756a44df788f2a08f2c5058f6d8140b9a7ff2936345b39b543b069b58a927142e1e91289e41c056912965450a8f837a4e05362c0309fcf31469f5c32247147cf02d4a945eec467b24f8145312c26d941b6ed48a49c5b5c4967db2273d15999895d1bad62a8439cabc48b56f17e1ab7cd303d984ac26072326f81978b2ba2aba979436c35c10ad0f470ee46832a4a16b07e06b141584c2a7257a72cb2db0735e56bb4af146248770b546aa102b1da1305e4b28369100bbd90b7b48a37af00259bfca3091c9b7aec782f94474d8c41e2f87bc15f3350ca93b64847fefc8ab9f9a3a886c67658a3becb07548b4c8abb1cab357bdc15615a325c8a1da073264293098995ef0ae444654fa42342ebb8bc704860cb25bfa70aa8800a67242a17d106df20a1b9f763f6c2617f094c48cb025a1151ed94c649bf466590b13cd4b87e688423ac3143a62c2e1b509487c09da48bc79960ccc13133388ba88e75898a7c96e3837465256b3131c48a3827bd594efa6ac58a514c0b4a70d3536dc862c362a22b98316b45779a4497f260407ae6c5b3cf21a4e8042b8826ae3ab61b0e7279fc1a1cfdc8a2d786f16088c61d894a747143899b218aa011d4113c52a9ed6237798da44b1f2771a2067e8eb763d664eced59a563b8c17b7431958a5b235666b2003e5e39f3b108dc86587dfd5b57ed283d8b9a726fc85ab067385e5a23350340e977e82ac2c306a4dfbe95a12b0a959239c28c533e04ac023953817d9a201802ca6e94922146f9a2554d0038575ba7bc6600c472a4a54c248c2fc1d69c0b81caab086041f95a96358e9bcaad144ead50e8f9982375a30a13c5679d2bafb72912a6013d831ac1e4acff27aca46b27949d521042999f3518f79c506ab41a3b803cb3b31a8a0b06b293a45b1285f34906290f01f570394d9a6b0b475b40c579560498855fc175a14bd23ba6972f138ac6a2e4c5711fa4a213c8936c23063430b456ca3b2b05c5b3bc32f13790a02627500039ee67c3feb68c97fb7c4b8827fd8c89de3d18615488f8bac7e365755213268c31804d34c6be672a34d8045605c2c819ca684285c9d08cc49bcbadd0b3eedaac6cc854afd735512a406a7b97cba14a49e2b7ef37c2f6c54a7fef902b066cea1a2488ae66fd87c56eb2351ac3293d2330b861937fbf42225540259d1ab4a722b7a273f2490c97525949cf8c8504c751467ccbb5102d6fb4d89faad6890187c008770c2524ba0645c8c387b2925af5629e0b6ba9cb55c0c6918a90975bcf854c56c9b94e18bae3545a69449be3509c033c436279611c13ba91c10010bc71a040663c23265a8376ca1b251e05d866268761aba32851b7ef2b490449eb12c72fa1190edb4125e6c4978bb7fc65911f8c446d056a14a6283d6f75036128c0227049e807580357af805bd0713032e73016b87840edcc29bdbb20c61687f1653668544b43381517336a9d77213b5b3d11996e8dcb70872089244c73166b8955982f172c00c6129434b0587927e92fc9ddee8c33fc433ec66134b01816446249fd046c3b1c647f97df2a95b19d642c3d4dc01ff4c8c3a9734a8fb62e7c8f216a81a8af239461054fe89e6c3914cdc5a2a4e246f796d132148213c6d8f7b564ebdef20809c4d0fb109e4115be464f24d0f342dfea83b38f01444760066227cbf83bc02d2587c0a94f1d9bee3eba3e09d08252f7cd9911470b7dd2dcd6c9bbe32fcb4628a1777617f628c33539eb7365a93c9dd0d37d1f5dea544518a978af987144f5c69fc12087f44519106dc1c0f2433c2bcfbcd5eddc7aa87a01c67438c7d1505f5ca2b84bfbbda6705bfec8d9152d58b3b15be3ece14925746469439feeb88adf52883b006a67f29adb32b2dd89b77f390a2d32a488c740df692f5c5f4d199eeee1410096ed01d514ad9d38a311765b38a776ba55817ddf4230073f0165e04e7560a57c2a61f590e1cc94dfd213f39c23e35a0393e439a68d6a0fc274afb67b8f0ca26f94a45b264c824d83816c7242800f26615f1aef081d94062b7609c4078ba5b4fc5e32cc48fe84fd1de285723199bfb16a852cf1b67e20fbb64b8e0aa3fd425b8f7ed93c7b304dd7b8884ce3fd3783386a740a0c4331f941eaa32d4536f6d7cb91e9279e24c2a66189dc144d88396efe63ad3d96c1f5bf3422de40096ab8eb8e7b466ceb14356c9aca487718357bf740fa0f614c1062a6bf9e41c019dbdcc7f877eb8514be2a1cc93ea381e0262235e47d412e17cc28b248106b9f7c86a52842298868802b295f3f0581852fb99746cda24541f0c4b64a19a35aa6452b68a5d040188ba457b274f5fa20325fbe0f60ff5eb10e30eb845ab4d84aa5a2454afe6e6f9edb285e4aee9cf6301c1f36ef553b61e360b22f9c3aa597fae5ee7d6959684bef0e085ac2703f50610ef01e1ba0fadcc3118c8f1d663fb3f7e4269df8b3c36a4232dc0471dafc05993e1dd6c1176250c9849d7b237fdb7e241113ed88964c50524449f673ed29b534109b3ca4dc1be201383a787d9c6334a5447fde4d35d880094678c8e371eadf92f14e4612f1939443e29bcc777d6dc92b392ba2860f877d195201ff3ea338a3204bc70566350202b0629df31a4a4b7ba9286b4494fe01e84f0ed9e94515114dd5664e6657152094f6fc08ac90c1d586a3dc76654c311347755fb952d668adc4e4b9dbff21defc2140638fb62a19d83850b7d40e976667be16b1030c0926a362d4437ec630193b1ce010b4c07c470710b22ec1c3452944179e9a01065966aab29627e9731abc97b1b6a1874dbf89adb2cb6b5517fb047997d63f9482ee4f35ac2537fedca355ebbba7b36a4a5be1ebe3eb68f10212501545f1f339205562b15eeafc551a6616423a9903245baeeb1326fe9d6b89421210267d99ffc6f23ed5ef28c772bd177017b92f1af6d0c4db7d58e22571e05d9dd5a69136dcfc4689d0aa2bb6a1210bb0ae8806c79d892758ae0372f3ad5f1a016fef3f67f030cbe8a1a28473035c428f13dac7b4d044bd9b9c54e0fd88be9b60867e183f718913b6e9d657dc41e0c47ffd8856e143d2451fb139865790d9d2bf7db493b58f2b0ac94c1a1d2456909d3526ce10870bc63298ac5b908d2043618a9841e06d953c76d4f", + "password_file": "020d09a7a97118c72b546637111de6ebebb5efef5f105f100709f607b3388fb00f5cfa314a3ee3ee21b972444761a82c945b3e731f32ecdcd4bea59587acaddf4456877b601131e205b5997243b58ebfb11aaa3a512d9eb402dffd1091059b7240ffb7f0c880bad59b07df5f5b021fecf3b01df793e3fe4261c020b2cbfe1a819b418428d884c5e33f1dc9bfd9663a634aba9014b3b25b82077551c8a02d2677f9ba340dfed4df5233e16fa1f7db5a735cdc8de74d462cbf67e44d6dd61706067e", + "export_key": "23721dde2ce158c7ec9d0d5dee5c01ead394e1a87fce5624f57ba392a1f29e22c20af8aa11e125946185f1ed1f2111ca7afa2b6b2ab2b64371d2cbcbcd0b50b5", + "session_key": "08d3a1bd61e851947c6eb92158f5ae724dfb3380296a7e982d43b56358b8b32c" +} +"#; +#[cfg(feature = "ristretto255")] +pub static TEST_VECTOR_RISTRETTO255_TRIPLE_DH_KEM_P384: &str = r#" +{ + "client_s_pk": "031c1bad5951cf0487c6ca5c107e0df205e4eefed0a057eb4f14fed0cff3a9f726023dabc398d4661a8973a2f9722affba", + "client_s_sk": "293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd278b5c3274987a1242ba496ee3dc989f8a1", + "client_e_pk": "03fd3751c53cf2abea2cd75d7176ebfb27a5d5e59534c82eff5aa28a93b27e8d888e69e9c55f017651a9d1f71d25ec0308", + "client_e_sk": "883ac3fe2bb01246f4c0b2b29f4c21f9518ca1bcfc7a11264107e941c0e3558767eda7090cfa1824ae66e65a0425fedb", + "server_s_pk": "020cd5cd54c93602a83258504bdab51d3e7b344245e7e7f54c59463960262db29d8c4a9330ef9c0f9ffd935af15e4aee45", + "server_s_sk": "434fd03b8290b8ad9086304c96e8ff2f4b8756948ac9c8afe9e38891f3e104b96ad8aba1e5a9a5ce0a1b1f78eeb4326d", + "server_e_pk": "023707c59cfaeebe33c7b02841078094fc2e9728ccdd6ce9b745b6090c14f1a5032836ef929e8e841e18ae3715e28a1c16", + "server_e_sk": "d9ca86ea208a70a74d092f85b79e8568991cd8cd72287003dd3799a4f7ab08def51d8da9275dfa6163c352edb126751f", + "dummy_client_pk": "021f69e910163a2f98b252f02ad17058534eeccfeb5563e636f61e80036edcf039aa6edf64a100ba5189a0664f88e51aa6", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "c12548336f38ccba2063e37ed5b94d5efdd41cce2022f18a6752585fdf399008", + "oprf_seed": "98e3f3e430864ade512adbabf1f1a0dd698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13c8d9932a0a851f23ac477302256daa97", + "dummy_masking_key": "45a55e695ae3047db1d1c901ae30bedfba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52ea4a4f65a42b4181ffb2b1f907b68b1fd", + "masking_nonce": "fa3effbdef9513c06e6f215a5cd525d12488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ffd24b9eafc0924c0f66523516c74f6042", + "envelope_nonce": "5295a857618fdd85d35f62a1b482e182b3128efa21e976075260a2c2da2dd98e", + "client_nonce": "0cf8505dcb05f4e44c87ca6858f2123816a8c3715be95c6635e1035848bb190f", + "server_nonce": "27736bcbe9b69fbde386e0271708da5bd198aa66d474460a0959f960309cf180", + "server_sig_rng": "439288da0e67df1ac388da3984197d4d98e2b63c2e9e05f5a976c845cafe467b2655bffaefa6559cb38615edae864dda", + "client_sig_rng": "63cd88f119e401930b6ab5b35396841bd3fbb2355b374a218ee6517bd59419472ac6070b06ebb5aca042ba996884e949", + "context": "636f6e74657874", + "registration_request": "5e8c2dfd57dec02ec21897991e9423d742565fb3941554c7545d5b7ef37c2055", + "registration_response": "60760696588b1277fc8c14d54297d2c4c498f3235634039d625bc33a0c79ed20020cd5cd54c93602a83258504bdab51d3e7b344245e7e7f54c59463960262db29d8c4a9330ef9c0f9ffd935af15e4aee45", + "registration_upload": "03120a4b85adfaa33526ef5a5222d64d6db64ac4119ce5da429f72c99fdc5f4cdc623eebe6e39ee40433958cdd7feb3aefffcdd635a6eaacc46dacc4fe9f2a6962d1ced006c22d0e3fa4aec0d45ecaaed2932d286b6d5d8f65afb3e2eb6e94b2d633b0b5057be38b54e5b3fd3141d68705293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd278778ff98f44b2548ee7cf64edd7efa06dddee610607ec3f8f9c6c31f8eac46d383babcbcfaf1803fd3a5c0050540fb39741aac5269d733332e9fb4e855216486b", + "credential_request": "5e8c2dfd57dec02ec21897991e9423d742565fb3941554c7545d5b7ef37c20550cf8505dcb05f4e44c87ca6858f2123816a8c3715be95c6635e1035848bb190f03066d532e77b6252310cdd18b46f9553619f868029bbd1a4cd6cafb709e09a8089b3a77fdc740bcc1aac74e3eced9015afbf18cf86400ff0442cccc8fa2243b114c2d54b5ac512a0a2fc0117e78b373dbce933a2304346b82a7267ef929b73370970043a1fc023b2817b38a1282d822225bcad6c1a10a620753222e8c5a989424b1fdc90e0dd63611180b5f8a70102788f1158b7ff0066b33cbd88a0bfcea348c97b880a553dc6a7f4bd719a2e06f1baa92b6b21c29443872b35597e43e9210105e34abb48bc121864b9ba3247e6ba54d71515236b1948788b1fbbb0e2c582df32bb904b995853cdce8101c91c0cdacb5a5fb2920830443c4b79481665a4052d4fa313f6830cdea8185e20ffd0b923f5c11de330efde00afdfb5730a98a2a051452b33ae0066901da2a748a5dfb999d1edc3bc0389d3e9b8e80db3ed954c19ec67cedf67a59b6292d5a040d9a018c263ab1f275fbba68286ac57aec83b0a127015a9ee8e7101d01ad732a0e008b682a479400a10f474a02ace35fb5f60bf2887541867776bb2b967b021d63a47f7ac137607ebd14b18306b5f18160134b19dd600318e6c45f95170ea94825a336d81a3c1440cb10e21abef14e83887e7e4143b58682f6d1bda54a4ad105334bc546489241748537f8da97a8332a522b492f67017ab00f7e09409e133b2cf933d5e801bd828b5eb667fd8b2a84b4930aa9c121a61b89744b1e897ce9d946b3e3cc80a6a934a7b65689534d3b60e52587990c4812f47d06b2433602b110b611748482dde11cd4ca4bad868aeb761c90b99b9ed623d3b3abdedbc073075ac815682b6b75de3a2fbb08c3f60285b39ac86587c051e12fb7957476d3181d074347a81b593317acd505764ba94b08740af027eda2617c8a00c7812f62359eb0683f3ca37e0d92a3965b2c33134348697fe998034b26850e505594537720b9756654a50e3177e76a951ae9cfed44074255913f934b67ebc832032b5ed522285288d73a9c03fab2db5907d54b76edc2a32b42cb0263c2ed05a23ab5a507ca47206b764dc41416826e230703f3a9cb0144158544c8d178b1793cc02c60b3aaec4767c3ad37954cc6907faf64c6739701cb933d4acbadbd792ebef29f30d5757cbc4b1f7bada7ab315cb8213d7091d3e681afe7970c256803348d182856c8777f7432064c05c5012c1cf68299c8d6bc44425896b99662819cb0814fa1729847f9856c621d37a2ad16225cc8760ee7fc2d2bc4914ba71666d0105adbaf8c8a5efee05141b2ca8bec85672815e1f42e02d36474f1ba29bb5485a156bbe403da14bf29d0a63c1213421c3112d59c411bbf5d3a86bfeb1e988c178ba6a0f879962c7a0cac5c1d9dd205a7f5456b0b1e637b5fc196a3f9115a5ce9995d348b69f950614aab32fb632d52546a8344c316bf5101b9a575530f262c8380aaecfb7112dac4088337fe69493d2803519583ba706b9ffb91f605a7eeb768fcd9b57bd005de4abafc22cae11aa73341bf2f383a2582b863922d14183f5092652c769e9599cbb626155e58c5cdb2a8f942b935d02bcb462dd55553b53295b92577689a458776c2d7e714f54255f5a06c4ab03b7fbb24042c804f1c6a00511ccfe0843984bb990a08eff37489889570042fd9fc9e8536a255e4a3c2b81f770b4d2e0198376baa32316379e637a1602cbc513da305fc24f03f2233dcf510e65a98fc2318bfca1914f0700ab48e7ecfb1", + "credential_response": "60760696588b1277fc8c14d54297d2c4c498f3235634039d625bc33a0c79ed20fa3effbdef9513c06e6f215a5cd525d12488cae978cfafe2d8f8804d73dc87094fc7368b167f3bb104cc9567641e6e6cfe6ca5c919eb1659836e810bc1b8440de1083435bd9acce1c1ff57ca7a866f18ecd2c51c88de2ddce3e8508f82da88dda547cb2b594e1745422c472439ba9f1db0f89b0e173eaee03e2a24f08cc21fe71deb51f6b4aa778363dd83d5156212ea816f12d6c0282907106df63aeba5bae1745c2055bf2a86c17cd74c8aa466253bba991cd8cd72287003dd3799a4f7ab08def51d8da9275dfa6163c352edb126751f02f8d1676dd6f21575a6a23e8dcec8f55bc71db42aea079e92dceef59748b528947e77bc6b028ead251223174b2770c1aa53a172e3e8d4a4183bb79ef4e4d64c1903aaf2035e0f0a8c7e6acd24abeea4cea3f0d1cc0f94a578d35d36090f80ccc7c8f8bfec40deea39f7f4138e2ba495b131fa71a93d34dc4e7199bed4749793a7116e8e5a128dc54e238783fa3a38b8fe4b372b77b30c6fd668d6f43f78f2a00c97bc6b593dd63106a7bfbd9ce241bcb1b4da994a500b3f22cecb6f4897bbb540e3d63ea56fc2af65bc7b5fdbe6a1beda1b2d98791f0ce9c37bc6140c511cfa9e6700519fbd38c8cdb99a838ad13323a463303bb843b3fad3777ba60a2ce4401a3bafeab958e3490a82b80c927a98815e3864674fcf61d24c2b2a5a0ca6d55f8207af6b4a08ab04b7292b3b92698f14e5d9e40e7ceacc7c2295be2a7bae859249055b640627fddd8cbba9aed914245129bb9e6cb2e4bff80033b3bfec8ea9199a457f17df2cc83200ee54b12cabb2fc6071cb8f98c322f55c3fd3e2263acab036876c06ffad4f55764f7a6d20e18e6e4f53bb687d840c0b5185e3162df28c6366c78ea9c8890bf16b9b5362c52362bf0852df960c627332534d0e5a180f0099a0b48112307969b47d11e6ffaa16810f7463ddd7679f88f94b11d9f72d7e9535a9030d33490829185ac15fee22fe0f0b3d868330b1ebd9529f1cbd4ca2b660231e8ad09a1c3eb4b4a6bc8d0588c5383a101c4b0718ef0fbe57e349413b74854361dff67d928155aa0200f8aeb7ae7660eaeb79cecbc4f634bf2046c5ef81c1a30f7043a6b31dede1ac3e68af9f8be99be3dcbdb12079e84ac933f4912902dd5a04a39dfa4bd6f21cae710a34acb771ccc48f2c678c8686a8ce273a14a83a5767c1403f4bed4e57e3d0712e119664130e464bcb3fad454e8aeec5b94571b0e3052e76f6491b86bd6619cf2f0ed488a284513041683678720ad95bbb97f3814090385d5348ff56d283275015aef893044b9eec8421c9e6d3710b33669412d27cc4ee7cf33a03a9f85762fb4a35415a6ea84a9dcc1692e6a08cd03123ffdbc12dc143786b6b3fd93fd3bda5a095b85a6d7be08a7ea7f605169afccea46af2ac0401487397cd6087047d2504e40cc04cddc06d5e53f6bc1152a27a3e1bd4e020816b4409af90f2cce420edd7cc185579754492a5a124aa9050b8416ec3f402b82d4db4c4f8e592b23fb962fc6e58344cd7baeb0142fe8a3f980e6c7ebac48cf2f39a5253883b81798159243c35e1e2d5d5da3e1af0dfaa556d92458691dbb00b3365b9b2f7f24d92c420570d2a2e1494ab0bc118727aa746bd192bd498b9c8dd86b036cf9141217040055527fd3bdcfd6bab5271692abc54b7aa61bb460333c96952e69241e24cd544e9c0a253434a1a74a0b01e5a5ed21aa03ec411af6ed7c0671bc2c49ab143e6c49da598316c9874913a29f993017941b1f2aed513caf6811affb6bc5578965a2ed46548a66a6743a73bac1d70494ec68b19a72e90fc567e2ea1c0f610e51deb50ffe65959c680017b77b59781b127f3c26f9479c715427ee7af680423816720ca58d5746b2d6fc5aa70004380d8b2a343a039a445eb712f68ba87c3d23f0ff7efcc3da2b4a947f0a8c738cd152d9a07b59d894d1c0f4b5cfe4406", + "credential_finalization": "74b116185a669768eb270635243507a37968b70ff4d47fd271d099accfbce8f5f4bc250f013476bb9ea8e7f4c84b09e0", + "client_registration_state": "c12548336f38ccba2063e37ed5b94d5efdd41cce2022f18a6752585fdf3990085e8c2dfd57dec02ec21897991e9423d742565fb3941554c7545d5b7ef37c2055", + "client_login_state": "c12548336f38ccba2063e37ed5b94d5efdd41cce2022f18a6752585fdf3990085e8c2dfd57dec02ec21897991e9423d742565fb3941554c7545d5b7ef37c20550cf8505dcb05f4e44c87ca6858f2123816a8c3715be95c6635e1035848bb190f03066d532e77b6252310cdd18b46f9553619f868029bbd1a4cd6cafb709e09a8089b3a77fdc740bcc1aac74e3eced9015afbf18cf86400ff0442cccc8fa2243b114c2d54b5ac512a0a2fc0117e78b373dbce933a2304346b82a7267ef929b73370970043a1fc023b2817b38a1282d822225bcad6c1a10a620753222e8c5a989424b1fdc90e0dd63611180b5f8a70102788f1158b7ff0066b33cbd88a0bfcea348c97b880a553dc6a7f4bd719a2e06f1baa92b6b21c29443872b35597e43e9210105e34abb48bc121864b9ba3247e6ba54d71515236b1948788b1fbbb0e2c582df32bb904b995853cdce8101c91c0cdacb5a5fb2920830443c4b79481665a4052d4fa313f6830cdea8185e20ffd0b923f5c11de330efde00afdfb5730a98a2a051452b33ae0066901da2a748a5dfb999d1edc3bc0389d3e9b8e80db3ed954c19ec67cedf67a59b6292d5a040d9a018c263ab1f275fbba68286ac57aec83b0a127015a9ee8e7101d01ad732a0e008b682a479400a10f474a02ace35fb5f60bf2887541867776bb2b967b021d63a47f7ac137607ebd14b18306b5f18160134b19dd600318e6c45f95170ea94825a336d81a3c1440cb10e21abef14e83887e7e4143b58682f6d1bda54a4ad105334bc546489241748537f8da97a8332a522b492f67017ab00f7e09409e133b2cf933d5e801bd828b5eb667fd8b2a84b4930aa9c121a61b89744b1e897ce9d946b3e3cc80a6a934a7b65689534d3b60e52587990c4812f47d06b2433602b110b611748482dde11cd4ca4bad868aeb761c90b99b9ed623d3b3abdedbc073075ac815682b6b75de3a2fbb08c3f60285b39ac86587c051e12fb7957476d3181d074347a81b593317acd505764ba94b08740af027eda2617c8a00c7812f62359eb0683f3ca37e0d92a3965b2c33134348697fe998034b26850e505594537720b9756654a50e3177e76a951ae9cfed44074255913f934b67ebc832032b5ed522285288d73a9c03fab2db5907d54b76edc2a32b42cb0263c2ed05a23ab5a507ca47206b764dc41416826e230703f3a9cb0144158544c8d178b1793cc02c60b3aaec4767c3ad37954cc6907faf64c6739701cb933d4acbadbd792ebef29f30d5757cbc4b1f7bada7ab315cb8213d7091d3e681afe7970c256803348d182856c8777f7432064c05c5012c1cf68299c8d6bc44425896b99662819cb0814fa1729847f9856c621d37a2ad16225cc8760ee7fc2d2bc4914ba71666d0105adbaf8c8a5efee05141b2ca8bec85672815e1f42e02d36474f1ba29bb5485a156bbe403da14bf29d0a63c1213421c3112d59c411bbf5d3a86bfeb1e988c178ba6a0f879962c7a0cac5c1d9dd205a7f5456b0b1e637b5fc196a3f9115a5ce9995d348b69f950614aab32fb632d52546a8344c316bf5101b9a575530f262c8380aaecfb7112dac4088337fe69493d2803519583ba706b9ffb91f605a7eeb768fcd9b57bd005de4abafc22cae11aa73341bf2f383a2582b863922d14183f5092652c769e9599cbb626155e58c5cdb2a8f942b935d02bcb462dd55553b53295b92577689a458776c2d7e714f54255f5a06c4ab03b7fbb24042c804f1c6a00511ccfe0843984bb990a08eff37489889570042fd9fc9e8536a255e4a3c2b81f770b4d2e0198376baa32316379e637a1602cbc513da305fc24f03f2233dcf510e65a98fc2318bfca1914f0700ab48e7ecfb13295971b0126407b430b7d632b959262aabaf82644b88da7a16c53b7f6f5a479f53e10cf7c2652777fb639c7d0ccb2c00cf8505dcb05f4e44c87ca6858f2123816a8c3715be95c6635e1035848bb190ffa3b70bfd704806bb5c33460a57229577ac326f9c731e05093e9812c64c4f9a5443f3a35133c4a16967e4e268cc7ab5b584704f25088ac739158c79ef2d30588cc28086b320e54612dd52f57a9cb4ab37cef63a38e54ce3681873ab6c26e46a0146a675b001374ea0e85d370d78037b8ca167d599ed558337b1bba0782c037fc877b653d2ff02a53bc780434101e7a0e9b6baa8dbac716d9a0590c38844310ee4200eaab642f7492f55b97ff13455044c9f27a858965b166fa5c457554ada2b709258ea4cb913d35c9b12452a90ac97ab860c6db39fb1268f0a1a716ac81fcf96686f21631212d6cda6c48aa964f341aa60689ec11c435588fde5a79950c669a5c2235595023419842a51d2868a63c017346b1127a9a8d20929dd7f734d230b9a1392f9529355da2863301956500b48fc74427c66d86caa9f7254a5b469df8b598e3cc2ca997b4c0fb24bd44907c915a07a540966b44539723e7063d2c37963c78520aa40abeea5d05189f5b321794c757a8d2ab6e3045b4763fc857cf05483cb0b028641b38a218a5bae9844fa6b4ffb424923ca429cc6d20d0602962b1c0eb075f33b2aea81f42f6a28204596d16ce98e88a0871b3231945c991a10d1c18e700c597e993b6bc4363a6c6381a1517f11fbafb1df4225ea4b85ff3c867f505b3b64bb9f591c64ec043d6417c4105ac4b95260a2a7440a2ac91c32c7262069fd6c1aa8b1d26677a1fc444fda48946c388c3aa39cbf88c8b280985ec1513b3685204a9767933f7909b18d121321569df5b170c89779a746d03b467b8937833e1954f4536a2367dfce5a54565980b056a9c7c9e4ae978618c7fa387b87d9329e139071a96ab769b47f545a0c2ba9c3719768c554de79809f7e18c91184299548d9e0cbbfb1ca9b29b6a7862a9dfd7204ec98ad58a8b91e7916ce25623421365a09a1b7c03f1c64140c79b97b581dea3431345890bec38c182a785c1753dd5cbe0630632a39274b375604a114cc99e0b878ceff74783245a267a811f6ca5ed6670f0164897c0ca4f390ca748ac438375f268339ab7b2ff070ae06590bc206417442c6125c81ac876d4719d4b411e63b04670477b3f3181d0859851d6cf5ffb1842d86d05ac5b1df42600cb4f3791bd64a71655f7c90613867453286bb228e0865e977177789483cb4b438983441a56b180811939580824471f3600968c5c1abcb368bce18e01f5402528ae69f4116be0575825921bc938428674a482c2dab1c147e5767d3136699c60d16258de976658a4a5b9e43ed1ac496f159a209882c41aab088b269dbcb16afb871e4462998b63bd1b8b1974b8ea430cc6865b0b0b2fcf369381020044917f0b240b438612ac279acfb28f23db6a266446a3682668095b5f71a9266044d237b03195c4763aa92e51b3c60569cdb67c5aa864df65aea2b008a30931793628cba3959f117fa68325a2e45333e44ca5659295c2bb6026c8e6c098424061a6040e73a17e42b42a3b0c51bba3127cc37b23b34699ab6fdfc17b5342c8b9e36517668d18f7795d969ed91c7e27f4978da0098bcb5018207e167b60d74851c605a4700ca73322c564392bd2d9b8e65945bd58a6c1874dacc605f2f5cbfbf18cf86400ff0442cccc8fa2243b114c2d54b5ac512a0a2fc0117e78b373dbce933a2304346b82a7267ef929b73370970043a1fc023b2817b38a1282d822225bcad6c1a10a620753222e8c5a989424b1fdc90e0dd63611180b5f8a70102788f1158b7ff0066b33cbd88a0bfcea348c97b880a553dc6a7f4bd719a2e06f1baa92b6b21c29443872b35597e43e9210105e34abb48bc121864b9ba3247e6ba54d71515236b1948788b1fbbb0e2c582df32bb904b995853cdce8101c91c0cdacb5a5fb2920830443c4b79481665a4052d4fa313f6830cdea8185e20ffd0b923f5c11de330efde00afdfb5730a98a2a051452b33ae0066901da2a748a5dfb999d1edc3bc0389d3e9b8e80db3ed954c19ec67cedf67a59b6292d5a040d9a018c263ab1f275fbba68286ac57aec83b0a127015a9ee8e7101d01ad732a0e008b682a479400a10f474a02ace35fb5f60bf2887541867776bb2b967b021d63a47f7ac137607ebd14b18306b5f18160134b19dd600318e6c45f95170ea94825a336d81a3c1440cb10e21abef14e83887e7e4143b58682f6d1bda54a4ad105334bc546489241748537f8da97a8332a522b492f67017ab00f7e09409e133b2cf933d5e801bd828b5eb667fd8b2a84b4930aa9c121a61b89744b1e897ce9d946b3e3cc80a6a934a7b65689534d3b60e52587990c4812f47d06b2433602b110b611748482dde11cd4ca4bad868aeb761c90b99b9ed623d3b3abdedbc073075ac815682b6b75de3a2fbb08c3f60285b39ac86587c051e12fb7957476d3181d074347a81b593317acd505764ba94b08740af027eda2617c8a00c7812f62359eb0683f3ca37e0d92a3965b2c33134348697fe998034b26850e505594537720b9756654a50e3177e76a951ae9cfed44074255913f934b67ebc832032b5ed522285288d73a9c03fab2db5907d54b76edc2a32b42cb0263c2ed05a23ab5a507ca47206b764dc41416826e230703f3a9cb0144158544c8d178b1793cc02c60b3aaec4767c3ad37954cc6907faf64c6739701cb933d4acbadbd792ebef29f30d5757cbc4b1f7bada7ab315cb8213d7091d3e681afe7970c256803348d182856c8777f7432064c05c5012c1cf68299c8d6bc44425896b99662819cb0814fa1729847f9856c621d37a2ad16225cc8760ee7fc2d2bc4914ba71666d0105adbaf8c8a5efee05141b2ca8bec85672815e1f42e02d36474f1ba29bb5485a156bbe403da14bf29d0a63c1213421c3112d59c411bbf5d3a86bfeb1e988c178ba6a0f879962c7a0cac5c1d9dd205a7f5456b0b1e637b5fc196a3f9115a5ce9995d348b69f950614aab32fb632d52546a8344c316bf5101b9a575530f262c8380aaecfb7112dac4088337fe69493d2803519583ba706b9ffb91f605a7eeb768fcd9b57bd005de4abafc22cae11aa73341bf2f383a2582b863922d14183f5092652c769e9599cbb626155e58c5cdb2a8f942b935d02bcb462dd55553b53295b92577689a458776c2d7e714f54255f5a06c4ab03b7fbb24042c804f1c6a00511ccfe0843984bb990a08eff37489889570042fd9fc9e8536a255e4a3c2b81f770b4d2e0198376baa32316379e637a1602cbc513da305fc24f03f2233dcf510e65a98fc2318bfca1914f0700ab48e7ecfb18b3964cf2a549545f4fcacf928f5bcf9b421c74ddfec3d0f33873a6a79c16aa3883ac3fe2bb01246f4c0b2b29f4c21f9518ca1bcfc7a11264107e941c0e35587", + "server_login_state": "75e6c959a85f0fa046d1876b384800e5b962a1238273ebce19b06fa02ac2794f46c15308006ba4756b99e249e019f5e374b116185a669768eb270635243507a37968b70ff4d47fd271d099accfbce8f5f4bc250f013476bb9ea8e7f4c84b09e0fbf18cf86400ff0442cccc8fa2243b114c2d54b5ac512a0a2fc0117e78b373dbce933a2304346b82a7267ef929b73370970043a1fc023b2817b38a1282d822225bcad6c1a10a620753222e8c5a989424b1fdc90e0dd63611180b5f8a70102788f1158b7ff0066b33cbd88a0bfcea348c97b880a553dc6a7f4bd719a2e06f1baa92b6b21c29443872b35597e43e9210105e34abb48bc121864b9ba3247e6ba54d71515236b1948788b1fbbb0e2c582df32bb904b995853cdce8101c91c0cdacb5a5fb2920830443c4b79481665a4052d4fa313f6830cdea8185e20ffd0b923f5c11de330efde00afdfb5730a98a2a051452b33ae0066901da2a748a5dfb999d1edc3bc0389d3e9b8e80db3ed954c19ec67cedf67a59b6292d5a040d9a018c263ab1f275fbba68286ac57aec83b0a127015a9ee8e7101d01ad732a0e008b682a479400a10f474a02ace35fb5f60bf2887541867776bb2b967b021d63a47f7ac137607ebd14b18306b5f18160134b19dd600318e6c45f95170ea94825a336d81a3c1440cb10e21abef14e83887e7e4143b58682f6d1bda54a4ad105334bc546489241748537f8da97a8332a522b492f67017ab00f7e09409e133b2cf933d5e801bd828b5eb667fd8b2a84b4930aa9c121a61b89744b1e897ce9d946b3e3cc80a6a934a7b65689534d3b60e52587990c4812f47d06b2433602b110b611748482dde11cd4ca4bad868aeb761c90b99b9ed623d3b3abdedbc073075ac815682b6b75de3a2fbb08c3f60285b39ac86587c051e12fb7957476d3181d074347a81b593317acd505764ba94b08740af027eda2617c8a00c7812f62359eb0683f3ca37e0d92a3965b2c33134348697fe998034b26850e505594537720b9756654a50e3177e76a951ae9cfed44074255913f934b67ebc832032b5ed522285288d73a9c03fab2db5907d54b76edc2a32b42cb0263c2ed05a23ab5a507ca47206b764dc41416826e230703f3a9cb0144158544c8d178b1793cc02c60b3aaec4767c3ad37954cc6907faf64c6739701cb933d4acbadbd792ebef29f30d5757cbc4b1f7bada7ab315cb8213d7091d3e681afe7970c256803348d182856c8777f7432064c05c5012c1cf68299c8d6bc44425896b99662819cb0814fa1729847f9856c621d37a2ad16225cc8760ee7fc2d2bc4914ba71666d0105adbaf8c8a5efee05141b2ca8bec85672815e1f42e02d36474f1ba29bb5485a156bbe403da14bf29d0a63c1213421c3112d59c411bbf5d3a86bfeb1e988c178ba6a0f879962c7a0cac5c1d9dd205a7f5456b0b1e637b5fc196a3f9115a5ce9995d348b69f950614aab32fb632d52546a8344c316bf5101b9a575530f262c8380aaecfb7112dac4088337fe69493d2803519583ba706b9ffb91f605a7eeb768fcd9b57bd005de4abafc22cae11aa73341bf2f383a2582b863922d14183f5092652c769e9599cbb626155e58c5cdb2a8f942b935d02bcb462dd55553b53295b92577689a458776c2d7e714f54255f5a06c4ab03b7fbb24042c804f1c6a00511ccfe0843984bb990a08eff37489889570042fd9fc9e8536a255e4a3c2b81f770b4d2e0198376baa32316379e637a1602cbc513da305fc24f03f2233dcf510e65a98fc2318bfca1914f0700ab48e7ecfb1c8f8bfec40deea39f7f4138e2ba495b131fa71a93d34dc4e7199bed4749793a7116e8e5a128dc54e238783fa3a38b8fe4b372b77b30c6fd668d6f43f78f2a00c97bc6b593dd63106a7bfbd9ce241bcb1b4da994a500b3f22cecb6f4897bbb540e3d63ea56fc2af65bc7b5fdbe6a1beda1b2d98791f0ce9c37bc6140c511cfa9e6700519fbd38c8cdb99a838ad13323a463303bb843b3fad3777ba60a2ce4401a3bafeab958e3490a82b80c927a98815e3864674fcf61d24c2b2a5a0ca6d55f8207af6b4a08ab04b7292b3b92698f14e5d9e40e7ceacc7c2295be2a7bae859249055b640627fddd8cbba9aed914245129bb9e6cb2e4bff80033b3bfec8ea9199a457f17df2cc83200ee54b12cabb2fc6071cb8f98c322f55c3fd3e2263acab036876c06ffad4f55764f7a6d20e18e6e4f53bb687d840c0b5185e3162df28c6366c78ea9c8890bf16b9b5362c52362bf0852df960c627332534d0e5a180f0099a0b48112307969b47d11e6ffaa16810f7463ddd7679f88f94b11d9f72d7e9535a9030d33490829185ac15fee22fe0f0b3d868330b1ebd9529f1cbd4ca2b660231e8ad09a1c3eb4b4a6bc8d0588c5383a101c4b0718ef0fbe57e349413b74854361dff67d928155aa0200f8aeb7ae7660eaeb79cecbc4f634bf2046c5ef81c1a30f7043a6b31dede1ac3e68af9f8be99be3dcbdb12079e84ac933f4912902dd5a04a39dfa4bd6f21cae710a34acb771ccc48f2c678c8686a8ce273a14a83a5767c1403f4bed4e57e3d0712e119664130e464bcb3fad454e8aeec5b94571b0e3052e76f6491b86bd6619cf2f0ed488a284513041683678720ad95bbb97f3814090385d5348ff56d283275015aef893044b9eec8421c9e6d3710b33669412d27cc4ee7cf33a03a9f85762fb4a35415a6ea84a9dcc1692e6a08cd03123ffdbc12dc143786b6b3fd93fd3bda5a095b85a6d7be08a7ea7f605169afccea46af2ac0401487397cd6087047d2504e40cc04cddc06d5e53f6bc1152a27a3e1bd4e020816b4409af90f2cce420edd7cc185579754492a5a124aa9050b8416ec3f402b82d4db4c4f8e592b23fb962fc6e58344cd7baeb0142fe8a3f980e6c7ebac48cf2f39a5253883b81798159243c35e1e2d5d5da3e1af0dfaa556d92458691dbb00b3365b9b2f7f24d92c420570d2a2e1494ab0bc118727aa746bd192bd498b9c8dd86b036cf9141217040055527fd3bdcfd6bab5271692abc54b7aa61bb460333c96952e69241e24cd544e9c0a253434a1a74a0b01e5a5ed21aa03ec411af6ed7c0671bc2c49ab143e6c49da598316c9874913a29f993017941b1f2aed513caf6811affb6bc5578965a2ed46548a66a6743a73bac1d70494ec68b19a72e90fc567e2ea1c0f610e51deb50ffe65959c680017b77b59781b127f3c26f9479c715427ee7af680423816720ca58d5746b2d6fc5aa70004380d8b2a343a039a445eb712f68ba87c3d23f0ff7efcc3da2b4a947f0a8c738cd152d9a07b59d894d1c0f4b5cfe4406", + "password_file": "03120a4b85adfaa33526ef5a5222d64d6db64ac4119ce5da429f72c99fdc5f4cdc623eebe6e39ee40433958cdd7feb3aefffcdd635a6eaacc46dacc4fe9f2a6962d1ced006c22d0e3fa4aec0d45ecaaed2932d286b6d5d8f65afb3e2eb6e94b2d633b0b5057be38b54e5b3fd3141d68705293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd278778ff98f44b2548ee7cf64edd7efa06dddee610607ec3f8f9c6c31f8eac46d383babcbcfaf1803fd3a5c0050540fb39741aac5269d733332e9fb4e855216486b", + "export_key": "e6174df58df692ee055a8cff5f5440859b68c3e8ed328d1b8c8546d90333384116857857fb798e09b1c51c3b61e18b5494ba2cede15f4bd61438cc2804a2149b", + "session_key": "75e6c959a85f0fa046d1876b384800e5b962a1238273ebce19b06fa02ac2794f46c15308006ba4756b99e249e019f5e3" +} +"#; +pub static TEST_VECTOR_P256_TRIPLE_DH_KEM_P384: &str = r#" +{ + "client_s_pk": "031c1bad5951cf0487c6ca5c107e0df205e4eefed0a057eb4f14fed0cff3a9f726023dabc398d4661a8973a2f9722affba", + "client_s_sk": "293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd278b5c3274987a1242ba496ee3dc989f8a1", + "client_e_pk": "03fd3751c53cf2abea2cd75d7176ebfb27a5d5e59534c82eff5aa28a93b27e8d888e69e9c55f017651a9d1f71d25ec0308", + "client_e_sk": "883ac3fe2bb01246f4c0b2b29f4c21f9518ca1bcfc7a11264107e941c0e3558767eda7090cfa1824ae66e65a0425fedb", + "server_s_pk": "020cd5cd54c93602a83258504bdab51d3e7b344245e7e7f54c59463960262db29d8c4a9330ef9c0f9ffd935af15e4aee45", + "server_s_sk": "434fd03b8290b8ad9086304c96e8ff2f4b8756948ac9c8afe9e38891f3e104b96ad8aba1e5a9a5ce0a1b1f78eeb4326d", + "server_e_pk": "023707c59cfaeebe33c7b02841078094fc2e9728ccdd6ce9b745b6090c14f1a5032836ef929e8e841e18ae3715e28a1c16", + "server_e_sk": "d9ca86ea208a70a74d092f85b79e8568991cd8cd72287003dd3799a4f7ab08def51d8da9275dfa6163c352edb126751f", + "dummy_client_pk": "021f69e910163a2f98b252f02ad17058534eeccfeb5563e636f61e80036edcf039aa6edf64a100ba5189a0664f88e51aa6", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "2655bffaefa6559cb38615edae864dda63cd88f119e401930b6ab5b35396841b", + "oprf_seed": "98e3f3e430864ade512adbabf1f1a0dd698eafefb9d5bd214410889440978446", + "dummy_masking_key": "9f9f0d8056cd77b7e68bbfdadf240d13c8d9932a0a851f23ac477302256daa97", + "masking_nonce": "45a55e695ae3047db1d1c901ae30bedfba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52ea4a4f65a42b4181ffb2b1f907b68b1fd", + "envelope_nonce": "fa3effbdef9513c06e6f215a5cd525d12488cae978cfafe2d8f8804d73dc8709", + "client_nonce": "15ef1a944a13fdc17c61eb72825d91ffd24b9eafc0924c0f66523516c74f6042", + "server_nonce": "5295a857618fdd85d35f62a1b482e182b3128efa21e976075260a2c2da2dd98e", + "server_sig_rng": "0cf8505dcb05f4e44c87ca6858f2123816a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5b", + "client_sig_rng": "d198aa66d474460a0959f960309cf180439288da0e67df1ac388da3984197d4d98e2b63c2e9e05f5a976c845cafe467b", + "context": "636f6e74657874", + "registration_request": "02bd1c78f544d3fa1c214b5dc343c6ca75bff3b87b431845ff7cb983aaee5abafe", + "registration_response": "024c08aa42b3ce01b48b630ef8d63325e6bb4afe8e9c4770055e474a5c9d88af2c020cd5cd54c93602a83258504bdab51d3e7b344245e7e7f54c59463960262db29d8c4a9330ef9c0f9ffd935af15e4aee45", + "registration_upload": "037ffbe4bed3ce6b96a788e00103b74713998d0ddbc7d31ab0c14fe35106b9e9cc8fc69fa13439b5e610b37b16caae2daa27ea69e4932c91110c69f612a04d709e964c543c9bb55888a1ac74e7cb719f13293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd278a5defa57a741f1877a176fc506f74774766c99d74e595ef7a33141bb11776d16", + "credential_request": "02bd1c78f544d3fa1c214b5dc343c6ca75bff3b87b431845ff7cb983aaee5abafe15ef1a944a13fdc17c61eb72825d91ffd24b9eafc0924c0f66523516c74f604203066d532e77b6252310cdd18b46f9553619f868029bbd1a4cd6cafb709e09a8089b3a77fdc740bcc1aac74e3eced9015acfd6ce9b11a720b7200d64aa95f47555bc0136d13c0f91bf8c7b506ceac976aba9a6e895e1519547237efbd01043245e3c5a3b96b53002b5183be14d8f76a6f105a74f312d70f6b5f0111acd44591a57a9d2dc04fc954fab11796ea2165ffb47f7b9c9c85973f3a4156f659936fcc145a900da46caddc62247e45e820c712d08a66370b58e1ba0c23380d33c5091675bee143e920c5ed44b0341e5c542a158248b1604969b26d7075869aeb6171cd7283196dcb1d17a5e46777d3fe27cce59a82fa0b42182aa1a54b936f896391a214feb3064454c417094ac536c1ae6cce3961a4ad594101b01fce2bf0872569f68508f4b0000c1a33db569f0f532fee18be50240cfa07cc1724515220a80a54038838ffe376a7fc244bc25641991069fe061ea933fd26a3e3783303ef8c67159a040d673560992cfa06bb9e141ce07521fa1618d9796a9d621ade8a202a238fdd179b4d16a0d8401db067adddb97867645552422b244c10f80c592b443b0da891d9716008225d0ca24e2a5886cf5b0c6ab7aff359ac3507e5df6554263b7f082164407b1e1e50430c96c91519f9bb249bc4102c86cc8198179e35c8513fa14c988cecb08610f81acc188147c0103d8109e537bc132c7bfb581a1ee58c71838aaa00b5aa28938f911bd589a41d7a34849c9a8b0c47f01d870242a15f6aa6e5b238fe2cc988e51453b269b748522e819befc1a26d78936bd12cca0250319f7be2a24837f83626e0bb8d95b2048ec8d49430cdf5abd0388b18adb07b446c176d010198b6354110e20d80a3d3a969c938b5ba531a3fc777233931daa1059771651a91caa5b3a8991a20652828010408d89cbbe0308cbc41fdfeb2dfe280a51950699b0bc9003bfaaf9c8c7352ef58097b8c9432f8b72f94021c8c5557f1c0f8da72cb24346a91a8df5276820da6401065e54c2ce9738cdb800b814273ec401cfeb223d05d4b8347678523889b6082c336c339bacc8c1c19a6858bc15090428b40ebbe16682d47666d9bcdad3c3a7aa2ebc55311bd0baf0447cd80c974bec8c6301194015537baa9350acb5b79c7e26d9a75a5c916a50bb699468ae959ce6082b74380498094160c7af3a90ac8888c1595b0b131a28249a9a7bf23f8011215b903ee7f927a1751a7a0aa34bca05e9764ab7a34e24b3c4a576169ba851dfc198797027b569ba17c8c7176c2b0bf399656a4d8dca3d6b8a382baa81a01a57975b16ef3059ccc85b6910890b59660491932e46210390a1ddf507e70163fdc7a459852888781d544b87f75c0ad2796cfa62333c3921804c1724fa396579a1dd0b2ced631b2991386c2716302a7d6167737ee750b1f928f61785f733a1bf2b65c47b6e76834252a9c1f486407467a06653a2d7ca775e359256f6187e2c05e8d8604af3258edc4fedfbc430153a9519b5d78703ab669779d98baa011210f48842421dda34296515610331b936d34f7f1961d71b689cdba840a51dcc5246b546483526a66613cdeae04e67818ea7e17211786394a75395a15ecab78211d24ceacc8ecd066a1bd89500ad00c6b67ceee86edad406684467a5bb55e39c6167b8b306bcb5c4bcb8d85836afb00bf940bf3d8b950740116e44b4266556e717acdd16e13688b69d8c04e2136b70f682064eac3c078a56c39268dd", + "credential_response": "024c08aa42b3ce01b48b630ef8d63325e6bb4afe8e9c4770055e474a5c9d88af2c45a55e695ae3047db1d1c901ae30bedfba20f7169fbdb36c5c93461c192e5a9cfdc4ce6843f50d7eded7b81e1b4aaa7f165096bb12287317764b7c09729a7290dc99f49a7d3d6440e3b77f805d38d01257e5d75bb466b520819cdff3d70b3739e083457e92f8d92d4f5c9eccdc6f082ce883eac1d5a93f7958afcd5babda773a73aff75aa0065dd4d4fb3ea3d07cb21852991cd8cd72287003dd3799a4f7ab08def51d8da9275dfa6163c352edb126751f03a51ad97a92c047133655a05eb389a10401195b967453c61248d07cc460467441987aac00334ce8f98b82f046f1de5b23b9090cad5feec556cbd6ad7f42280df863ab8a3b0a72767774f6191bbe5266c8e02276435752fcc3ffa8ecc71910ba010159abf02a2a52470f2f6bf1d41c2b1b6f756eb6a38b3190c9640f774a14be105e2a62046d2b46afc8f21af0447607497949a67783cc273d3e1caaff537c38f5c500fee8348975403868cca9888f26f2494c6e3df297ae53ce1b3482e2fa8ec9a8a01356268a5e82400cfb29b5f8b139df254f1b06cb3ee7dbf02dc1e16b87d052dedcf9f03e37d895bc4a5224bfb4b027a8295fe043edea775990f9c5c2901543082e5c408f2a047730fd089400e9bd5bdd5ffe9e495add1e038c0ff8cece217ce825734d9bf24982d4ce373acad113069c1ef4f8cadc77f531ea6377b516bba31d0646a6a912ed4f49703d38841d1f0c61871901c68672e6da5c00f58eeb2fcc1b62a52c513a50078c4abd985af5b714482591186870fa878da7fdcd23e648a5c6fde973baaa5220a114ce14c60e9f26a67a4a0a8d40841a0d61e8a5783a63c556ada044f88e94baf7a94ad4fdf098f72ad3eb8031e7d130a09864654d877e98c3506ec1d76637d351c9b6e7a7a55d4285893474b822bf795916931ff7ed49bad6ea7f7bddabcfdd0ba22bfb92f73c92e884bea7c534195c4e0d45a24ab6d57eb555780f26cb275d92d769c4a42824185e5bccb908064aeab96814dc68d9d1e24a307b533ce2b7a7bce9fd1e0cc2b4c2ccb94d9383f0a5580996e029e2367ba8ff951f51477b51596ee6043e3081c54559956ac92b26a0513dca7da792350bd0a5a3ecd976a5f886ff4a7a884a58330c2f4c3ff27d6c91cc966a2480a731502cf5dae11dabf0ea599f2e8fc45fbabcf381e5c4582f76cd10948bc9ad96bb47b9b162c1b4741ea9a342c1cd322048f3537fda5652383d1c2bacfa2d172de5645ec8e066d3b19ea626853965da4792f9278e0a315c8bb2edfa9e61f3f3713247ff53327c3902787e0e634b670eb065d9cc15e4217e9d9c608bb9094d9027e941a0bc8221b62f1a2ea2062ce0dfcb52b9e7518f3f291a01c169b34975e2636e226f80bc1a3b0e9d062a4fbb6e18cccaa848aee21f112408990faa280c82cd81baf1a3a84640b594fe8c630b6286e14959cd7de7d41c1a8ba3238956118af1139f7cf8661c5822aa9a5f02688767b793e181127ecfbfb6ee101ea510e51a9ba1e03f6862c205459fd2b70aedcfa1069d1c741f2aea80c85b531c3353ddb2c27ba8c81dc604fd433dfb6e72581ab714da86db656b3c83f6b4ff5b10bd5dad4b41a479c9d384baab8430179b79dce3cbdc09061ccae6c28eb32ad96bee7f164d6c7de7e343fbdc741a0065e386cc97f1ae18ab9ee91ef3d4e378ef5f0b97fda4cce06ecd5332adfbf9d8a9a3f85bca268316622d408440d58754efdc2a5fdbdc15448a8358ded2fedb63815069597c0cb0efda4c8286fdeeed2e966fcd0fb309cb2ff94fb2f1acd894cd257dcef7aaf8d4f6ea3492a68794f7e40cfb06f0f9d1e21f156948bf0c1eddb0ac491aecfc887549e649b8da0baf6873982f9b4f8af4e907ed0e58c02ebb2296fe198a3d0783b4992a35b43d1fae08f53241983370cf91c0", + "credential_finalization": "9f2021f9eccf2f3510136ba9fde1bfd0736c554f0c35c007209e4e1c9fed864a7489fdf84f1e9ef9427b1b755cfb14af", + "client_registration_state": "2655bffaefa6559cb38615edae864dda63cd88f119e401930b6ab5b35396841b02bd1c78f544d3fa1c214b5dc343c6ca75bff3b87b431845ff7cb983aaee5abafe", + "client_login_state": "2655bffaefa6559cb38615edae864dda63cd88f119e401930b6ab5b35396841b02bd1c78f544d3fa1c214b5dc343c6ca75bff3b87b431845ff7cb983aaee5abafe15ef1a944a13fdc17c61eb72825d91ffd24b9eafc0924c0f66523516c74f604203066d532e77b6252310cdd18b46f9553619f868029bbd1a4cd6cafb709e09a8089b3a77fdc740bcc1aac74e3eced9015acfd6ce9b11a720b7200d64aa95f47555bc0136d13c0f91bf8c7b506ceac976aba9a6e895e1519547237efbd01043245e3c5a3b96b53002b5183be14d8f76a6f105a74f312d70f6b5f0111acd44591a57a9d2dc04fc954fab11796ea2165ffb47f7b9c9c85973f3a4156f659936fcc145a900da46caddc62247e45e820c712d08a66370b58e1ba0c23380d33c5091675bee143e920c5ed44b0341e5c542a158248b1604969b26d7075869aeb6171cd7283196dcb1d17a5e46777d3fe27cce59a82fa0b42182aa1a54b936f896391a214feb3064454c417094ac536c1ae6cce3961a4ad594101b01fce2bf0872569f68508f4b0000c1a33db569f0f532fee18be50240cfa07cc1724515220a80a54038838ffe376a7fc244bc25641991069fe061ea933fd26a3e3783303ef8c67159a040d673560992cfa06bb9e141ce07521fa1618d9796a9d621ade8a202a238fdd179b4d16a0d8401db067adddb97867645552422b244c10f80c592b443b0da891d9716008225d0ca24e2a5886cf5b0c6ab7aff359ac3507e5df6554263b7f082164407b1e1e50430c96c91519f9bb249bc4102c86cc8198179e35c8513fa14c988cecb08610f81acc188147c0103d8109e537bc132c7bfb581a1ee58c71838aaa00b5aa28938f911bd589a41d7a34849c9a8b0c47f01d870242a15f6aa6e5b238fe2cc988e51453b269b748522e819befc1a26d78936bd12cca0250319f7be2a24837f83626e0bb8d95b2048ec8d49430cdf5abd0388b18adb07b446c176d010198b6354110e20d80a3d3a969c938b5ba531a3fc777233931daa1059771651a91caa5b3a8991a20652828010408d89cbbe0308cbc41fdfeb2dfe280a51950699b0bc9003bfaaf9c8c7352ef58097b8c9432f8b72f94021c8c5557f1c0f8da72cb24346a91a8df5276820da6401065e54c2ce9738cdb800b814273ec401cfeb223d05d4b8347678523889b6082c336c339bacc8c1c19a6858bc15090428b40ebbe16682d47666d9bcdad3c3a7aa2ebc55311bd0baf0447cd80c974bec8c6301194015537baa9350acb5b79c7e26d9a75a5c916a50bb699468ae959ce6082b74380498094160c7af3a90ac8888c1595b0b131a28249a9a7bf23f8011215b903ee7f927a1751a7a0aa34bca05e9764ab7a34e24b3c4a576169ba851dfc198797027b569ba17c8c7176c2b0bf399656a4d8dca3d6b8a382baa81a01a57975b16ef3059ccc85b6910890b59660491932e46210390a1ddf507e70163fdc7a459852888781d544b87f75c0ad2796cfa62333c3921804c1724fa396579a1dd0b2ced631b2991386c2716302a7d6167737ee750b1f928f61785f733a1bf2b65c47b6e76834252a9c1f486407467a06653a2d7ca775e359256f6187e2c05e8d8604af3258edc4fedfbc430153a9519b5d78703ab669779d98baa011210f48842421dda34296515610331b936d34f7f1961d71b689cdba840a51dcc5246b546483526a66613cdeae04e67818ea7e17211786394a75395a15ecab78211d24ceacc8ecd066a1bd89500ad00c6b67ceee86edad406684467a5bb55e39c6167b8b306bcb5c4bcb8d85836afb00bf940bf3d8b950740116e44b4266556e717acdd16e13688b69d8c04e2136b70f682064eac3c078a56c39268dd3295971b0126407b430b7d632b959262aabaf82644b88da7a16c53b7f6f5a479f53e10cf7c2652777fb639c7d0ccb2c015ef1a944a13fdc17c61eb72825d91ffd24b9eafc0924c0f66523516c74f60427e94a8f36a5d1aa73897ea1bb2961c97e5a01d269fe6fca22088036fb6a203ba5c16ac57f7dab0a9908bbf603778839b915c71097947447a183ab35ea044c0c8f18a73655b2a47521b555850592882a293bdc2175d3238cde12d3b281500f778f751ca03f32e5896093c5b3e5401382ac29fbeb1290ef23bb6121bb65b0bd283a0f3e11daecc2cb797668e53bcb1442846187ea2e4ac8d81be63a2821fc352116c0fac8b0923e7517070a108a7ac16cc3a16342005417ce28b4af8250540b13f5aa15b7c8b1785bb918b3133bb8acffd650be1dbbd414bc6b517c35d51aafaf71b18eb148565b1c875b010287708367051e986a474648f1903b9b2bc8b0a6b96558e03d5232ac252e3518d4e368dafb337cb76a03639bfde88402d569f97c49e676aa278ea62d8ba8f8b1611bfb6bc35302f627b6fe774b503f95c94d7cc30f5870b7b04ec224181905178d0302c97b8c3a9406bd46f2cb355905056128cb4424c3e1807874906a86e4a54d01686ce3989338c71c8403aceec980a8c3aa9e5623481aa62d13f15a820141100137a239910cef424a5c436b989475f0a5b9b1751ca7fe8826dc08a81502d667508459b35072c412e6c8e4be18be04517264831a2414773355a293c5fcc283e7df67f879096b16a121fb5648ce41a8b156f7ea9970ff16f53723d5ada12748a05d2a07e6f8884bacb71372550a7abac1162b972439d96101e3cb73ffa2bb12e1b59b82cac96e888e641bc0c19b4e61b6bb520a11db4074d622354605156ac441085193706946aa4b1df9c80c2c686f72acf22b70fe9e53e8b70151ac9483ec5c92479892526052ed1911bc62f9277c99dc69734a5cce2d20191306d41389fa3138c3ef0049b9792ae9b9dabf930fde62c15e9a193f7a7f3163dc005b9142a1d3d991b9f6c161526c091cb4cf35a47299ab06e8b136450abc1d4b0f0427eb0b30e7b959bad9ac2c4cb97d3cba2e73b47f6836729317a3c0c204f5ab83fbb490ea2565f4b67cb233752dca96518aa5581500e511a207bc3a5d23fb6e323143424c041ba71d3577d7b4b83b283aed80910538d9c043f1e16765b1c62aca4095af49be9a8c70f2cc83a7281d6534a45e295a55b68671a886a0a2bc0873bc2fc4d08a100e092cc9b034aca55af4c500ab416b07270652a693f3cb885de74588fd08591c2c0c71bcdfdc640b3945a8f5903a9e4845ba109843c6a6471160ee7c1a11061fd72bf71e07d6d896b0972365b0b36b22c21795933878c3f89f43e85d29425db3635dbc90fb4a1f70399d50a683d54503b89a16aa37f3c58c8104cb464530dfd44699531b9a570b03f0763a5e9110fc2b86904bc8095670368b10e4a7ee7188387daa73840479e13cf61c142dbaaa1d8e61ade94550146623f079d81943bcb46aa0bd49eac8608639c391f1a864d427905da0ac7ab11d803a0b28b88f12326e762c44cdaaf6fb2895bf45f3ebbcb55eac64e5552035c58d80205f25093fa53a665c0954397587720c0d3a6af99a1356b4c1b172336eed8a9c4106b3d0a47219b1b5331b5a60caba9420408c383e3b3a13af9172bc40354e99b0b3c8b0aeb53374c02eddb9ad1f80456042c61fc3f691c7c0d0262cfd6ce9b11a720b7200d64aa95f47555bc0136d13c0f91bf8c7b506ceac976aba9a6e895e1519547237efbd01043245e3c5a3b96b53002b5183be14d8f76a6f105a74f312d70f6b5f0111acd44591a57a9d2dc04fc954fab11796ea2165ffb47f7b9c9c85973f3a4156f659936fcc145a900da46caddc62247e45e820c712d08a66370b58e1ba0c23380d33c5091675bee143e920c5ed44b0341e5c542a158248b1604969b26d7075869aeb6171cd7283196dcb1d17a5e46777d3fe27cce59a82fa0b42182aa1a54b936f896391a214feb3064454c417094ac536c1ae6cce3961a4ad594101b01fce2bf0872569f68508f4b0000c1a33db569f0f532fee18be50240cfa07cc1724515220a80a54038838ffe376a7fc244bc25641991069fe061ea933fd26a3e3783303ef8c67159a040d673560992cfa06bb9e141ce07521fa1618d9796a9d621ade8a202a238fdd179b4d16a0d8401db067adddb97867645552422b244c10f80c592b443b0da891d9716008225d0ca24e2a5886cf5b0c6ab7aff359ac3507e5df6554263b7f082164407b1e1e50430c96c91519f9bb249bc4102c86cc8198179e35c8513fa14c988cecb08610f81acc188147c0103d8109e537bc132c7bfb581a1ee58c71838aaa00b5aa28938f911bd589a41d7a34849c9a8b0c47f01d870242a15f6aa6e5b238fe2cc988e51453b269b748522e819befc1a26d78936bd12cca0250319f7be2a24837f83626e0bb8d95b2048ec8d49430cdf5abd0388b18adb07b446c176d010198b6354110e20d80a3d3a969c938b5ba531a3fc777233931daa1059771651a91caa5b3a8991a20652828010408d89cbbe0308cbc41fdfeb2dfe280a51950699b0bc9003bfaaf9c8c7352ef58097b8c9432f8b72f94021c8c5557f1c0f8da72cb24346a91a8df5276820da6401065e54c2ce9738cdb800b814273ec401cfeb223d05d4b8347678523889b6082c336c339bacc8c1c19a6858bc15090428b40ebbe16682d47666d9bcdad3c3a7aa2ebc55311bd0baf0447cd80c974bec8c6301194015537baa9350acb5b79c7e26d9a75a5c916a50bb699468ae959ce6082b74380498094160c7af3a90ac8888c1595b0b131a28249a9a7bf23f8011215b903ee7f927a1751a7a0aa34bca05e9764ab7a34e24b3c4a576169ba851dfc198797027b569ba17c8c7176c2b0bf399656a4d8dca3d6b8a382baa81a01a57975b16ef3059ccc85b6910890b59660491932e46210390a1ddf507e70163fdc7a459852888781d544b87f75c0ad2796cfa62333c3921804c1724fa396579a1dd0b2ced631b2991386c2716302a7d6167737ee750b1f928f61785f733a1bf2b65c47b6e76834252a9c1f486407467a06653a2d7ca775e359256f6187e2c05e8d8604af3258edc4fedfbc430153a9519b5d78703ab669779d98baa011210f48842421dda34296515610331b936d34f7f1961d71b689cdba840a51dcc5246b546483526a66613cdeae04e67818ea7e17211786394a75395a15ecab78211d24ceacc8ecd066a1bd89500ad00c6b67ceee86edad406684467a5bb55e39c6167b8b306bcb5c4bcb8d85836afb00bf940bf3d8b950740116e44b4266556e717acdd16e13688b69d8c04e2136b70f682064eac3c078a56c39268ddbe1681f5e8ca1ae3df58646af76e49d67d3fd8772418185cd32159d069404f51883ac3fe2bb01246f4c0b2b29f4c21f9518ca1bcfc7a11264107e941c0e35587", + "server_login_state": "b67f664a1f04cc9878e057d9ae5b7598756827cab0e19847623b259dd3969b674c72c57709c8d9f4efed32b08263f9f89f2021f9eccf2f3510136ba9fde1bfd0736c554f0c35c007209e4e1c9fed864a7489fdf84f1e9ef9427b1b755cfb14afcfd6ce9b11a720b7200d64aa95f47555bc0136d13c0f91bf8c7b506ceac976aba9a6e895e1519547237efbd01043245e3c5a3b96b53002b5183be14d8f76a6f105a74f312d70f6b5f0111acd44591a57a9d2dc04fc954fab11796ea2165ffb47f7b9c9c85973f3a4156f659936fcc145a900da46caddc62247e45e820c712d08a66370b58e1ba0c23380d33c5091675bee143e920c5ed44b0341e5c542a158248b1604969b26d7075869aeb6171cd7283196dcb1d17a5e46777d3fe27cce59a82fa0b42182aa1a54b936f896391a214feb3064454c417094ac536c1ae6cce3961a4ad594101b01fce2bf0872569f68508f4b0000c1a33db569f0f532fee18be50240cfa07cc1724515220a80a54038838ffe376a7fc244bc25641991069fe061ea933fd26a3e3783303ef8c67159a040d673560992cfa06bb9e141ce07521fa1618d9796a9d621ade8a202a238fdd179b4d16a0d8401db067adddb97867645552422b244c10f80c592b443b0da891d9716008225d0ca24e2a5886cf5b0c6ab7aff359ac3507e5df6554263b7f082164407b1e1e50430c96c91519f9bb249bc4102c86cc8198179e35c8513fa14c988cecb08610f81acc188147c0103d8109e537bc132c7bfb581a1ee58c71838aaa00b5aa28938f911bd589a41d7a34849c9a8b0c47f01d870242a15f6aa6e5b238fe2cc988e51453b269b748522e819befc1a26d78936bd12cca0250319f7be2a24837f83626e0bb8d95b2048ec8d49430cdf5abd0388b18adb07b446c176d010198b6354110e20d80a3d3a969c938b5ba531a3fc777233931daa1059771651a91caa5b3a8991a20652828010408d89cbbe0308cbc41fdfeb2dfe280a51950699b0bc9003bfaaf9c8c7352ef58097b8c9432f8b72f94021c8c5557f1c0f8da72cb24346a91a8df5276820da6401065e54c2ce9738cdb800b814273ec401cfeb223d05d4b8347678523889b6082c336c339bacc8c1c19a6858bc15090428b40ebbe16682d47666d9bcdad3c3a7aa2ebc55311bd0baf0447cd80c974bec8c6301194015537baa9350acb5b79c7e26d9a75a5c916a50bb699468ae959ce6082b74380498094160c7af3a90ac8888c1595b0b131a28249a9a7bf23f8011215b903ee7f927a1751a7a0aa34bca05e9764ab7a34e24b3c4a576169ba851dfc198797027b569ba17c8c7176c2b0bf399656a4d8dca3d6b8a382baa81a01a57975b16ef3059ccc85b6910890b59660491932e46210390a1ddf507e70163fdc7a459852888781d544b87f75c0ad2796cfa62333c3921804c1724fa396579a1dd0b2ced631b2991386c2716302a7d6167737ee750b1f928f61785f733a1bf2b65c47b6e76834252a9c1f486407467a06653a2d7ca775e359256f6187e2c05e8d8604af3258edc4fedfbc430153a9519b5d78703ab669779d98baa011210f48842421dda34296515610331b936d34f7f1961d71b689cdba840a51dcc5246b546483526a66613cdeae04e67818ea7e17211786394a75395a15ecab78211d24ceacc8ecd066a1bd89500ad00c6b67ceee86edad406684467a5bb55e39c6167b8b306bcb5c4bcb8d85836afb00bf940bf3d8b950740116e44b4266556e717acdd16e13688b69d8c04e2136b70f682064eac3c078a56c39268dd0159abf02a2a52470f2f6bf1d41c2b1b6f756eb6a38b3190c9640f774a14be105e2a62046d2b46afc8f21af0447607497949a67783cc273d3e1caaff537c38f5c500fee8348975403868cca9888f26f2494c6e3df297ae53ce1b3482e2fa8ec9a8a01356268a5e82400cfb29b5f8b139df254f1b06cb3ee7dbf02dc1e16b87d052dedcf9f03e37d895bc4a5224bfb4b027a8295fe043edea775990f9c5c2901543082e5c408f2a047730fd089400e9bd5bdd5ffe9e495add1e038c0ff8cece217ce825734d9bf24982d4ce373acad113069c1ef4f8cadc77f531ea6377b516bba31d0646a6a912ed4f49703d38841d1f0c61871901c68672e6da5c00f58eeb2fcc1b62a52c513a50078c4abd985af5b714482591186870fa878da7fdcd23e648a5c6fde973baaa5220a114ce14c60e9f26a67a4a0a8d40841a0d61e8a5783a63c556ada044f88e94baf7a94ad4fdf098f72ad3eb8031e7d130a09864654d877e98c3506ec1d76637d351c9b6e7a7a55d4285893474b822bf795916931ff7ed49bad6ea7f7bddabcfdd0ba22bfb92f73c92e884bea7c534195c4e0d45a24ab6d57eb555780f26cb275d92d769c4a42824185e5bccb908064aeab96814dc68d9d1e24a307b533ce2b7a7bce9fd1e0cc2b4c2ccb94d9383f0a5580996e029e2367ba8ff951f51477b51596ee6043e3081c54559956ac92b26a0513dca7da792350bd0a5a3ecd976a5f886ff4a7a884a58330c2f4c3ff27d6c91cc966a2480a731502cf5dae11dabf0ea599f2e8fc45fbabcf381e5c4582f76cd10948bc9ad96bb47b9b162c1b4741ea9a342c1cd322048f3537fda5652383d1c2bacfa2d172de5645ec8e066d3b19ea626853965da4792f9278e0a315c8bb2edfa9e61f3f3713247ff53327c3902787e0e634b670eb065d9cc15e4217e9d9c608bb9094d9027e941a0bc8221b62f1a2ea2062ce0dfcb52b9e7518f3f291a01c169b34975e2636e226f80bc1a3b0e9d062a4fbb6e18cccaa848aee21f112408990faa280c82cd81baf1a3a84640b594fe8c630b6286e14959cd7de7d41c1a8ba3238956118af1139f7cf8661c5822aa9a5f02688767b793e181127ecfbfb6ee101ea510e51a9ba1e03f6862c205459fd2b70aedcfa1069d1c741f2aea80c85b531c3353ddb2c27ba8c81dc604fd433dfb6e72581ab714da86db656b3c83f6b4ff5b10bd5dad4b41a479c9d384baab8430179b79dce3cbdc09061ccae6c28eb32ad96bee7f164d6c7de7e343fbdc741a0065e386cc97f1ae18ab9ee91ef3d4e378ef5f0b97fda4cce06ecd5332adfbf9d8a9a3f85bca268316622d408440d58754efdc2a5fdbdc15448a8358ded2fedb63815069597c0cb0efda4c8286fdeeed2e966fcd0fb309cb2ff94fb2f1acd894cd257dcef7aaf8d4f6ea3492a68794f7e40cfb06f0f9d1e21f156948bf0c1eddb0ac491aecfc887549e649b8da0baf6873982f9b4f8af4e907ed0e58c02ebb2296fe198a3d0783b4992a35b43d1fae08f53241983370cf91c0", + "password_file": "037ffbe4bed3ce6b96a788e00103b74713998d0ddbc7d31ab0c14fe35106b9e9cc8fc69fa13439b5e610b37b16caae2daa27ea69e4932c91110c69f612a04d709e964c543c9bb55888a1ac74e7cb719f13293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd278a5defa57a741f1877a176fc506f74774766c99d74e595ef7a33141bb11776d16", + "export_key": "2db45102abce37abf0e11fd7710831f8c08372217763e9c41567af8844915e4a", + "session_key": "b67f664a1f04cc9878e057d9ae5b7598756827cab0e19847623b259dd3969b674c72c57709c8d9f4efed32b08263f9f8" +} +"#; +pub static TEST_VECTOR_P384_TRIPLE_DH_KEM_P384: &str = r#" +{ + "client_s_pk": "031c1bad5951cf0487c6ca5c107e0df205e4eefed0a057eb4f14fed0cff3a9f726023dabc398d4661a8973a2f9722affba", + "client_s_sk": "293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd278b5c3274987a1242ba496ee3dc989f8a1", + "client_e_pk": "03fd3751c53cf2abea2cd75d7176ebfb27a5d5e59534c82eff5aa28a93b27e8d888e69e9c55f017651a9d1f71d25ec0308", + "client_e_sk": "883ac3fe2bb01246f4c0b2b29f4c21f9518ca1bcfc7a11264107e941c0e3558767eda7090cfa1824ae66e65a0425fedb", + "server_s_pk": "020cd5cd54c93602a83258504bdab51d3e7b344245e7e7f54c59463960262db29d8c4a9330ef9c0f9ffd935af15e4aee45", + "server_s_sk": "434fd03b8290b8ad9086304c96e8ff2f4b8756948ac9c8afe9e38891f3e104b96ad8aba1e5a9a5ce0a1b1f78eeb4326d", + "server_e_pk": "023707c59cfaeebe33c7b02841078094fc2e9728ccdd6ce9b745b6090c14f1a5032836ef929e8e841e18ae3715e28a1c16", + "server_e_sk": "d9ca86ea208a70a74d092f85b79e8568991cd8cd72287003dd3799a4f7ab08def51d8da9275dfa6163c352edb126751f", + "dummy_client_pk": "021f69e910163a2f98b252f02ad17058534eeccfeb5563e636f61e80036edcf039aa6edf64a100ba5189a0664f88e51aa6", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "d3fbb2355b374a218ee6517bd59419472ac6070b06ebb5aca042ba996884e9496a1f10ae17d863e90b5f0e82d4a37035", + "oprf_seed": "98e3f3e430864ade512adbabf1f1a0dd698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13", + "dummy_masking_key": "c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedfba20f7169fbdb36c5c93461c192e5a9c", + "masking_nonce": "f5762fae1859a5f2873131ca4e1fb52ea4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d12488cae978cfafe2d8f8804d73dc8709", + "envelope_nonce": "15ef1a944a13fdc17c61eb72825d91ffd24b9eafc0924c0f66523516c74f6042", + "client_nonce": "5295a857618fdd85d35f62a1b482e182b3128efa21e976075260a2c2da2dd98e", + "server_nonce": "0cf8505dcb05f4e44c87ca6858f2123816a8c3715be95c6635e1035848bb190f", + "server_sig_rng": "27736bcbe9b69fbde386e0271708da5bd198aa66d474460a0959f960309cf180439288da0e67df1ac388da3984197d4d", + "client_sig_rng": "98e2b63c2e9e05f5a976c845cafe467b2655bffaefa6559cb38615edae864dda63cd88f119e401930b6ab5b35396841b", + "context": "636f6e74657874", + "registration_request": "023ee7f5d29b4e9fc4049fb82e4af830529755ca987a10c202be2d5451a47d487bca7766ef5ab7a65eecf37bc8c8784b83", + "registration_response": "02a5d8b315183f5a89f3cf295199d9308466a539b6e163e436632cdbf4198451e506e9552ef71e76e5500e8e5fdd6f38a7020cd5cd54c93602a83258504bdab51d3e7b344245e7e7f54c59463960262db29d8c4a9330ef9c0f9ffd935af15e4aee45", + "registration_upload": "022557a33e7a3d817565691e63681b2c1fd3318671fb425d969c0db56c0faea373c7230f4290ca033fc2a951e725dc82b88873454f6c4dce89561f6d8751b956b7659a33ac3461310e2e906dc06c4ca93aeff153505fdd3fd3c67acd48de26016e293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd278f211ea834930e202cfb2803e657a88179f1146718593d12775eb37d784d942233a4f465b5edc060c7b8a487f7ac89d3e", + "credential_request": "023ee7f5d29b4e9fc4049fb82e4af830529755ca987a10c202be2d5451a47d487bca7766ef5ab7a65eecf37bc8c8784b835295a857618fdd85d35f62a1b482e182b3128efa21e976075260a2c2da2dd98e03066d532e77b6252310cdd18b46f9553619f868029bbd1a4cd6cafb709e09a8089b3a77fdc740bcc1aac74e3eced9015a862b28d8e1b2e6b6c7c4870d03d71f40b65a736203ed6216a1ca070a0c3d75ec75973b54f6a236ea967f552b264bc53f2e57a90ff6340700c333bb560261a67a67cbbe1032cb58304d550326896583e112078229ebf8977674c5f790b208c37cb3a13cb63b35edf082c9f0ab4c9949b3da2decd01df10867be816dbb32aa392bc797b037a0d463299b87f241abc54530fce00d7af479a2b60c0da08c07d3baf57892d4da18496172adc85ab80184078c7b51c20bf703028aca83585a4a806736278a3d765c640c0cae54fc36f4694149961202e3bcab769ce6dc88be13b331fc8c6e03066cc92680bb5ec4292766a5827737a197940676fcbc79e2aaf527a59f640b52949a1d52cccbb220f73aabf8493c05b32736284c97a0c910146f41874692968a220739037a3bbed45b5ad43d5c9013356bbb0eec1b562664844aa6141793df4b8f851b03b17c91e1574c2a2153589a5813566012d6313782cc0b94995ba79a75bb1c855a3d3571abe067ab507051d2ab5b343b0903d410ee801cb4310da430609a858073311e5015cc3b80ad06a63a9301475dd1004526a3d257b51327b1c38824aea132454426b5e1871eca6375726ce72a2c6b9c31b7eb07961c4328e47cdf5b05f1076cacb5ac9b516ae2218680930d66cb32c8865a1f03a6afd9ba65e3284ec56f78ca30aba62ecc02066ec23afe2826d0bca4a2477510e7a8ada4213303cbd61c2c47f1a371c2a159b389bf7544f607abee2a8dcef08583765f016784f86169fb2bc0018a0c3db72aa8dc1111040420d76bfc290aa4e350b76b23f736610f99c9196a3b30bab3b284825e3c963f548105a459bcc16ceefa5f5b3c7a13a3173ad57520e847196272f2fcc6983b8157d47dfa814bf569bd89652bb5a46d353791b6a0a961b516b0c631fa8542ef10a4fe03aa7d43419dc09951dc798d4929e1037f46f980c43c684dd95a9ac691ee3a98bb8b6f1f575c818314fb5a68c2898b8b69561ba134633aa50fc6964231b5cee273ca0c29fc830a196ab9873278101243b26a330ab806e3e88d42b15232917a98a033f796b6e5c92f7d36ba257623491b44d0171b079a1191491e1d4549b8b87177b7cc427c4e39061df61190313220c611054d0bbbd9e16674b5c84e83ce65316027105dfb667916f1caad32c9c066ba363aba111a6811d41d7862a45ed41b7e54cef3fa3c08b0a297e24bd6436e8f8492ccf7ae99613a604570e7016ac9a3a8b930245704659959afff2bad4c95a6e30b910023be629a08d6ca6f23877808b0a317fc65de1b990b07640adb5b124bc631d82ab7e1b9f6494fe8a039dbb5c6b6b66c0cd54dcb2016944c2b9e46bbb3a8acd190a3356377c9285041081b5f959e13586758d036c40aa40bf40ec6f01246bcaf492b5f289979587a69ca0cb889aa5524c3bf0b503b2ae4970ecc66bc0c7b1aa7ca0a20b2949cac4fb561cfcc4c76433e58eb284a86368da96872492fcc50277742205654b7bcb624287c8cd13400ef876498c1c7e30991e7753db219cafdd62c07c89f7eb1734d4011150b1841271d6d648144fcaaed2745e30948680a54cd83ab91f3ad102cc1bac8a43859379a3c128f572589ccca085718a7e4cd0ef8cf8c157573e58f060f3f25546ca5e19f31959b9b2bfc77db7d686c", + "credential_response": "02a5d8b315183f5a89f3cf295199d9308466a539b6e163e436632cdbf4198451e506e9552ef71e76e5500e8e5fdd6f38a7f5762fae1859a5f2873131ca4e1fb52ea4a4f65a42b4181ffb2b1f907b68b1fd98965e6497b321a9e094d01856285bfc170b00869efad897e5a75140495d75af1aebfa9026f61120304fc7171711b1f5c911613c15fc296dd3387df410300c567e095357d637d77f6e30a411d0d7c7628ce9954a08dae501957a7dc04fee29ea9f5966adb7336463c0a7e17bf667f3ac44ff5db1780c7803a29248dc99be3fcc08991cd8cd72287003dd3799a4f7ab08def51d8da9275dfa6163c352edb126751f0253ca6922d65170e015f0df62ae7794b3cc4b749d6dcb64acbb7b3fcb018a33b7d102b3f939ddeb3e94f593e6edcd0e6ad744c5af7fddf94f0d296297ea6a1213b0d098b0035e8380981227ed410c99d82622120426331ba5f1c2e49b68f69024687bef14177a7ae8adda3d39ece25557fd11f3e3c0c7858736462ba2ed505d4c8f6cbfacca43df717638a048a4f2a75bb0e67a1a7fad9fc35c0a611fe9d87e3048f9ce636703c9bca8877f016d9175c8205cfa8521ba8f1cbb2e0db886f50a84f3860410cac1059c762ef159823fadac92b02a418822c4713a1146a5f2a05fc57b52d32af468d969802b30596edc43279fe8166f9b210646c34e552bbb1e4ec0d5881c73c2363d687f4d05406c45ec88387f118ef3fef9109ecabbe09d59fb585f4dd0de6b426a7b6e5c2324f23bb119b196c9e3edb5e951fa4a6d6e6d89398c29190e7c14da898ce8d0e06f21964b162d85b0d6c0fe83c9f212bf3bd08d9af731637a13b776144dea2831286f9a5092c763eaa82191a0af06012417727440e36343dcaa6f2514ca5586cb472c0b83be38cc11454dc7759e661653f0e446c13b885877b21584192d87b8f49bcae01646297ffd91e643579b5d70fdf0567a3d902fe678cdb3ab5f2c5fa0a6b51ceae7961a69214e3a6ee6fea5ec564137067cdbf516c5e7439ba9c5e3cc3e1a303a048703416c0a68c440d9f0e8f394c2d972fb7f7a22d5f76abe2d7bfa6cbda3bee59e186faa0b8946e52b407b9d58554efcd01b4ea5a51d9f331fd602fe383d0659b24a9cd5dd55e1dd5a929d10d163d32fcf017f63cf441d4d33095c896efccf15d83a7ce82c8689f2c3ce7c1eced727c892fe3e0840aa0a41cd783d58ad213c84c0903f6d5666107a56df53ae90053bb67e37fa6ef8bafbc697c410b88e811b82806a25d0d0d37ffb11acfc4ec820c54bc75401a63f1ae4af15e99d6a97cd0893061d50f05797de0b8c2a3f6929aae286c31b2265bbe0c36c304a1c16c92d5396c224b314d478a90eef94a7ba4506432a5325b638fc33c01513e583d40b93505dc3e9f435a26665212416974db46a5098c449253b1a7d97e040753bc47a547dd0906ed547b77dc5bad8559b07b7e7986e1166b73ac35af1b5c55ad1c79c168b89fc7f39b5552605f6249bc8860142ab4df2480425d537282b6b6e06211975bf9f1992a075dca94f474b0ca6532c7265170d659dac23d01eb04e33e7c6b17879397239f28cfba4ae71cf318586a3dabbf0de151a3f0e5cd41dedc89ffde4392067aa5c19c85709b1dc1d8784ed703de0c457a710e9cf4b21af4a87cf19a4af0429c77727614a94b15013de03073fa0d8582f86dd30c4d6b116b2298c4cfb10ad33f42672ff9a3cf72992a647e21a1fc0f59845b3f3e656cf96b240d3ab7fea3fbe751213820b8aee7aa528ebadc5ece10243da651b30b262e8a3b64abffa690effaf3342aa7f69e2727b82cd9422c59b07cb6dea471c9bab906babe7a1ebf9e8cdf85bddbe94ad09cfe99a4fce790381507445167bf13633147db2cc6d77b076769b8361d97870d1919166264639e46b60e7a177c0c5db5c163710dc80cf2c47e4ad9a508d4b4c399ac3cd4b9580af45c7443ca094d1e9a3f49b5bb982f00d08104b019136c4ca64f6c1af7457ff008010ad", + "credential_finalization": "5819a28c47d01d3271caaf6893973174cab362b1fba4870d2d4f865342061676b3fe333dd33c0aefd4b7d489a1237b55", + "client_registration_state": "d3fbb2355b374a218ee6517bd59419472ac6070b06ebb5aca042ba996884e9496a1f10ae17d863e90b5f0e82d4a37035023ee7f5d29b4e9fc4049fb82e4af830529755ca987a10c202be2d5451a47d487bca7766ef5ab7a65eecf37bc8c8784b83", + "client_login_state": "d3fbb2355b374a218ee6517bd59419472ac6070b06ebb5aca042ba996884e9496a1f10ae17d863e90b5f0e82d4a37035023ee7f5d29b4e9fc4049fb82e4af830529755ca987a10c202be2d5451a47d487bca7766ef5ab7a65eecf37bc8c8784b835295a857618fdd85d35f62a1b482e182b3128efa21e976075260a2c2da2dd98e03066d532e77b6252310cdd18b46f9553619f868029bbd1a4cd6cafb709e09a8089b3a77fdc740bcc1aac74e3eced9015a862b28d8e1b2e6b6c7c4870d03d71f40b65a736203ed6216a1ca070a0c3d75ec75973b54f6a236ea967f552b264bc53f2e57a90ff6340700c333bb560261a67a67cbbe1032cb58304d550326896583e112078229ebf8977674c5f790b208c37cb3a13cb63b35edf082c9f0ab4c9949b3da2decd01df10867be816dbb32aa392bc797b037a0d463299b87f241abc54530fce00d7af479a2b60c0da08c07d3baf57892d4da18496172adc85ab80184078c7b51c20bf703028aca83585a4a806736278a3d765c640c0cae54fc36f4694149961202e3bcab769ce6dc88be13b331fc8c6e03066cc92680bb5ec4292766a5827737a197940676fcbc79e2aaf527a59f640b52949a1d52cccbb220f73aabf8493c05b32736284c97a0c910146f41874692968a220739037a3bbed45b5ad43d5c9013356bbb0eec1b562664844aa6141793df4b8f851b03b17c91e1574c2a2153589a5813566012d6313782cc0b94995ba79a75bb1c855a3d3571abe067ab507051d2ab5b343b0903d410ee801cb4310da430609a858073311e5015cc3b80ad06a63a9301475dd1004526a3d257b51327b1c38824aea132454426b5e1871eca6375726ce72a2c6b9c31b7eb07961c4328e47cdf5b05f1076cacb5ac9b516ae2218680930d66cb32c8865a1f03a6afd9ba65e3284ec56f78ca30aba62ecc02066ec23afe2826d0bca4a2477510e7a8ada4213303cbd61c2c47f1a371c2a159b389bf7544f607abee2a8dcef08583765f016784f86169fb2bc0018a0c3db72aa8dc1111040420d76bfc290aa4e350b76b23f736610f99c9196a3b30bab3b284825e3c963f548105a459bcc16ceefa5f5b3c7a13a3173ad57520e847196272f2fcc6983b8157d47dfa814bf569bd89652bb5a46d353791b6a0a961b516b0c631fa8542ef10a4fe03aa7d43419dc09951dc798d4929e1037f46f980c43c684dd95a9ac691ee3a98bb8b6f1f575c818314fb5a68c2898b8b69561ba134633aa50fc6964231b5cee273ca0c29fc830a196ab9873278101243b26a330ab806e3e88d42b15232917a98a033f796b6e5c92f7d36ba257623491b44d0171b079a1191491e1d4549b8b87177b7cc427c4e39061df61190313220c611054d0bbbd9e16674b5c84e83ce65316027105dfb667916f1caad32c9c066ba363aba111a6811d41d7862a45ed41b7e54cef3fa3c08b0a297e24bd6436e8f8492ccf7ae99613a604570e7016ac9a3a8b930245704659959afff2bad4c95a6e30b910023be629a08d6ca6f23877808b0a317fc65de1b990b07640adb5b124bc631d82ab7e1b9f6494fe8a039dbb5c6b6b66c0cd54dcb2016944c2b9e46bbb3a8acd190a3356377c9285041081b5f959e13586758d036c40aa40bf40ec6f01246bcaf492b5f289979587a69ca0cb889aa5524c3bf0b503b2ae4970ecc66bc0c7b1aa7ca0a20b2949cac4fb561cfcc4c76433e58eb284a86368da96872492fcc50277742205654b7bcb624287c8cd13400ef876498c1c7e30991e7753db219cafdd62c07c89f7eb1734d4011150b1841271d6d648144fcaaed2745e30948680a54cd83ab91f3ad102cc1bac8a43859379a3c128f572589ccca085718a7e4cd0ef8cf8c157573e58f060f3f25546ca5e19f31959b9b2bfc77db7d686c3295971b0126407b430b7d632b959262aabaf82644b88da7a16c53b7f6f5a479f53e10cf7c2652777fb639c7d0ccb2c05295a857618fdd85d35f62a1b482e182b3128efa21e976075260a2c2da2dd98ef432644d90cf1c98b44338379573b7591a3deee6a1285410a34cb92b334995eb5edee767586b02fa50bdbb831cd5f7a996f10773384e89e538b5286d13db15e32433f68512c5534fb027812f22665684c79298b4566a714ed1a317068cee2b5f85352fc0ab8bbcf24ee4f4bb4fc8a6ca5406136a0dc141cc3d83849fb573068c15bec93da89bb86645cb4f38ad35b624847b95644442daebc423a0784386100bd7cc39972170656a6c35514f6c13cb60ccebb20402d5121cda0f4d034273eaa9a2d4c031d115d44c60e03a7ecb76c19bf1ce405a236da1be768a5b6f24cb556ca030eb495a5301e53173dfd3a4a022a0cf66400fb66f0db128558419910247e4a7bc23cb030d09860f774a0c477df529527e599b546c3f2db5a114d7558fd87769977a6e10068c00ca46b86edfd491b3f806e7e77eeb4240c06c596325775a1ccee93b5901024c3cc19d00b90a2d7754f78c1741d1b0b64931c3f72d236c4835cac50bea4f3797c4b5989114502180d0280ea6529f8b4b3b91a28daa8aa5f71bd7f8a9dbc99e80c08ac0c1bfcf7b3f6e919eb316009d0a09092c4d170b0131d66f44298919f210578478b8c32081db011d7794c3e41ca52585aa180ad502cb54a42c4c1a5cdda29240da2bbf95517643727bfcc9087214d94bc2e61a61bbeb3037812ecee67612bc81932329dd4b492fbc6bd7db93ec5b21e0480a3a76176cfc8291a7a18c4a69907667c3b26ffa021d816230ec77184be7a79c8ba3e5e2aef601a87cb9c145b91ec595b521b35d8d133f3b063a8e803264bc86d374ac464cbee889c911cbb15646abe3e11b9bb79aa0b3c5a1e1ccff45b5a4e9cb1fa27412ec7001913ca3167888aa896b57a61936ac8810204b87037c9a93203c369b947ff6fcb343e2a8bdab6c5b28c277e1983da07a552373e3d7143e205664b9c214a12ac1b19fccc01123eb929090b161e208f4055ffcaac88c4462fbfb42aebc41178999176b54d84bc0006750a3a7676b47abf03076c16b777207509e627ef4604f64f94230a40871ebc084817a72f0596c24267bd70af5454f18a75d20873b53e2a9e9b066df9456ca2c91ab1a0a4efb3713cb8eaceb196a42cd9e05cf91bb460cd869f927c0387aa8d7f52eb0f8229ad67681bb1f16bc8917ca14b0100364aa1cd8454943908067f38baff01220c17a4771c7ae20c958e58c36e34c04377cef987af54b3f1098482be8ab4980cf4b26a29b431769b4954b6b4f1a3cc6bbdc8a3a30b391a891399406e027462947463ad8315ba00fabd089fb02b756a800f00777b7094b7b8b545c9c763b2167cc860c9c649c8468b1f7ca79ba2a876f063d4f05b3333a8681517814c5703687272a2988275c6e42906318766daee59faec1629bd3902e051c98acaa83f72d9c91a6b891043675a025ebcf0ef31c521c69955bbfa53a502595c4c74905e362968841a5e9ebb9f7c9119ce92dc0a7bc5f27a3e4877c2d15cc848a9e83b37ad29454afc1900e978979db98b5c77079377701f138d894a712f83a48470ec53536ac4285f3346e5f11265f55169c104dd128829a264897645535a3ad31a523640849f32282a76108918350d8f8432babc1d8f5c7a7f537862b28d8e1b2e6b6c7c4870d03d71f40b65a736203ed6216a1ca070a0c3d75ec75973b54f6a236ea967f552b264bc53f2e57a90ff6340700c333bb560261a67a67cbbe1032cb58304d550326896583e112078229ebf8977674c5f790b208c37cb3a13cb63b35edf082c9f0ab4c9949b3da2decd01df10867be816dbb32aa392bc797b037a0d463299b87f241abc54530fce00d7af479a2b60c0da08c07d3baf57892d4da18496172adc85ab80184078c7b51c20bf703028aca83585a4a806736278a3d765c640c0cae54fc36f4694149961202e3bcab769ce6dc88be13b331fc8c6e03066cc92680bb5ec4292766a5827737a197940676fcbc79e2aaf527a59f640b52949a1d52cccbb220f73aabf8493c05b32736284c97a0c910146f41874692968a220739037a3bbed45b5ad43d5c9013356bbb0eec1b562664844aa6141793df4b8f851b03b17c91e1574c2a2153589a5813566012d6313782cc0b94995ba79a75bb1c855a3d3571abe067ab507051d2ab5b343b0903d410ee801cb4310da430609a858073311e5015cc3b80ad06a63a9301475dd1004526a3d257b51327b1c38824aea132454426b5e1871eca6375726ce72a2c6b9c31b7eb07961c4328e47cdf5b05f1076cacb5ac9b516ae2218680930d66cb32c8865a1f03a6afd9ba65e3284ec56f78ca30aba62ecc02066ec23afe2826d0bca4a2477510e7a8ada4213303cbd61c2c47f1a371c2a159b389bf7544f607abee2a8dcef08583765f016784f86169fb2bc0018a0c3db72aa8dc1111040420d76bfc290aa4e350b76b23f736610f99c9196a3b30bab3b284825e3c963f548105a459bcc16ceefa5f5b3c7a13a3173ad57520e847196272f2fcc6983b8157d47dfa814bf569bd89652bb5a46d353791b6a0a961b516b0c631fa8542ef10a4fe03aa7d43419dc09951dc798d4929e1037f46f980c43c684dd95a9ac691ee3a98bb8b6f1f575c818314fb5a68c2898b8b69561ba134633aa50fc6964231b5cee273ca0c29fc830a196ab9873278101243b26a330ab806e3e88d42b15232917a98a033f796b6e5c92f7d36ba257623491b44d0171b079a1191491e1d4549b8b87177b7cc427c4e39061df61190313220c611054d0bbbd9e16674b5c84e83ce65316027105dfb667916f1caad32c9c066ba363aba111a6811d41d7862a45ed41b7e54cef3fa3c08b0a297e24bd6436e8f8492ccf7ae99613a604570e7016ac9a3a8b930245704659959afff2bad4c95a6e30b910023be629a08d6ca6f23877808b0a317fc65de1b990b07640adb5b124bc631d82ab7e1b9f6494fe8a039dbb5c6b6b66c0cd54dcb2016944c2b9e46bbb3a8acd190a3356377c9285041081b5f959e13586758d036c40aa40bf40ec6f01246bcaf492b5f289979587a69ca0cb889aa5524c3bf0b503b2ae4970ecc66bc0c7b1aa7ca0a20b2949cac4fb561cfcc4c76433e58eb284a86368da96872492fcc50277742205654b7bcb624287c8cd13400ef876498c1c7e30991e7753db219cafdd62c07c89f7eb1734d4011150b1841271d6d648144fcaaed2745e30948680a54cd83ab91f3ad102cc1bac8a43859379a3c128f572589ccca085718a7e4cd0ef8cf8c157573e58f060f3f25546ca5e19f31959b9b2bfc77db7d686c9fbee0e9c73c94bfb05a11d81e3e390e00ed9db63c6d8501855323992f30282d6a1f10ae17d863e90b5f0e82d4a37035883ac3fe2bb01246f4c0b2b29f4c21f9", + "server_login_state": "92bdf837d09b411f74e5d8cfcf5f337014b6f1068357a4f2218dc7837b68fe55c2013e85c2c4907894c9a5e55cce238e5819a28c47d01d3271caaf6893973174cab362b1fba4870d2d4f865342061676b3fe333dd33c0aefd4b7d489a1237b55862b28d8e1b2e6b6c7c4870d03d71f40b65a736203ed6216a1ca070a0c3d75ec75973b54f6a236ea967f552b264bc53f2e57a90ff6340700c333bb560261a67a67cbbe1032cb58304d550326896583e112078229ebf8977674c5f790b208c37cb3a13cb63b35edf082c9f0ab4c9949b3da2decd01df10867be816dbb32aa392bc797b037a0d463299b87f241abc54530fce00d7af479a2b60c0da08c07d3baf57892d4da18496172adc85ab80184078c7b51c20bf703028aca83585a4a806736278a3d765c640c0cae54fc36f4694149961202e3bcab769ce6dc88be13b331fc8c6e03066cc92680bb5ec4292766a5827737a197940676fcbc79e2aaf527a59f640b52949a1d52cccbb220f73aabf8493c05b32736284c97a0c910146f41874692968a220739037a3bbed45b5ad43d5c9013356bbb0eec1b562664844aa6141793df4b8f851b03b17c91e1574c2a2153589a5813566012d6313782cc0b94995ba79a75bb1c855a3d3571abe067ab507051d2ab5b343b0903d410ee801cb4310da430609a858073311e5015cc3b80ad06a63a9301475dd1004526a3d257b51327b1c38824aea132454426b5e1871eca6375726ce72a2c6b9c31b7eb07961c4328e47cdf5b05f1076cacb5ac9b516ae2218680930d66cb32c8865a1f03a6afd9ba65e3284ec56f78ca30aba62ecc02066ec23afe2826d0bca4a2477510e7a8ada4213303cbd61c2c47f1a371c2a159b389bf7544f607abee2a8dcef08583765f016784f86169fb2bc0018a0c3db72aa8dc1111040420d76bfc290aa4e350b76b23f736610f99c9196a3b30bab3b284825e3c963f548105a459bcc16ceefa5f5b3c7a13a3173ad57520e847196272f2fcc6983b8157d47dfa814bf569bd89652bb5a46d353791b6a0a961b516b0c631fa8542ef10a4fe03aa7d43419dc09951dc798d4929e1037f46f980c43c684dd95a9ac691ee3a98bb8b6f1f575c818314fb5a68c2898b8b69561ba134633aa50fc6964231b5cee273ca0c29fc830a196ab9873278101243b26a330ab806e3e88d42b15232917a98a033f796b6e5c92f7d36ba257623491b44d0171b079a1191491e1d4549b8b87177b7cc427c4e39061df61190313220c611054d0bbbd9e16674b5c84e83ce65316027105dfb667916f1caad32c9c066ba363aba111a6811d41d7862a45ed41b7e54cef3fa3c08b0a297e24bd6436e8f8492ccf7ae99613a604570e7016ac9a3a8b930245704659959afff2bad4c95a6e30b910023be629a08d6ca6f23877808b0a317fc65de1b990b07640adb5b124bc631d82ab7e1b9f6494fe8a039dbb5c6b6b66c0cd54dcb2016944c2b9e46bbb3a8acd190a3356377c9285041081b5f959e13586758d036c40aa40bf40ec6f01246bcaf492b5f289979587a69ca0cb889aa5524c3bf0b503b2ae4970ecc66bc0c7b1aa7ca0a20b2949cac4fb561cfcc4c76433e58eb284a86368da96872492fcc50277742205654b7bcb624287c8cd13400ef876498c1c7e30991e7753db219cafdd62c07c89f7eb1734d4011150b1841271d6d648144fcaaed2745e30948680a54cd83ab91f3ad102cc1bac8a43859379a3c128f572589ccca085718a7e4cd0ef8cf8c157573e58f060f3f25546ca5e19f31959b9b2bfc77db7d686c687bef14177a7ae8adda3d39ece25557fd11f3e3c0c7858736462ba2ed505d4c8f6cbfacca43df717638a048a4f2a75bb0e67a1a7fad9fc35c0a611fe9d87e3048f9ce636703c9bca8877f016d9175c8205cfa8521ba8f1cbb2e0db886f50a84f3860410cac1059c762ef159823fadac92b02a418822c4713a1146a5f2a05fc57b52d32af468d969802b30596edc43279fe8166f9b210646c34e552bbb1e4ec0d5881c73c2363d687f4d05406c45ec88387f118ef3fef9109ecabbe09d59fb585f4dd0de6b426a7b6e5c2324f23bb119b196c9e3edb5e951fa4a6d6e6d89398c29190e7c14da898ce8d0e06f21964b162d85b0d6c0fe83c9f212bf3bd08d9af731637a13b776144dea2831286f9a5092c763eaa82191a0af06012417727440e36343dcaa6f2514ca5586cb472c0b83be38cc11454dc7759e661653f0e446c13b885877b21584192d87b8f49bcae01646297ffd91e643579b5d70fdf0567a3d902fe678cdb3ab5f2c5fa0a6b51ceae7961a69214e3a6ee6fea5ec564137067cdbf516c5e7439ba9c5e3cc3e1a303a048703416c0a68c440d9f0e8f394c2d972fb7f7a22d5f76abe2d7bfa6cbda3bee59e186faa0b8946e52b407b9d58554efcd01b4ea5a51d9f331fd602fe383d0659b24a9cd5dd55e1dd5a929d10d163d32fcf017f63cf441d4d33095c896efccf15d83a7ce82c8689f2c3ce7c1eced727c892fe3e0840aa0a41cd783d58ad213c84c0903f6d5666107a56df53ae90053bb67e37fa6ef8bafbc697c410b88e811b82806a25d0d0d37ffb11acfc4ec820c54bc75401a63f1ae4af15e99d6a97cd0893061d50f05797de0b8c2a3f6929aae286c31b2265bbe0c36c304a1c16c92d5396c224b314d478a90eef94a7ba4506432a5325b638fc33c01513e583d40b93505dc3e9f435a26665212416974db46a5098c449253b1a7d97e040753bc47a547dd0906ed547b77dc5bad8559b07b7e7986e1166b73ac35af1b5c55ad1c79c168b89fc7f39b5552605f6249bc8860142ab4df2480425d537282b6b6e06211975bf9f1992a075dca94f474b0ca6532c7265170d659dac23d01eb04e33e7c6b17879397239f28cfba4ae71cf318586a3dabbf0de151a3f0e5cd41dedc89ffde4392067aa5c19c85709b1dc1d8784ed703de0c457a710e9cf4b21af4a87cf19a4af0429c77727614a94b15013de03073fa0d8582f86dd30c4d6b116b2298c4cfb10ad33f42672ff9a3cf72992a647e21a1fc0f59845b3f3e656cf96b240d3ab7fea3fbe751213820b8aee7aa528ebadc5ece10243da651b30b262e8a3b64abffa690effaf3342aa7f69e2727b82cd9422c59b07cb6dea471c9bab906babe7a1ebf9e8cdf85bddbe94ad09cfe99a4fce790381507445167bf13633147db2cc6d77b076769b8361d97870d1919166264639e46b60e7a177c0c5db5c163710dc80cf2c47e4ad9a508d4b4c399ac3cd4b9580af45c7443ca094d1e9a3f49b5bb982f00d08104b019136c4ca64f6c1af7457ff008010ad", + "password_file": "022557a33e7a3d817565691e63681b2c1fd3318671fb425d969c0db56c0faea373c7230f4290ca033fc2a951e725dc82b88873454f6c4dce89561f6d8751b956b7659a33ac3461310e2e906dc06c4ca93aeff153505fdd3fd3c67acd48de26016e293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd278f211ea834930e202cfb2803e657a88179f1146718593d12775eb37d784d942233a4f465b5edc060c7b8a487f7ac89d3e", + "export_key": "7b77421427b852abfe67401eeec34c64e14f2db61e3265d6996d6815f4e226a13ac9d00c3436d59ca56adf84fb94d017", + "session_key": "92bdf837d09b411f74e5d8cfcf5f337014b6f1068357a4f2218dc7837b68fe55c2013e85c2c4907894c9a5e55cce238e" +} +"#; +pub static TEST_VECTOR_P521_TRIPLE_DH_KEM_P384: &str = r#" +{ + "client_s_pk": "031c1bad5951cf0487c6ca5c107e0df205e4eefed0a057eb4f14fed0cff3a9f726023dabc398d4661a8973a2f9722affba", + "client_s_sk": "293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd278b5c3274987a1242ba496ee3dc989f8a1", + "client_e_pk": "03fd3751c53cf2abea2cd75d7176ebfb27a5d5e59534c82eff5aa28a93b27e8d888e69e9c55f017651a9d1f71d25ec0308", + "client_e_sk": "883ac3fe2bb01246f4c0b2b29f4c21f9518ca1bcfc7a11264107e941c0e3558767eda7090cfa1824ae66e65a0425fedb", + "server_s_pk": "020cd5cd54c93602a83258504bdab51d3e7b344245e7e7f54c59463960262db29d8c4a9330ef9c0f9ffd935af15e4aee45", + "server_s_sk": "434fd03b8290b8ad9086304c96e8ff2f4b8756948ac9c8afe9e38891f3e104b96ad8aba1e5a9a5ce0a1b1f78eeb4326d", + "server_e_pk": "023707c59cfaeebe33c7b02841078094fc2e9728ccdd6ce9b745b6090c14f1a5032836ef929e8e841e18ae3715e28a1c16", + "server_e_sk": "d9ca86ea208a70a74d092f85b79e8568991cd8cd72287003dd3799a4f7ab08def51d8da9275dfa6163c352edb126751f", + "dummy_client_pk": "021f69e910163a2f98b252f02ad17058534eeccfeb5563e636f61e80036edcf039aa6edf64a100ba5189a0664f88e51aa6", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "01bc987569861b10c304ee2dc706c599bd22a432dfee79cc3ecf083cc3985a9902dcbcf0f713f31e63cac69b874050e173a698ce67054fcd12b0cfe20796553919e7", + "oprf_seed": "98e3f3e430864ade512adbabf1f1a0dd698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13c8d9932a0a851f23ac477302256daa97", + "dummy_masking_key": "45a55e695ae3047db1d1c901ae30bedfba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52ea4a4f65a42b4181ffb2b1f907b68b1fd", + "masking_nonce": "fa3effbdef9513c06e6f215a5cd525d12488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ffd24b9eafc0924c0f66523516c74f6042", + "envelope_nonce": "5295a857618fdd85d35f62a1b482e182b3128efa21e976075260a2c2da2dd98e", + "client_nonce": "0cf8505dcb05f4e44c87ca6858f2123816a8c3715be95c6635e1035848bb190f", + "server_nonce": "27736bcbe9b69fbde386e0271708da5bd198aa66d474460a0959f960309cf180", + "server_sig_rng": "439288da0e67df1ac388da3984197d4d98e2b63c2e9e05f5a976c845cafe467b2655bffaefa6559cb38615edae864dda", + "client_sig_rng": "63cd88f119e401930b6ab5b35396841bd3fbb2355b374a218ee6517bd59419472ac6070b06ebb5aca042ba996884e949", + "context": "636f6e74657874", + "registration_request": "0200e6f09e77c9d0a2040c60a09c160fa17ebbbc316b46c42334dd3f7d674761269b58f3b3c396bf79c54de684b83c5d00208605900ccfb8b55e66b78fb9ee0aa96b69", + "registration_response": "02000dd99c271c6146e9f7a71795fda9af0a74c6e0e306971d1cb61137eef8f0cf452eb715a1081cf089c4e007240334bc94ed737b865bb7461126676797f4b128d80f020cd5cd54c93602a83258504bdab51d3e7b344245e7e7f54c59463960262db29d8c4a9330ef9c0f9ffd935af15e4aee45", + "registration_upload": "0278b6ff326ae2cf4cf2ce80e50e74089804c77f1cc5adfdaee5271958fefdae1dc2270f16e3315060fe34ebebf40008f54257e57528269b1a8bfae32269dde22124779efd4fd4870aa3ef110a432d2a0dadddb5bfff4bd990209caf8b9d66afbe7f4d9323e7d2d8f80d38305e3580703e293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd2789493f80102070246cc859bb5108ff804e54dcb4b9df80937a3efa7e7cec3691f17af4590a49de9a1d2e2bce56fe7dacae12c6cb692cadc75b86e4ece8bcea5d1", + "credential_request": "0200e6f09e77c9d0a2040c60a09c160fa17ebbbc316b46c42334dd3f7d674761269b58f3b3c396bf79c54de684b83c5d00208605900ccfb8b55e66b78fb9ee0aa96b690cf8505dcb05f4e44c87ca6858f2123816a8c3715be95c6635e1035848bb190f03066d532e77b6252310cdd18b46f9553619f868029bbd1a4cd6cafb709e09a8089b3a77fdc740bcc1aac74e3eced9015ac35b2c8b4020e1c337a1059cda5b2abd46b7a1c11334173263b5a879d5052b9c6dc5849236821dec9a93dec9a958f79322c02739abbb117755f9f80266a75427278b5032c284a347be251b7a111e08790eef147118a66a9d05b56ab600e5d959dbe4199e5a474d922bfa442acc057872e314df19ccf609243276b2636b8d11283af294224ca40fdd0ab18e8a7cd397ca3758231d916ec398cf37584ebd615887d95fc2ecaa394a144a757ed151b76bca774ea1b80c48bce42bae7efc6c9836612ae3ae656bcb5f0cbb006d32dd5951ebd0901e96ad2a50c461c90d4c3817ab6cccfc84cb3788b563969a6a26cf37cab3277a5438ca58e5769148b383fa6b6cca9a0d26c7a14793416b54298db8478a47ca09748d97a7231794ada3c629f72b8f7dd45c2c5781b9437d53e9a44727b3136ba3b7089512bb4312f4b7d29309e1e713d9fca0a3f78439a093f9a128199c2444b3371a36a367cb9312f09c6cd1156fec77a771814380bd3161554c0a26b0c6bf56eb6062468416095f8d15930cf9b4aac609a4a62ca35086c76417f87c766c799bbcb89a795496cf73a897062008231450215785025373c298f1374a97453926038966146882b07d3d8012cc4ba916bc4fbed581ce288b2e797222cb165e650063274caf682e2af26a09a97655d373795024c4c94508c8bfae8523883c77bc378a90626e1777cda227305836ca173143087250399b5fb7c38de58a2c866221d19125fa3a4f6c7c7cdc805a8cc27146e079f8d67d34316679225bc9bc5541595de7252e866c711921c1f006b1121c010cd95c70978eede93ecb8b6f8e72b02f67b3bb8c07c7742a0c910de88c0d62f963d90281ec037556d2cfcc034611536b717c0ac24265d7913f0755adcf905fbdea73fc7b7b70e74fa5611c3e44a357592d7849495e7cc39338296dc30e5119a1b627b16790263185b9e9cb69329454af0b3067123514a3c1356761d8243457332f7c07549973673a32396dd257e23b8f21204acba82ed76280bee9430de6606329461c1146a1405237f12db2305707975c8a533b2dac3da258ba116ab5dd11b2a42907dd274ea01c3400630f278c053db80a6411005609356dd78096486960bc96ff63814d5bb10999ac65001d2b9c86d2e146a53a722cd990e47c4c804aaebd106eb17c82944368dc1b972c0b6344a49d2ca73137f25fe8796d3ec223d24a52324197f8c4bb0d2ab9b3a7512c697d0da992fde16def4bcef5232db72bbead31c168c27c59c4478f304a0a149bfd10ab7e09ca79121a1fc7a7cec963d22c6cfcda4e35d2b4d9278f298854167781fc311cb698500324b184947c731439fd4a9edab044e6cb9d1aeac2723c79a4bc4a29a647bba9265da53694fac744b7ce25747238911e8b78c388980072b11466d00ce7e98dee386659b84551f6adaa228cd8e932a26ab8f34144ba126cb7e04fce145ba2e39715386fd9056ce3c861524b48ed8030676b30f46b937b71a872c6aa91c76026d081ce041957d028ce29016b9251dd4243c3860ffd57b0bda5978d5b1122181fafc89e6110281c24504fc508cca269b57438d8ab288fd2bbbe964a0a088fb911387fc84db577b2b3275a1b71a30ce5819b39b8c74ffa6e5e40accb410d77ae8817e413360272926f22b23def20", + "credential_response": "02000dd99c271c6146e9f7a71795fda9af0a74c6e0e306971d1cb61137eef8f0cf452eb715a1081cf089c4e007240334bc94ed737b865bb7461126676797f4b128d80ffa3effbdef9513c06e6f215a5cd525d12488cae978cfafe2d8f8804d73dc87094e94abc709d942b05c4aab0a2dccfb564d060d5f77748ae8cd82f61cbf09c52522a1412aea8dba0531766e7513b297af97a374207ab8440c7d0e7237e85f5e3ad66a5740f38532321fd495faaa6419390ffc3e51b624df1dd0e32fb9d6a61117e2a0722a093725ce4eb0bee6daa509a0018bc190ed4f3b5b6d2905c0b0397224772d654252dded39845300430c9a6a1c09991cd8cd72287003dd3799a4f7ab08def51d8da9275dfa6163c352edb126751f02f8d1676dd6f21575a6a23e8dcec8f55bc71db42aea079e92dceef59748b528947e77bc6b028ead251223174b2770c1aa147425f01c2b7556370cdb34cd13d37441f3946608cc26d7e3d8da196d084939e62080b9be82fb806bacad0c5cc51c4ee66e17b386fa77fcea9120debb819d329acf18f582ffbb07b86151f20ed8b77a7bf72ea12ba270023b9f88ea9cc9988583a8936667615396e21ebd25df58113423b57e71c918121f822312f122c63a96a2a728958dbeea96f102bb12d4729b00e4444594c036be66a16f63f8551bd583b96d0d2029b3d3554620fb825e2984824ecad24fbfcd450300be26e0768429c1c97041141617f8cc545f2cc0ff958206c67f40ea888dfd36695ecce47c0f88a8e4c86aee682f224d13afc90419c3a5c7d50d40efe650159fd570a7b4988e323800dbd4e404f37ec8d021eda32d4c74723f63af2ccef6f8328af5a42bd02a1a761cc205eff13875a97358e28729006dce363eab09a7421742f5323c5dff85fe9db3ce6f292aa5c3fe5b9eb5826e5c8359801191ce60326e8f1e9ecf5c5556e407a0bcc9788faa2cdc1c367e5b92a73a85aa8c3ea143415392de6c2096d071b373269bfbf5578311efe828e0b6f57aaf5a35ec364c5d1ee6471c8e2de6e6eacb8e65019bdcab198581e1ecc55ad3166123133717aa3b05f3b9b73f0f230d29f9a1b632b91079da4d45baebed10d2974e2f7a34e9faf10bd323ef72f6e757272e83a33cda747c272d744b0ba0e37448f2b3c596f4102e0860e7a91d9bfea4b90cab8ff7e2dd9fe64d8d67acde7fe73382c2ff0ca88891bac2e383ef62a17581b1de39b84a3748df2035268c2e48262235b5af46b8423550d2e0a85ebd10608b1f5e7d64db21200b25d73668a2354f784f9341bda3014cb1d0ad1d04ae46a826a70fe221351f08d2afe7f19dd4cefa5119f2060f69e303c8208575f768d5c8a31d2cecade2104dcadbf8d72ccc76efe891896a1878d2f12b5218638a00a2d5bbd034ebab0694a5c3c6cea1f9bec9d19b54f8895693af7b7d0153bee57526935ed67ce154a7c2b6df4186e9925bd1a6cb87d386bc0f87f260b494907542dba9cdc890660f6f66d477935359ab0369c3454db443811812b030c4d6445b04e46107ee25a90b206e7662e43c837a83cced312dd903a8f921f6a7e2efc7d4700b9f05f031779a25f6b954c12a130bfcf250d58673d9447b2e7bac4a9cd8ec999008e6b6586557741af940b6de8327ca2dc15970208ab7e1497455030f087734567f4ca6b345fccdb311e07c3bdfca081af1a5446105872f4d9185186c7b62472a86209774f7a216c0fb0699d05f0c43f5b41199dde6826bc66490d968c0ec0c5da2fa6146778629aa4d5bfb8390ee80704257449ffe9e1c8c4e316c0f7012c93a122d495e4a1c187d8a0802d30920f0ccd48c0a81a8c7622fa17d452a928f184758717870d5f07f2202654e4c9a157e85de62763bb6b9a4095a483f02e73717bdb24f26d4b5a4e936d6f8e620e9f9c94cfc8e670861e013c4ae2ecb40a2c0128c3f63bbf0ca9329b96b622960a00835dcc0eccdc9d515a2d6ea318e4c856d107193eca33d24ac1636c84c3c8b4802532f4648292a26631c94e269ad4d31e6dcf60cca7d406c997fa7a27f960acaa5e8f767e157d0", + "credential_finalization": "dd12c4848ad648875244e0c615f46f3ce7a42de8316821da47cbbf0f22e22fd2be942dab9f03421ed1a126b14f55c3af", + "client_registration_state": "01bc987569861b10c304ee2dc706c599bd22a432dfee79cc3ecf083cc3985a9902dcbcf0f713f31e63cac69b874050e173a698ce67054fcd12b0cfe20796553919e70200e6f09e77c9d0a2040c60a09c160fa17ebbbc316b46c42334dd3f7d674761269b58f3b3c396bf79c54de684b83c5d00208605900ccfb8b55e66b78fb9ee0aa96b69", + "client_login_state": "01bc987569861b10c304ee2dc706c599bd22a432dfee79cc3ecf083cc3985a9902dcbcf0f713f31e63cac69b874050e173a698ce67054fcd12b0cfe20796553919e70200e6f09e77c9d0a2040c60a09c160fa17ebbbc316b46c42334dd3f7d674761269b58f3b3c396bf79c54de684b83c5d00208605900ccfb8b55e66b78fb9ee0aa96b690cf8505dcb05f4e44c87ca6858f2123816a8c3715be95c6635e1035848bb190f03066d532e77b6252310cdd18b46f9553619f868029bbd1a4cd6cafb709e09a8089b3a77fdc740bcc1aac74e3eced9015ac35b2c8b4020e1c337a1059cda5b2abd46b7a1c11334173263b5a879d5052b9c6dc5849236821dec9a93dec9a958f79322c02739abbb117755f9f80266a75427278b5032c284a347be251b7a111e08790eef147118a66a9d05b56ab600e5d959dbe4199e5a474d922bfa442acc057872e314df19ccf609243276b2636b8d11283af294224ca40fdd0ab18e8a7cd397ca3758231d916ec398cf37584ebd615887d95fc2ecaa394a144a757ed151b76bca774ea1b80c48bce42bae7efc6c9836612ae3ae656bcb5f0cbb006d32dd5951ebd0901e96ad2a50c461c90d4c3817ab6cccfc84cb3788b563969a6a26cf37cab3277a5438ca58e5769148b383fa6b6cca9a0d26c7a14793416b54298db8478a47ca09748d97a7231794ada3c629f72b8f7dd45c2c5781b9437d53e9a44727b3136ba3b7089512bb4312f4b7d29309e1e713d9fca0a3f78439a093f9a128199c2444b3371a36a367cb9312f09c6cd1156fec77a771814380bd3161554c0a26b0c6bf56eb6062468416095f8d15930cf9b4aac609a4a62ca35086c76417f87c766c799bbcb89a795496cf73a897062008231450215785025373c298f1374a97453926038966146882b07d3d8012cc4ba916bc4fbed581ce288b2e797222cb165e650063274caf682e2af26a09a97655d373795024c4c94508c8bfae8523883c77bc378a90626e1777cda227305836ca173143087250399b5fb7c38de58a2c866221d19125fa3a4f6c7c7cdc805a8cc27146e079f8d67d34316679225bc9bc5541595de7252e866c711921c1f006b1121c010cd95c70978eede93ecb8b6f8e72b02f67b3bb8c07c7742a0c910de88c0d62f963d90281ec037556d2cfcc034611536b717c0ac24265d7913f0755adcf905fbdea73fc7b7b70e74fa5611c3e44a357592d7849495e7cc39338296dc30e5119a1b627b16790263185b9e9cb69329454af0b3067123514a3c1356761d8243457332f7c07549973673a32396dd257e23b8f21204acba82ed76280bee9430de6606329461c1146a1405237f12db2305707975c8a533b2dac3da258ba116ab5dd11b2a42907dd274ea01c3400630f278c053db80a6411005609356dd78096486960bc96ff63814d5bb10999ac65001d2b9c86d2e146a53a722cd990e47c4c804aaebd106eb17c82944368dc1b972c0b6344a49d2ca73137f25fe8796d3ec223d24a52324197f8c4bb0d2ab9b3a7512c697d0da992fde16def4bcef5232db72bbead31c168c27c59c4478f304a0a149bfd10ab7e09ca79121a1fc7a7cec963d22c6cfcda4e35d2b4d9278f298854167781fc311cb698500324b184947c731439fd4a9edab044e6cb9d1aeac2723c79a4bc4a29a647bba9265da53694fac744b7ce25747238911e8b78c388980072b11466d00ce7e98dee386659b84551f6adaa228cd8e932a26ab8f34144ba126cb7e04fce145ba2e39715386fd9056ce3c861524b48ed8030676b30f46b937b71a872c6aa91c76026d081ce041957d028ce29016b9251dd4243c3860ffd57b0bda5978d5b1122181fafc89e6110281c24504fc508cca269b57438d8ab288fd2bbbe964a0a088fb911387fc84db577b2b3275a1b71a30ce5819b39b8c74ffa6e5e40accb410d77ae8817e413360272926f22b23def203295971b0126407b430b7d632b959262aabaf82644b88da7a16c53b7f6f5a479f53e10cf7c2652777fb639c7d0ccb2c00cf8505dcb05f4e44c87ca6858f2123816a8c3715be95c6635e1035848bb190f879523c66b9f90d38d05c4463f17048b909fbdb43fc10234e9c7708b770741f96954874a4adc92c757620af59b6575214fc46c1ad3949045769faa31807974a87cb36e1203202c822c4b9456b9305ac9250aca6fa419be54c65c977b408b518e9606b8c9f6931076b90d83b8a8f19484d76e5faa091d5c0533c67b6dcaaa3a36b4c0fca13ac4a39a8c6dc1e218448b7ce1302831ac56f9812256c59e54e3b25040ae85a061d9348454d3532e0b515a33a79ebb80b3ea2ab680c0eeeb9396f7ae209c69c17677b731773f8220cd7c0d0907436eec5599e8284145810999c428c3a21e63551c1b788e66aa1fb3b7ac12421eb559fc5a31f05c31eb0c9b1ca0b09860cfff0498018c790863298db32e78492272d5c56b3c993a1164d0c223a930b605630b35146777432079d3918ca65fd3e931fbfc300810881ed58ba685477aa75dabe0b3f682976c1c80c21b181c4c8c6e3b186745411924cb9407156741c542d5a723e9280e798a91465a86735ec5c019da274bd2a0483e38a9d96abcb08326419a7db1a05fcbf001a2cb512d199f0d19c58e77b79ebc9a0262c79ae24e29f83b00da9f6da86af905bf2c354f50133251f2c191f89b4ff5bcfad0c6fb686d04880ef5285f430b37f4ab06bb50243ce979c7c326f8f96b8b967b796440d66c3b8ea1b1a85a82f3924cd268335a6b76a173849bb3ac91c42c369283a400bacb442cf1238ba8e7abd111654882419720193bac463cc5c3335b94e84644932a27eb8ab662371a1e29ccf55755b2687d85e8a745aa46d9cb1597f2347f241bee1ba3a3dc8bfe969c850a1da9e2578d1207e1293ea5e942b6ec7f3f77ad11641791e4bc8ad7147736495e76420138a1d663588222a39ba6501c8cc25ce75c2c8b4f8d16574f194af7707335883d3f35c4ddc42cde109bc4486a9b244690677ea04a27c9ccb682720d195b6dad2628c0394eb350095db1ab5bc359b5ab4eb1435ae5ab27a0888d17b535be5a7d778879102042571454bdd8547db124bb88b70117827a17abba726605238f5065bf0905537358c530d87f88e2a6aea07ef650b5cf4617ec8a0df310849e9b1c88dcc141c53480b20656c643f76834fc8a51dce3cc75f5b5b18a526d363241f749be7a2a94f31eb8a29e9c0c217114438ecc977e2514a5faa83e06ae60a16363b820308807400766d0156bb5bc57277aa6d953aa875b9348b5bc9d2492fb7133c9200024f126bf3c7c34c38a6fa540fdf3a36b9a1da31731b111811fb9beb5f820c01c8864544f0993bd2d1c01d7c17406090a3744669898176191a3522c4604b00c17bc3c5c8996bd276f21f685df4729fe340455221b31e908b0984320c53cb592abc1468121a9a1e7744a66c772920602411b4ad1d14142c743fef32c614824b419007de459374b836d8b6aacf97f3647aa25a010e84c06dc2c7aa1e117eac0acf21996bf827df6939f22a54f6ffa716c38c2f6e7a99a87270112141d26a61a163dc2c3a9c1e31de04796b993b588e9cdcb135668d1520b1884565c49da5cb7ed52b2e6221098762e521271ff47b71c7a1bc01247fb438ca551921e4acd74e73e1aa0c952a82a4a901407947bfdc06edbcb9d0c291bc35b2c8b4020e1c337a1059cda5b2abd46b7a1c11334173263b5a879d5052b9c6dc5849236821dec9a93dec9a958f79322c02739abbb117755f9f80266a75427278b5032c284a347be251b7a111e08790eef147118a66a9d05b56ab600e5d959dbe4199e5a474d922bfa442acc057872e314df19ccf609243276b2636b8d11283af294224ca40fdd0ab18e8a7cd397ca3758231d916ec398cf37584ebd615887d95fc2ecaa394a144a757ed151b76bca774ea1b80c48bce42bae7efc6c9836612ae3ae656bcb5f0cbb006d32dd5951ebd0901e96ad2a50c461c90d4c3817ab6cccfc84cb3788b563969a6a26cf37cab3277a5438ca58e5769148b383fa6b6cca9a0d26c7a14793416b54298db8478a47ca09748d97a7231794ada3c629f72b8f7dd45c2c5781b9437d53e9a44727b3136ba3b7089512bb4312f4b7d29309e1e713d9fca0a3f78439a093f9a128199c2444b3371a36a367cb9312f09c6cd1156fec77a771814380bd3161554c0a26b0c6bf56eb6062468416095f8d15930cf9b4aac609a4a62ca35086c76417f87c766c799bbcb89a795496cf73a897062008231450215785025373c298f1374a97453926038966146882b07d3d8012cc4ba916bc4fbed581ce288b2e797222cb165e650063274caf682e2af26a09a97655d373795024c4c94508c8bfae8523883c77bc378a90626e1777cda227305836ca173143087250399b5fb7c38de58a2c866221d19125fa3a4f6c7c7cdc805a8cc27146e079f8d67d34316679225bc9bc5541595de7252e866c711921c1f006b1121c010cd95c70978eede93ecb8b6f8e72b02f67b3bb8c07c7742a0c910de88c0d62f963d90281ec037556d2cfcc034611536b717c0ac24265d7913f0755adcf905fbdea73fc7b7b70e74fa5611c3e44a357592d7849495e7cc39338296dc30e5119a1b627b16790263185b9e9cb69329454af0b3067123514a3c1356761d8243457332f7c07549973673a32396dd257e23b8f21204acba82ed76280bee9430de6606329461c1146a1405237f12db2305707975c8a533b2dac3da258ba116ab5dd11b2a42907dd274ea01c3400630f278c053db80a6411005609356dd78096486960bc96ff63814d5bb10999ac65001d2b9c86d2e146a53a722cd990e47c4c804aaebd106eb17c82944368dc1b972c0b6344a49d2ca73137f25fe8796d3ec223d24a52324197f8c4bb0d2ab9b3a7512c697d0da992fde16def4bcef5232db72bbead31c168c27c59c4478f304a0a149bfd10ab7e09ca79121a1fc7a7cec963d22c6cfcda4e35d2b4d9278f298854167781fc311cb698500324b184947c731439fd4a9edab044e6cb9d1aeac2723c79a4bc4a29a647bba9265da53694fac744b7ce25747238911e8b78c388980072b11466d00ce7e98dee386659b84551f6adaa228cd8e932a26ab8f34144ba126cb7e04fce145ba2e39715386fd9056ce3c861524b48ed8030676b30f46b937b71a872c6aa91c76026d081ce041957d028ce29016b9251dd4243c3860ffd57b0bda5978d5b1122181fafc89e6110281c24504fc508cca269b57438d8ab288fd2bbbe964a0a088fb911387fc84db577b2b3275a1b71a30ce5819b39b8c74ffa6e5e40accb410d77ae8817e413360272926f22b23def203903d51752a17f1b8cacf338ecccca9536cc6adef9aa298c18252c2381c3b9e502dcbcf0f713f31e63cac69b874050e173a698ce67054fcd12b0cfe207965539", + "server_login_state": "e04f69dfdb144a0b6ffdb758f956559cf48850243b25501349c6854c5a3116bd50e2e818d1861285f5637dfe8fc8b3a0dd12c4848ad648875244e0c615f46f3ce7a42de8316821da47cbbf0f22e22fd2be942dab9f03421ed1a126b14f55c3afc35b2c8b4020e1c337a1059cda5b2abd46b7a1c11334173263b5a879d5052b9c6dc5849236821dec9a93dec9a958f79322c02739abbb117755f9f80266a75427278b5032c284a347be251b7a111e08790eef147118a66a9d05b56ab600e5d959dbe4199e5a474d922bfa442acc057872e314df19ccf609243276b2636b8d11283af294224ca40fdd0ab18e8a7cd397ca3758231d916ec398cf37584ebd615887d95fc2ecaa394a144a757ed151b76bca774ea1b80c48bce42bae7efc6c9836612ae3ae656bcb5f0cbb006d32dd5951ebd0901e96ad2a50c461c90d4c3817ab6cccfc84cb3788b563969a6a26cf37cab3277a5438ca58e5769148b383fa6b6cca9a0d26c7a14793416b54298db8478a47ca09748d97a7231794ada3c629f72b8f7dd45c2c5781b9437d53e9a44727b3136ba3b7089512bb4312f4b7d29309e1e713d9fca0a3f78439a093f9a128199c2444b3371a36a367cb9312f09c6cd1156fec77a771814380bd3161554c0a26b0c6bf56eb6062468416095f8d15930cf9b4aac609a4a62ca35086c76417f87c766c799bbcb89a795496cf73a897062008231450215785025373c298f1374a97453926038966146882b07d3d8012cc4ba916bc4fbed581ce288b2e797222cb165e650063274caf682e2af26a09a97655d373795024c4c94508c8bfae8523883c77bc378a90626e1777cda227305836ca173143087250399b5fb7c38de58a2c866221d19125fa3a4f6c7c7cdc805a8cc27146e079f8d67d34316679225bc9bc5541595de7252e866c711921c1f006b1121c010cd95c70978eede93ecb8b6f8e72b02f67b3bb8c07c7742a0c910de88c0d62f963d90281ec037556d2cfcc034611536b717c0ac24265d7913f0755adcf905fbdea73fc7b7b70e74fa5611c3e44a357592d7849495e7cc39338296dc30e5119a1b627b16790263185b9e9cb69329454af0b3067123514a3c1356761d8243457332f7c07549973673a32396dd257e23b8f21204acba82ed76280bee9430de6606329461c1146a1405237f12db2305707975c8a533b2dac3da258ba116ab5dd11b2a42907dd274ea01c3400630f278c053db80a6411005609356dd78096486960bc96ff63814d5bb10999ac65001d2b9c86d2e146a53a722cd990e47c4c804aaebd106eb17c82944368dc1b972c0b6344a49d2ca73137f25fe8796d3ec223d24a52324197f8c4bb0d2ab9b3a7512c697d0da992fde16def4bcef5232db72bbead31c168c27c59c4478f304a0a149bfd10ab7e09ca79121a1fc7a7cec963d22c6cfcda4e35d2b4d9278f298854167781fc311cb698500324b184947c731439fd4a9edab044e6cb9d1aeac2723c79a4bc4a29a647bba9265da53694fac744b7ce25747238911e8b78c388980072b11466d00ce7e98dee386659b84551f6adaa228cd8e932a26ab8f34144ba126cb7e04fce145ba2e39715386fd9056ce3c861524b48ed8030676b30f46b937b71a872c6aa91c76026d081ce041957d028ce29016b9251dd4243c3860ffd57b0bda5978d5b1122181fafc89e6110281c24504fc508cca269b57438d8ab288fd2bbbe964a0a088fb911387fc84db577b2b3275a1b71a30ce5819b39b8c74ffa6e5e40accb410d77ae8817e413360272926f22b23def20e66e17b386fa77fcea9120debb819d329acf18f582ffbb07b86151f20ed8b77a7bf72ea12ba270023b9f88ea9cc9988583a8936667615396e21ebd25df58113423b57e71c918121f822312f122c63a96a2a728958dbeea96f102bb12d4729b00e4444594c036be66a16f63f8551bd583b96d0d2029b3d3554620fb825e2984824ecad24fbfcd450300be26e0768429c1c97041141617f8cc545f2cc0ff958206c67f40ea888dfd36695ecce47c0f88a8e4c86aee682f224d13afc90419c3a5c7d50d40efe650159fd570a7b4988e323800dbd4e404f37ec8d021eda32d4c74723f63af2ccef6f8328af5a42bd02a1a761cc205eff13875a97358e28729006dce363eab09a7421742f5323c5dff85fe9db3ce6f292aa5c3fe5b9eb5826e5c8359801191ce60326e8f1e9ecf5c5556e407a0bcc9788faa2cdc1c367e5b92a73a85aa8c3ea143415392de6c2096d071b373269bfbf5578311efe828e0b6f57aaf5a35ec364c5d1ee6471c8e2de6e6eacb8e65019bdcab198581e1ecc55ad3166123133717aa3b05f3b9b73f0f230d29f9a1b632b91079da4d45baebed10d2974e2f7a34e9faf10bd323ef72f6e757272e83a33cda747c272d744b0ba0e37448f2b3c596f4102e0860e7a91d9bfea4b90cab8ff7e2dd9fe64d8d67acde7fe73382c2ff0ca88891bac2e383ef62a17581b1de39b84a3748df2035268c2e48262235b5af46b8423550d2e0a85ebd10608b1f5e7d64db21200b25d73668a2354f784f9341bda3014cb1d0ad1d04ae46a826a70fe221351f08d2afe7f19dd4cefa5119f2060f69e303c8208575f768d5c8a31d2cecade2104dcadbf8d72ccc76efe891896a1878d2f12b5218638a00a2d5bbd034ebab0694a5c3c6cea1f9bec9d19b54f8895693af7b7d0153bee57526935ed67ce154a7c2b6df4186e9925bd1a6cb87d386bc0f87f260b494907542dba9cdc890660f6f66d477935359ab0369c3454db443811812b030c4d6445b04e46107ee25a90b206e7662e43c837a83cced312dd903a8f921f6a7e2efc7d4700b9f05f031779a25f6b954c12a130bfcf250d58673d9447b2e7bac4a9cd8ec999008e6b6586557741af940b6de8327ca2dc15970208ab7e1497455030f087734567f4ca6b345fccdb311e07c3bdfca081af1a5446105872f4d9185186c7b62472a86209774f7a216c0fb0699d05f0c43f5b41199dde6826bc66490d968c0ec0c5da2fa6146778629aa4d5bfb8390ee80704257449ffe9e1c8c4e316c0f7012c93a122d495e4a1c187d8a0802d30920f0ccd48c0a81a8c7622fa17d452a928f184758717870d5f07f2202654e4c9a157e85de62763bb6b9a4095a483f02e73717bdb24f26d4b5a4e936d6f8e620e9f9c94cfc8e670861e013c4ae2ecb40a2c0128c3f63bbf0ca9329b96b622960a00835dcc0eccdc9d515a2d6ea318e4c856d107193eca33d24ac1636c84c3c8b4802532f4648292a26631c94e269ad4d31e6dcf60cca7d406c997fa7a27f960acaa5e8f767e157d0", + "password_file": "0278b6ff326ae2cf4cf2ce80e50e74089804c77f1cc5adfdaee5271958fefdae1dc2270f16e3315060fe34ebebf40008f54257e57528269b1a8bfae32269dde22124779efd4fd4870aa3ef110a432d2a0dadddb5bfff4bd990209caf8b9d66afbe7f4d9323e7d2d8f80d38305e3580703e293ee84abbda97f2d75a37ee0495459c083a999ec42e7babc9e256e505fbd2789493f80102070246cc859bb5108ff804e54dcb4b9df80937a3efa7e7cec3691f17af4590a49de9a1d2e2bce56fe7dacae12c6cb692cadc75b86e4ece8bcea5d1", + "export_key": "024325afc9704b8db39e70d1e1271f3432bee1156b97140b895c6768453d9ec13ca4d32ba50f6af8e3bf57fdf3383e8b8f131ed7c90a6c537283287dc3025a39", + "session_key": "e04f69dfdb144a0b6ffdb758f956559cf48850243b25501349c6854c5a3116bd50e2e818d1861285f5637dfe8fc8b3a0" +} +"#; +#[cfg(feature = "ristretto255")] +pub static TEST_VECTOR_RISTRETTO255_TRIPLE_DH_KEM_P521: &str = r#" +{ + "client_s_pk": "020021414250e55d25a05bf56a0f7a8baefd1a9102142d33006baab534f3d36c61aad76910b73e90d745bda0d30aac568e52bcb8b203c497b5ab3b1ce426b4b5e9408a", + "client_s_sk": "0191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c383d7efe9faaf7a5138eed7b1db0830d1d93378e5c245862f90d686253752ba1ce3363", + "client_e_pk": "02010cdb74614552df1dbd2028eeaabee3f5f7226f0a200dc661ce1c1143d7402c09c50a8b3b40887fa9324cab6ffd33d9b47732e122a07d06dc7add66cbcb88fdff35", + "client_e_sk": "01826e767f2960694852b4231c7a4b4e5f442ab2a6c7f85a14e0548f035c62fcc4e399f0d2a935c9221773eedcd1ca118561c4d5f01e033638e8c999cf7a4c344dd1", + "server_s_pk": "030007864ac5d5e484396228574ba54b350d05f117d691e7d436f7a42a86b80ca35e7e8dcc2862eb774249ec45ed36d8375fdcfd2bced9e0037bcfbb649c6a0ffc8d2e", + "server_s_sk": "000cd2237f8cc7da2a2b144249df100cd38a7faa8e24da3fb9c6c78ba2ce4607063abd60915020f04278b95ae462e1232d1b20a399d94406119c88b73da354f0c19a", + "server_e_pk": "03019aac00e2d71f7481c86b2fd6e5d322dfada045cc3a08125b3dba79b45e3df28897af6482e8b93c22fadb58d8b5d9b703e0011cf77d3183aa8d97c502e234254ef0", + "server_e_sk": "016efb612c53e84229af489df498156104e2aa18c43dcf5699f1c90cf74c8c3c7df396a733521aafe24d12370e6a34cd41b15e4350d0e2683b998f2415e3f445fd6b", + "dummy_client_pk": "0200b0b6b845945e221270aa5599754229c69d2410bcbb53d620f4262367e9c6f32a0ac32e4ae1ba8a51e970e7aed8e09f312f79ba4ede2bc4189626b508bdcec08d8d", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "6eafbb4b709675bdd22a9e289048b20053b0ac0ab8853a1034ee431cd3353a0c", + "oprf_seed": "0a21aa10667cb3715191792d822015c1b300ea6af2d1c7c429dcb07d8f0f691996306ba315f8221e511ab0f11f71fe4765ab925abafebc92f3d37a1e29965f2e", + "dummy_masking_key": "e2b707a32743af30d4dc07380e746432fd9bb07fd570b12b195efe1c8f39d5d73f87e1cb754cf4908cc6cf1f2856b6fbb9cff0a3e0832db07b0a35b70ecc0476", + "masking_nonce": "0a34572e84579906f0ba6cd403c3962234e974d5f2806aab9953e1ee0efcea102f98027f49cecdece384850929ce9d3b0fd624860acda513da8ab39bc36f7821", + "envelope_nonce": "d7d6ba25df2b8fe865bb2f3a94db41b56d7275384017c033e1a62d5536d39d8f", + "client_nonce": "4239a9fcfccacc5623588c32c0f99bec53243d8963dd7fbcfe8a2afd0034158b", + "server_nonce": "b9a17caddd81307e317cf08e5944a0f6819811e59e571b9c43e891c2c36cf547", + "server_sig_rng": "fc3a80f4112df5e8f5ca154593552262645d524b81fa14e848a6a4787d8a2492321738676224c06444bd18e351fd84348b8ed5c08e3dde4874763fe2eff0e84a20b3", + "client_sig_rng": "7266b0f67296a3d1056cec20cca5f153e55fbffc96b85b8fa86d5b47edb354ea465314ed34786051c54dfe7a8386928e812386cc83d84dc595bc9efd6d82fee5d5be", + "context": "636f6e74657874", + "registration_request": "70426f744606f980fc25b993b26bed3e5b7de20f73b2d17c0d67757581985255", + "registration_response": "7c5dd8f233225c1d5ef7b5ad25408f9c010f0149e456460042946265860d3817030007864ac5d5e484396228574ba54b350d05f117d691e7d436f7a42a86b80ca35e7e8dcc2862eb774249ec45ed36d8375fdcfd2bced9e0037bcfbb649c6a0ffc8d2e", + "registration_upload": "0301af3d14ba5f304c4af480ec7841579f114a6bae3689bb8592fc2cde2b7a77c07bd6ea1ad0c90e88fee416652ade13b124d7ee36b8dc704cc88adbffe670e3bc9ff9278cfd16bb338664586c6d0a0f7eaf309417dce66568b13475ab028af0f2b5c1c96d9e1c4e06d7724ec5a3f9559fabcfcba3c673c9e6f846c3f1aa74042ef3430191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c385843e261f2b8813ed4e7b6b824570581275b0512380953244e66066e7a7049a9199107824f3d041f5e8f9af9a196c39b163b3416dc81dc4f456570c94fd19d93", + "credential_request": "70426f744606f980fc25b993b26bed3e5b7de20f73b2d17c0d677575819852554239a9fcfccacc5623588c32c0f99bec53243d8963dd7fbcfe8a2afd0034158b02000bc84c5e5821871038d879ba46b9b37078dc192612a094a088990f193ae1cbac240638c46dd5b743e409e936efc4147a271ee11b9e7fe606864393c245883e9cd14ee9892b97393ccab8358b2f68e513f3387ce7d605f2c2ceb714187a16ce4b716127899a9b2a2c72b950929a0232ebc951bb99acf6bdc1d78c68313b8ff4b3d26363ba177eda4775cab88541f53cb847bd7e09731de4176887a12624c9c2417331ca74bc6ca8ee82b950e16bd9511ffff16cc1696952839949a5b1d4f36a148b6e61cb336edab70be8ace1c79084fba0fecc7ad7159e5d734eb83205b2c8347da809617076635aa58412180f61830ed5601d250f4b3497492327177c4cb4864af84193f546bc5dc510375151a516198eb308a989b825cb002e104b2772a6008c2e0765857526cbcd46c7786027f1530ea7dc71c30b3585004420715f7ca8bea1228107828443b20e34432d88194f67150eadc82522ea2f7248ac98318c70016adedc7c761438feab8e2ae83af1db065960861930ac6f41bda7fc5182086e9d152ec5b990ed83859ee5894c5883ce58389bd05985d6b162b828d81436ce9785311b31b209b488c6200688b47e51600a07b49e150c6a20ab46711d26f04ddda07daa735e57e461d05bcc4c721ede2a5b59b9467c6555e544c74ca8a4d1dc2c50307d4f3c34fa203fc87402b1981c45c05067b20aa0547763fb8fbdd350966c4baea17261973194eb54f9786c5c2068a55347e7a39225a34dad4936a1a2a5cc90a829617d3ee499884cc684904afa20c773413be36956ca557f90e1a667819d616c23b2bca1fce42a7baa3b45c2c01fd004d710715f7c72cbabcf2489cee5a9c00b17a7d3c9a09171ab6b04a8dfb8837f1c7ed48693ab1915a37996607a3c8064a447a030d6618453c1a34cb6b2a87cb98da47703538a1e6a33904467adf676ff5b4e79765b5b6c9a9e61c9f8863eb663407957742164134f18c8d073b172eb0b173793b8228272738f853444dd88399121c5ff7951d2109b00972359141f1c9627601c5ae61c66f7057f73621dd878947e006ee1d85eb2423793eb1800207547fbc331cb421d8285ca8607cfb7bd1b746a635a6b844b5ddd1c800002c45f45ba7ae94af3426382968792726719280fc5e799feb96d223a4715ec5a24ab1486fcbf46c733d0539eb7643b0674b9f9c09ab35272abe79eab65443cc84eafcb4997fbc5280173d1c09eb551184061235579393e7c89e8486a64e7ce7a2256b3b97e90db5553f4728a6b935c9c0de431bd3d261bfb5900da270cb5b22a805c928a7baef967c3ef4a5439a075652175a1a36fd5a2478c622fc84c8d3e23c61ff415a62c4728f676172b2c0bcca6a97094e1c1880b8746087cc1d8bc8f26969c462bb5640bcdd2584146b982859349605b228ee067bfb08ba1681f14024e0b87a83ee0c3788c9087f05894551a340917582badc8ec15a6b861e4b58d89f23253c8bc27a96030825a1af968483926b0c9a24bb75209d9903ff51720622903c688efdb619f8947d001506440c936e68694ec16b3c2c3139897a48372874909ffd116f9d703a41b6cf3b4883b65541c5a125086a08b33385f03b8c494c2063a7fbb3b390cd4709118438a02bb59fb6c27443dfe0303fbd82be46424dd4185fc1444c131c5916224a7a43df3f784e6b0bbf1c2434a050981f76bcec9334454a2abc753aab01bfe6ba6090bd443a4ea7c761a5c95f94fead1bab27d62a817854ea3874799620a", + "credential_response": "7c5dd8f233225c1d5ef7b5ad25408f9c010f0149e456460042946265860d38170a34572e84579906f0ba6cd403c3962234e974d5f2806aab9953e1ee0efcea102f154807641e79bb6ab6276da049b2a1cd5bdcb54233e08a5d64e352ec898600f2270e488134cf6c865e91ee15950eaeae7ce3c6673587328d185ec26df475621e80c8abcd13e2f3215b527c2b9f78e8230ca244860eda24e67a02289433d8eadd209f8ba8806169ae91549fe8e4764afd4375d307e5c4446de8e5a40f4bfbee64dccf59e67a481f5fc6ad8f6f9a3edd9088e49a55e645677253ba390a3112c228971d96a733521aafe24d12370e6a34cd41b15e4350d0e2683b998f2415e3f445fd6b02016686e0246f047a02b8e12866909c1e5a05b9e2ba50ae0b41d29703791d1b51da10c3570c6c600ca4f21ef23e28d198a7e16d1cc86a4ce3da3b70ce213f3472fc8c424cdb5e1673105269938382b822c1244824ba8788ca845c2806207b50fb40580d06573c8d4a8e4eda7461134c772492f6d628c4d5452fdd0ea5c76438316d1ac00372f0da952c5a484074ea19df604caf1aa6b3f715f1782b61a3d3d9cadd8772f7128950841a9ab035795f4c463db3548c279fdf9e9ec4b57871029025094f64f5ffd70e1de58a08b3a95ccf432213d02c16ee0eade0526ece9ada14566fb1ad3d7a65af54c7a379262b2b001042c08b1aff3b25adc50baecdce0db109c9089e10737b6db4022263694c034335716071db73ce62bed9ee88efaace3238cce0278014860fa274c5d563e137b6bee402d455ce65b8b1b5fbceb9fc0f487eebad166679ab72ac427fb585e70e52fb56e9f52eacd098604494b017d6114ca1dd9e891506aaf93c246dbbab6717754b921dbd5600aa10fd1f0357611120fd51a5befbed242ab99e42a9f21350091b8f5969f46283d5fdcd6673e9cb995657785e9e53900e9ce57a1440648a9ff606c6951c150962eb06d438ad2e44ce9a6230a4780be4317bd3d6ca1073dabdb1ea8edcde8ade8af9166ce7eadb0b23ce17c0c29a013c21bec20f9f1df473b0e2d4f4dc86e1618cf9f671c93acbda32afec0c8988ee87b74fa16ef9a59fb6edb7264db06a86ed52e8fc6bb8dfbaf0d4e7da1a94d6ec0bb337813d7afe5a2c8b83ae50c23a3e7722b7e71113820cf285613f089fbb21d9ffe8097e81bceb2919916893329221c5d8f487f798ad3879eb30a846ac71f125d1bb6784d19304c399e51db91df054b0d2adb2439828a5edb541548040d1f32fa0da3b962afb1d84d1460de326852d44bed2015f29a435eb58fbbf29c27e4a2f67c3b914a6dba3d1b91eaec0fdcb9810426e43183e8d5a4ab4523c6e038c3d3a694e7fd93192bf11a6c95c7a6c31052bd502c9de36679f4eb4b51ca22d4a022de45179f15cf6ad44fe2ce6bf1c021ec391ad47dd3c03c6e4a09702a374a138a773af7cf8b58f5c4354b853165e8c8d9fcafa5edd0ee0871bc5b4a8502652f5f73cced7553c51d8641bcc68fe080b82b0d9b837b097d6c28a5f3beb7dbfb493acb53428d59fd022cf8681f64e9ded9cf5869bf65fbe7adf4382fe58d434cb57e2713580d9e98da5a92bdf74e22697c94a8cc12d5b8e962744504c24e8c77549c3faae7754562667e4fb8350440acf66ca4d377ae097dea0e67bce11c14959b7e9e9346311a0d6851f4ba0443134922b69ee475ea882ce5dfc5799deac0a83f7d629c4bfd718a6406de51b76b26de33b385eb6b7ce7cbdf3b7ab5dece8427f423b4d4db10c64ffb456d3f5ecdd3c92776699c5e950915dc4228db8ee399f1663c7c6f5047ca71e8be4b43d3de86fdb03144593d4ee50511680215c3d1df49c55ede168a08f5b1f639819b8f653d4644ce7b05067baf642b1474727390ee926329cd9ac39848f843817ad81d6ceba73b9e4f306830ae2e4719116b53a490a84087a3c4e8cf439eb93f81ea70bfb962a3a4a374bf50495bbb593f6b942072d25bcf847a5aa32d6750ef599f860908b5d7207d2a8f52d2f8412dbf4bf61917a4075e933e713728d4c13db31fb676983b7bf34db8385fca21c12e828f33f4e8f1a", + "credential_finalization": "97ee42a170ab99c968904ad1779ccb0594a611b6f3fc996b74246b1766cd0aa1c482206cf79143d9c89461df3ae43b0da554194ce9eb29d5dc86badadc573533", + "client_registration_state": "6eafbb4b709675bdd22a9e289048b20053b0ac0ab8853a1034ee431cd3353a0c70426f744606f980fc25b993b26bed3e5b7de20f73b2d17c0d67757581985255", + "client_login_state": "6eafbb4b709675bdd22a9e289048b20053b0ac0ab8853a1034ee431cd3353a0c70426f744606f980fc25b993b26bed3e5b7de20f73b2d17c0d677575819852554239a9fcfccacc5623588c32c0f99bec53243d8963dd7fbcfe8a2afd0034158b02000bc84c5e5821871038d879ba46b9b37078dc192612a094a088990f193ae1cbac240638c46dd5b743e409e936efc4147a271ee11b9e7fe606864393c245883e9cd14ee9892b97393ccab8358b2f68e513f3387ce7d605f2c2ceb714187a16ce4b716127899a9b2a2c72b950929a0232ebc951bb99acf6bdc1d78c68313b8ff4b3d26363ba177eda4775cab88541f53cb847bd7e09731de4176887a12624c9c2417331ca74bc6ca8ee82b950e16bd9511ffff16cc1696952839949a5b1d4f36a148b6e61cb336edab70be8ace1c79084fba0fecc7ad7159e5d734eb83205b2c8347da809617076635aa58412180f61830ed5601d250f4b3497492327177c4cb4864af84193f546bc5dc510375151a516198eb308a989b825cb002e104b2772a6008c2e0765857526cbcd46c7786027f1530ea7dc71c30b3585004420715f7ca8bea1228107828443b20e34432d88194f67150eadc82522ea2f7248ac98318c70016adedc7c761438feab8e2ae83af1db065960861930ac6f41bda7fc5182086e9d152ec5b990ed83859ee5894c5883ce58389bd05985d6b162b828d81436ce9785311b31b209b488c6200688b47e51600a07b49e150c6a20ab46711d26f04ddda07daa735e57e461d05bcc4c721ede2a5b59b9467c6555e544c74ca8a4d1dc2c50307d4f3c34fa203fc87402b1981c45c05067b20aa0547763fb8fbdd350966c4baea17261973194eb54f9786c5c2068a55347e7a39225a34dad4936a1a2a5cc90a829617d3ee499884cc684904afa20c773413be36956ca557f90e1a667819d616c23b2bca1fce42a7baa3b45c2c01fd004d710715f7c72cbabcf2489cee5a9c00b17a7d3c9a09171ab6b04a8dfb8837f1c7ed48693ab1915a37996607a3c8064a447a030d6618453c1a34cb6b2a87cb98da47703538a1e6a33904467adf676ff5b4e79765b5b6c9a9e61c9f8863eb663407957742164134f18c8d073b172eb0b173793b8228272738f853444dd88399121c5ff7951d2109b00972359141f1c9627601c5ae61c66f7057f73621dd878947e006ee1d85eb2423793eb1800207547fbc331cb421d8285ca8607cfb7bd1b746a635a6b844b5ddd1c800002c45f45ba7ae94af3426382968792726719280fc5e799feb96d223a4715ec5a24ab1486fcbf46c733d0539eb7643b0674b9f9c09ab35272abe79eab65443cc84eafcb4997fbc5280173d1c09eb551184061235579393e7c89e8486a64e7ce7a2256b3b97e90db5553f4728a6b935c9c0de431bd3d261bfb5900da270cb5b22a805c928a7baef967c3ef4a5439a075652175a1a36fd5a2478c622fc84c8d3e23c61ff415a62c4728f676172b2c0bcca6a97094e1c1880b8746087cc1d8bc8f26969c462bb5640bcdd2584146b982859349605b228ee067bfb08ba1681f14024e0b87a83ee0c3788c9087f05894551a340917582badc8ec15a6b861e4b58d89f23253c8bc27a96030825a1af968483926b0c9a24bb75209d9903ff51720622903c688efdb619f8947d001506440c936e68694ec16b3c2c3139897a48372874909ffd116f9d703a41b6cf3b4883b65541c5a125086a08b33385f03b8c494c2063a7fbb3b390cd4709118438a02bb59fb6c27443dfe0303fbd82be46424dd4185fc1444c131c5916224a7a43df3f784e6b0bbf1c2434a050981f76bcec9334454a2abc753aab01bfe6ba6090bd443a4ea7c761a5c95f94fead1bab27d62a817854ea3874799620a01b7ce737df54c52a2721a8d8241d5965a39f6f0c9e28197627275769f1844bacd4e680154752659029f81f046e86d81c365d1ebf22b59d2476a7ff176f9626858a74239a9fcfccacc5623588c32c0f99bec53243d8963dd7fbcfe8a2afd0034158b3b6a06bcd07dfd16c005533f66d02833b147de951d473b21f559bc52976ea2166952180a2e4b42b26002a8291f87dc2e11510c4da633c2b07761a6b7d05211e8c4a261e68216c057627a36ea81229d9bb337758eb9913a4cdba2af930b69013546c2af99841f051a4796126b6e345a96d0906e259e5847a4f8b120e2f4cb88b2b411fbc0d123378501898855371336a3d5a7c7467763d8cb2fe763c7a312404ce53a2c742d1c1b48ab8851d9e91383bc419984a62505185b769994b78482ab6bc0a836283576c01c2380609568c04c400391676b56b8d2bd53cb5a6da1bc62589df9966cb7090e98258efaf78e2d431555343e402a0507359b0ef540dfe62d95812bfc56b14e503645921d7d689eaa8a7d3c5738622b046e428ed6f56ab9c6a98662b663333222ccb76a7159664126319790f9055882724a42a351149398e069859d8a9870ac97e1543cac47a3c16c4a055744e8fa4ecf8a72b511bf8d751fb44a5b5aa1bfa04377e3c5c49d277235a405bf381cbb30c8871b76d0a01ea582598b20c22730b03f2579f5418165dc27b25c46de188e509b34849342acf528461ac94aa2114c5a5176f14575382ca6a146fd71b09101876d798d035b5c7c2a8573d208fc8a6049497cc41a1810cc3f7a068e40251bc04c38b2d03c67183f90da07af66781d1c274abb18c2c0904d9960c0f7581811ac5615b5cd2b5ada9693f811accec83203455e19bbb6fcd47bb4d1b1a25184da201dde342153588992d916e89a3efe036ed667759cf96513263ff84902edca1509a49908f52cb86b6c0d296c312409baf6986256c8106c1beee4673f0713b4dc2c2bb46bcbac8f4e4519324a7ad1759469493326912298a3cbb78bc1d04ba4d33baaac69592dc93617c50e5baa21bee425036a94ab88068ef770d7167d74ca6b6c381e0deaca3f97bba6b95168111ce3d99cdad734463c6ed06c9f73c5487be966db8514650a2edebb92f022883667c1cd0ac00784c654c1af4cf4c98e86c868a1814842018ba41fc6da533b32561ad978ec10a136960d5a0949bb5796141224218219382a1ae6b481a1b9173d4834f3f1913f6c20d553573e7180c05bbe2a01cc18b59650430428d57a55f6570dcc3ab2f562178307420811a3a761f8e7064c9ca887644c3547cbe322a9a6e167ce1843091765de26260d220ece010eed72b9daa4212a692ab1499588385d00b91f37f81ef39b7e5f091016d722b3213fbeb58f5ef983dd294880d9bce439ab94f6c34933a6ea106dfd3b5967f51b38181201816003f410f619b1a445936b2bb91ffb4b43285b026b8a370ca52e4b881ef305a08c6ce33c071bd164b32308320c4bdf99ca9eb5918c487ab749257e98489ec053b98aa5b3b4533b40a1f0f1cce064178230b177885983d5965acbb0660c32c6759044767f06543d39f759f7a689670b0efa357833d881e7cba2ac70732dc315068a33c3b5c767cb84cc6654f92a626754acd9eb973c9427bb968ee90c067559c52d028bb160c01b5526ed311b1febc10e0a69870951ff330a2cc38eb088b31d971b601c046a0c2b6e2a35ea6b3a0038c2849a2d9e0aba215a908f8b16fb2aab97d595015b5e68e5b34555a44ee9892b97393ccab8358b2f68e513f3387ce7d605f2c2ceb714187a16ce4b716127899a9b2a2c72b950929a0232ebc951bb99acf6bdc1d78c68313b8ff4b3d26363ba177eda4775cab88541f53cb847bd7e09731de4176887a12624c9c2417331ca74bc6ca8ee82b950e16bd9511ffff16cc1696952839949a5b1d4f36a148b6e61cb336edab70be8ace1c79084fba0fecc7ad7159e5d734eb83205b2c8347da809617076635aa58412180f61830ed5601d250f4b3497492327177c4cb4864af84193f546bc5dc510375151a516198eb308a989b825cb002e104b2772a6008c2e0765857526cbcd46c7786027f1530ea7dc71c30b3585004420715f7ca8bea1228107828443b20e34432d88194f67150eadc82522ea2f7248ac98318c70016adedc7c761438feab8e2ae83af1db065960861930ac6f41bda7fc5182086e9d152ec5b990ed83859ee5894c5883ce58389bd05985d6b162b828d81436ce9785311b31b209b488c6200688b47e51600a07b49e150c6a20ab46711d26f04ddda07daa735e57e461d05bcc4c721ede2a5b59b9467c6555e544c74ca8a4d1dc2c50307d4f3c34fa203fc87402b1981c45c05067b20aa0547763fb8fbdd350966c4baea17261973194eb54f9786c5c2068a55347e7a39225a34dad4936a1a2a5cc90a829617d3ee499884cc684904afa20c773413be36956ca557f90e1a667819d616c23b2bca1fce42a7baa3b45c2c01fd004d710715f7c72cbabcf2489cee5a9c00b17a7d3c9a09171ab6b04a8dfb8837f1c7ed48693ab1915a37996607a3c8064a447a030d6618453c1a34cb6b2a87cb98da47703538a1e6a33904467adf676ff5b4e79765b5b6c9a9e61c9f8863eb663407957742164134f18c8d073b172eb0b173793b8228272738f853444dd88399121c5ff7951d2109b00972359141f1c9627601c5ae61c66f7057f73621dd878947e006ee1d85eb2423793eb1800207547fbc331cb421d8285ca8607cfb7bd1b746a635a6b844b5ddd1c800002c45f45ba7ae94af3426382968792726719280fc5e799feb96d223a4715ec5a24ab1486fcbf46c733d0539eb7643b0674b9f9c09ab35272abe79eab65443cc84eafcb4997fbc5280173d1c09eb551184061235579393e7c89e8486a64e7ce7a2256b3b97e90db5553f4728a6b935c9c0de431bd3d261bfb5900da270cb5b22a805c928a7baef967c3ef4a5439a075652175a1a36fd5a2478c622fc84c8d3e23c61ff415a62c4728f676172b2c0bcca6a97094e1c1880b8746087cc1d8bc8f26969c462bb5640bcdd2584146b982859349605b228ee067bfb08ba1681f14024e0b87a83ee0c3788c9087f05894551a340917582badc8ec15a6b861e4b58d89f23253c8bc27a96030825a1af968483926b0c9a24bb75209d9903ff51720622903c688efdb619f8947d001506440c936e68694ec16b3c2c3139897a48372874909ffd116f9d703a41b6cf3b4883b65541c5a125086a08b33385f03b8c494c2063a7fbb3b390cd4709118438a02bb59fb6c27443dfe0303fbd82be46424dd4185fc1444c131c5916224a7a43df3f784e6b0bbf1c2434a050981f76bcec9334454a2abc753aab01bfe6ba6090bd443a4ea7c761a5c95f94fead1bab27d62a817854ea3874799620ad7b43092f3074c35f169ce61720140e033cf2d49caba2ca2ebb07e14f509510601826e767f2960694852b4231c7a4b4e5f442ab2a6c7f85a14e0548f035c62fc", + "server_login_state": "f6384d8bc5473ee8e011d0a6cdf2d526a86497e369018cf0490afa4ed05f0acda66e9109e7bc155b11626e0ad3b18a6dd0e4a7b0c8dd87273ff837a7eecf052297ee42a170ab99c968904ad1779ccb0594a611b6f3fc996b74246b1766cd0aa1c482206cf79143d9c89461df3ae43b0da554194ce9eb29d5dc86badadc5735334ee9892b97393ccab8358b2f68e513f3387ce7d605f2c2ceb714187a16ce4b716127899a9b2a2c72b950929a0232ebc951bb99acf6bdc1d78c68313b8ff4b3d26363ba177eda4775cab88541f53cb847bd7e09731de4176887a12624c9c2417331ca74bc6ca8ee82b950e16bd9511ffff16cc1696952839949a5b1d4f36a148b6e61cb336edab70be8ace1c79084fba0fecc7ad7159e5d734eb83205b2c8347da809617076635aa58412180f61830ed5601d250f4b3497492327177c4cb4864af84193f546bc5dc510375151a516198eb308a989b825cb002e104b2772a6008c2e0765857526cbcd46c7786027f1530ea7dc71c30b3585004420715f7ca8bea1228107828443b20e34432d88194f67150eadc82522ea2f7248ac98318c70016adedc7c761438feab8e2ae83af1db065960861930ac6f41bda7fc5182086e9d152ec5b990ed83859ee5894c5883ce58389bd05985d6b162b828d81436ce9785311b31b209b488c6200688b47e51600a07b49e150c6a20ab46711d26f04ddda07daa735e57e461d05bcc4c721ede2a5b59b9467c6555e544c74ca8a4d1dc2c50307d4f3c34fa203fc87402b1981c45c05067b20aa0547763fb8fbdd350966c4baea17261973194eb54f9786c5c2068a55347e7a39225a34dad4936a1a2a5cc90a829617d3ee499884cc684904afa20c773413be36956ca557f90e1a667819d616c23b2bca1fce42a7baa3b45c2c01fd004d710715f7c72cbabcf2489cee5a9c00b17a7d3c9a09171ab6b04a8dfb8837f1c7ed48693ab1915a37996607a3c8064a447a030d6618453c1a34cb6b2a87cb98da47703538a1e6a33904467adf676ff5b4e79765b5b6c9a9e61c9f8863eb663407957742164134f18c8d073b172eb0b173793b8228272738f853444dd88399121c5ff7951d2109b00972359141f1c9627601c5ae61c66f7057f73621dd878947e006ee1d85eb2423793eb1800207547fbc331cb421d8285ca8607cfb7bd1b746a635a6b844b5ddd1c800002c45f45ba7ae94af3426382968792726719280fc5e799feb96d223a4715ec5a24ab1486fcbf46c733d0539eb7643b0674b9f9c09ab35272abe79eab65443cc84eafcb4997fbc5280173d1c09eb551184061235579393e7c89e8486a64e7ce7a2256b3b97e90db5553f4728a6b935c9c0de431bd3d261bfb5900da270cb5b22a805c928a7baef967c3ef4a5439a075652175a1a36fd5a2478c622fc84c8d3e23c61ff415a62c4728f676172b2c0bcca6a97094e1c1880b8746087cc1d8bc8f26969c462bb5640bcdd2584146b982859349605b228ee067bfb08ba1681f14024e0b87a83ee0c3788c9087f05894551a340917582badc8ec15a6b861e4b58d89f23253c8bc27a96030825a1af968483926b0c9a24bb75209d9903ff51720622903c688efdb619f8947d001506440c936e68694ec16b3c2c3139897a48372874909ffd116f9d703a41b6cf3b4883b65541c5a125086a08b33385f03b8c494c2063a7fbb3b390cd4709118438a02bb59fb6c27443dfe0303fbd82be46424dd4185fc1444c131c5916224a7a43df3f784e6b0bbf1c2434a050981f76bcec9334454a2abc753aab01bfe6ba6090bd443a4ea7c761a5c95f94fead1bab27d62a817854ea3874799620ac00372f0da952c5a484074ea19df604caf1aa6b3f715f1782b61a3d3d9cadd8772f7128950841a9ab035795f4c463db3548c279fdf9e9ec4b57871029025094f64f5ffd70e1de58a08b3a95ccf432213d02c16ee0eade0526ece9ada14566fb1ad3d7a65af54c7a379262b2b001042c08b1aff3b25adc50baecdce0db109c9089e10737b6db4022263694c034335716071db73ce62bed9ee88efaace3238cce0278014860fa274c5d563e137b6bee402d455ce65b8b1b5fbceb9fc0f487eebad166679ab72ac427fb585e70e52fb56e9f52eacd098604494b017d6114ca1dd9e891506aaf93c246dbbab6717754b921dbd5600aa10fd1f0357611120fd51a5befbed242ab99e42a9f21350091b8f5969f46283d5fdcd6673e9cb995657785e9e53900e9ce57a1440648a9ff606c6951c150962eb06d438ad2e44ce9a6230a4780be4317bd3d6ca1073dabdb1ea8edcde8ade8af9166ce7eadb0b23ce17c0c29a013c21bec20f9f1df473b0e2d4f4dc86e1618cf9f671c93acbda32afec0c8988ee87b74fa16ef9a59fb6edb7264db06a86ed52e8fc6bb8dfbaf0d4e7da1a94d6ec0bb337813d7afe5a2c8b83ae50c23a3e7722b7e71113820cf285613f089fbb21d9ffe8097e81bceb2919916893329221c5d8f487f798ad3879eb30a846ac71f125d1bb6784d19304c399e51db91df054b0d2adb2439828a5edb541548040d1f32fa0da3b962afb1d84d1460de326852d44bed2015f29a435eb58fbbf29c27e4a2f67c3b914a6dba3d1b91eaec0fdcb9810426e43183e8d5a4ab4523c6e038c3d3a694e7fd93192bf11a6c95c7a6c31052bd502c9de36679f4eb4b51ca22d4a022de45179f15cf6ad44fe2ce6bf1c021ec391ad47dd3c03c6e4a09702a374a138a773af7cf8b58f5c4354b853165e8c8d9fcafa5edd0ee0871bc5b4a8502652f5f73cced7553c51d8641bcc68fe080b82b0d9b837b097d6c28a5f3beb7dbfb493acb53428d59fd022cf8681f64e9ded9cf5869bf65fbe7adf4382fe58d434cb57e2713580d9e98da5a92bdf74e22697c94a8cc12d5b8e962744504c24e8c77549c3faae7754562667e4fb8350440acf66ca4d377ae097dea0e67bce11c14959b7e9e9346311a0d6851f4ba0443134922b69ee475ea882ce5dfc5799deac0a83f7d629c4bfd718a6406de51b76b26de33b385eb6b7ce7cbdf3b7ab5dece8427f423b4d4db10c64ffb456d3f5ecdd3c92776699c5e950915dc4228db8ee399f1663c7c6f5047ca71e8be4b43d3de86fdb03144593d4ee50511680215c3d1df49c55ede168a08f5b1f639819b8f653d4644ce7b05067baf642b1474727390ee926329cd9ac39848f843817ad81d6ceba73b9e4f306830ae2e4719116b53a490a84087a3c4e8cf439eb93f81ea70bfb962a3a4a374bf50495bbb593f6b942072d25bcf847a5aa32d6750ef599f860908b5d7207d2a8f52d2f8412dbf4bf61917a4075e933e713728d4c13db31fb676983b7bf34db8385fca21c12e828f33f4e8f1a", + "password_file": "0301af3d14ba5f304c4af480ec7841579f114a6bae3689bb8592fc2cde2b7a77c07bd6ea1ad0c90e88fee416652ade13b124d7ee36b8dc704cc88adbffe670e3bc9ff9278cfd16bb338664586c6d0a0f7eaf309417dce66568b13475ab028af0f2b5c1c96d9e1c4e06d7724ec5a3f9559fabcfcba3c673c9e6f846c3f1aa74042ef3430191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c385843e261f2b8813ed4e7b6b824570581275b0512380953244e66066e7a7049a9199107824f3d041f5e8f9af9a196c39b163b3416dc81dc4f456570c94fd19d93", + "export_key": "2d8bd543482be9dba0b9a2d1a92d2a26bddcd7a64bbbef1eb9b6f9426c9428620d0034c2e184e48e5ea02155562e7ea6cfc10a03bb7d9c222588b6134839065c", + "session_key": "f6384d8bc5473ee8e011d0a6cdf2d526a86497e369018cf0490afa4ed05f0acda66e9109e7bc155b11626e0ad3b18a6dd0e4a7b0c8dd87273ff837a7eecf0522" +} +"#; +pub static TEST_VECTOR_P256_TRIPLE_DH_KEM_P521: &str = r#" +{ + "client_s_pk": "020021414250e55d25a05bf56a0f7a8baefd1a9102142d33006baab534f3d36c61aad76910b73e90d745bda0d30aac568e52bcb8b203c497b5ab3b1ce426b4b5e9408a", + "client_s_sk": "0191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c383d7efe9faaf7a5138eed7b1db0830d1d93378e5c245862f90d686253752ba1ce3363", + "client_e_pk": "02010cdb74614552df1dbd2028eeaabee3f5f7226f0a200dc661ce1c1143d7402c09c50a8b3b40887fa9324cab6ffd33d9b47732e122a07d06dc7add66cbcb88fdff35", + "client_e_sk": "01826e767f2960694852b4231c7a4b4e5f442ab2a6c7f85a14e0548f035c62fcc4e399f0d2a935c9221773eedcd1ca118561c4d5f01e033638e8c999cf7a4c344dd1", + "server_s_pk": "030007864ac5d5e484396228574ba54b350d05f117d691e7d436f7a42a86b80ca35e7e8dcc2862eb774249ec45ed36d8375fdcfd2bced9e0037bcfbb649c6a0ffc8d2e", + "server_s_sk": "000cd2237f8cc7da2a2b144249df100cd38a7faa8e24da3fb9c6c78ba2ce4607063abd60915020f04278b95ae462e1232d1b20a399d94406119c88b73da354f0c19a", + "server_e_pk": "03019aac00e2d71f7481c86b2fd6e5d322dfada045cc3a08125b3dba79b45e3df28897af6482e8b93c22fadb58d8b5d9b703e0011cf77d3183aa8d97c502e234254ef0", + "server_e_sk": "016efb612c53e84229af489df498156104e2aa18c43dcf5699f1c90cf74c8c3c7df396a733521aafe24d12370e6a34cd41b15e4350d0e2683b998f2415e3f445fd6b", + "dummy_client_pk": "0200b0b6b845945e221270aa5599754229c69d2410bcbb53d620f4262367e9c6f32a0ac32e4ae1ba8a51e970e7aed8e09f312f79ba4ede2bc4189626b508bdcec08d8d", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "7296a3d1056cec20cca5f153e55fbffc96b85b8fa86d5b47edb354ea465314ed", + "oprf_seed": "0a21aa10667cb3715191792d822015c1b300ea6af2d1c7c429dcb07d8f0f6919", + "dummy_masking_key": "96306ba315f8221e511ab0f11f71fe4765ab925abafebc92f3d37a1e29965f2e", + "masking_nonce": "e2b707a32743af30d4dc07380e746432fd9bb07fd570b12b195efe1c8f39d5d73f87e1cb754cf4908cc6cf1f2856b6fbb9cff0a3e0832db07b0a35b70ecc0476", + "envelope_nonce": "0a34572e84579906f0ba6cd403c3962234e974d5f2806aab9953e1ee0efcea10", + "client_nonce": "2f98027f49cecdece384850929ce9d3b0fd624860acda513da8ab39bc36f7821", + "server_nonce": "d7d6ba25df2b8fe865bb2f3a94db41b56d7275384017c033e1a62d5536d39d8f", + "server_sig_rng": "4239a9fcfccacc5623588c32c0f99bec53243d8963dd7fbcfe8a2afd0034158bb9a17caddd81307e317cf08e5944a0f6819811e59e571b9c43e891c2c36cf547fc3a", + "client_sig_rng": "112df5e8f5ca154593552262645d524b81fa14e848a6a4787d8a2492321738676224c06444bd18e351fd84348b8ed5c08e3dde4874763fe2eff0e84a20b3fe9a7266", + "context": "636f6e74657874", + "registration_request": "03127f88d68a28399e27c35dad8310a60019544b3d4673922e2ab5f060d834423b", + "registration_response": "021f3e0f9832069535cff673e3e034e5060d4c1e2144cf9c92854a0609dc00f5ca030007864ac5d5e484396228574ba54b350d05f117d691e7d436f7a42a86b80ca35e7e8dcc2862eb774249ec45ed36d8375fdcfd2bced9e0037bcfbb649c6a0ffc8d2e", + "registration_upload": "020173db9eeec10ccfc4946c5674d3f5a9b76738cc0d5a68b108bd334cde85b49e29a68973cb485f88cb2a2f204ff9ce71f80bf27380bbc707798c4ed7b88e2c85d33280fa66615afa29e71cc76873a2fea65d54b20425ed3c40671c4f7a2c645af8ed0191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c3897be3be74cfc2db573d5937c7008b347a60e6c6edb356164a661d28a33eac73c", + "credential_request": "03127f88d68a28399e27c35dad8310a60019544b3d4673922e2ab5f060d834423b2f98027f49cecdece384850929ce9d3b0fd624860acda513da8ab39bc36f782102000bc84c5e5821871038d879ba46b9b37078dc192612a094a088990f193ae1cbac240638c46dd5b743e409e936efc4147a271ee11b9e7fe606864393c245883e9cd1c579402bac8807113858662a6773aafae4873e908719921726944703e705bc8514362a8fe028966c549280645c2c373a8ad216345abc690a0b9e5089ba0437c5a6b934046ab0e6792f7169562083522a44cba4415b74ccf3cb032a656ce94c924147443ebbc5d8f73eadf736d3b50b74f347b6090aa95619d93724fac6cbba8494ac863c3cda820435a6a89b4917d75141bb1c1b322d69e54a9664a8e9308b4072a1d07662270c21906018d83806d50bcfaf6c693c914e8ea967a4e324b1d62efac910eeaace6d8b68af6537066a00b029287da2b042d1ad61224b77b2b80e26a168b1c6bab156b423c4081758b15ab6a291bb3be1c4c43670044c087c178548c94638d4a2e73145bea7b0cbaa6ebfc78b46e485bea492ea9c7e8f639ce0a1956d876014fc1a24c6bd538747504c171497142c1ac712f4be67573d08805cedfc6f105895329a5465a62694494e66abafcc864e9a982fd110c72ec590904382c7bb9723b990fa7c42b3b6bbb221779e87482c71737150b53873cbb0f35c6dc9a991e26b3505c2ee6a5d31b95b069797b9d300395162cf31311da835243b56d68b7a4ee76746f71ac9c5504583935dc75bbec992b5e4791407c53f0a605dac7f636b8518fb2007c33fe5a03b79fc7349921fc4e5ac79aa1aa8462f93e98e7f9118b91c11baec561c8181185b0f16e183c3e005e68720365b999ccac3d9296cc15b6f93332c8954300df5b4377b64999c26da179632d6a8f299afb899023bbac20c0a0957b3cb4df05298781e354a6c0632a8be351e94ec24d857550bc08b082880283c3bcc182273fc86bd838da5d34a9dc829a860533170745c0b9521ec91f12b03aefc9fcee605f12b5bcf22a1ed27a6bdf0ac7a235fdf6289023757cbfcc2824b124092a5c8f76b32f54073828efa14c28fa1cfcd407feb687e10287112f9cf453497f654026fd662fb21c956db4b35a00b06bb84a538c0cc99009e369c2dd725b897408b38a3fc6400070303759c14cae702902c03279a6a9c50b5be20a3df144d59b72d78e1612abc7d3ed81db8754d07120a9ed50e8a4942b572478521ba739c4aecc8b2c9d4aadf063d005442b3445a33887272715afcf12ed570b8965811d0d650f5a68f272a9e45c78d16f243d07322d7330f04c10607570c78e08aa0a8324dd13ae3c48a5830b6a6da90fa69a0ef8254aac3b7a9859c93d89aeb22263a4777e3d851d92c70affa2611b1533c548bde3160036c39fc804846b14707189c10859fe17b3be4803036bb8b60d075b8d53e84615df2007db1481c9c312e7de149b68b04d0462d9612c171b03262095b98c586c679727cd1960d13a04a3c0381930a0acbc9ae1c8a2f798417f386cef51aa81853c3259680938b28aa8b53b881ef556e769a373964c77192c9c2138e3447b9f7c3387f042baf4c7439b1b951e0049a124331a2af82cb928dcb7059b944c55800d16b3c47674c39176bcc105eb7f41a1d9b7ed0198c10e4921d5220860c4c20c728b851b9dae4747a9c995e411ba375580a1b6a05b8830c699dcfc84f26e2084c79c0b5c2352e97718ac0bcca3568b0575a20c8c202ba0cb3fac3e3c0cb69389e42927b832084d460593d3402680ff49fde8a2d619bdfae52f3e49f5ff4e19daf3f03112a0ee396b367c4e5bb", + "credential_response": "021f3e0f9832069535cff673e3e034e5060d4c1e2144cf9c92854a0609dc00f5cae2b707a32743af30d4dc07380e746432fd9bb07fd570b12b195efe1c8f39d5d7ce694d6f9553cd59d2a4e05cf34fde8e3b8ab98c0894de07b89fa6f44f4142459274f1d576c9e943f75f2bf9c47da7cc1a3a078743f6dac762697061d0921630eb5890be087d5d809f01b33792e0eb4d63d45fe7b988f852cb659b6f9310b6932ee226f5f153466b39fd53dc46a015d82102fde48f1839945239e6662309ab3f086a2996a733521aafe24d12370e6a34cd41b15e4350d0e2683b998f2415e3f445fd6b02008d60d9559a1e2e128281bb7d5e36a166e0a280d38b2eec27f2822e99d16398c3abaeee87953fa6b979cac50e5d779c47609f9fd63254fbd92f98d016672ceb5e9fb7764393c35cfecf2b9a7fe248b3521843d6882f8ccecb3c4ccf3a5e205914458eee474c44ded6c9f4234f35a278b6f04d8c9cf16f20b447102606dc2a84e2158e0c2f248736ed0e90bf1b1fbf13498bf6551a454816df1f769d85a1f0d89263be08a4cc3d38f890428671eac2be34c9ac82db9f97c70755bb00ccad61cd2cddb778fdb16e813b067536719ab90fc7fc314f3803bdc7ea7946f3aa8716628e8aa9c76ea07569d768d6a91131ee04fb68afcaeb0b197d13abbcc4a28884bc21e8e9dd22b1ae9e13c09f5d3058abb99700aaf3a62a17a5d8077d310c614ae15029bd1081c2bdf7661d58749ee90776aa204f689dccbad6c6ec1667a3dbfe0debbcf6a4970087505e9b59f928bdef4f8065b60726584dd3f8d336e5aef232912bfbc0b502a2960d09024420d1f8cbe1e2f1239d7c788c363efd7ea0722e5d21dfb3ac9e40f8643cb742fb0b6f8ae5cc73cedd69779cd13d8a0486a594393bf8192fffc2402d7c73488cc8bd099106d5d9c781fc6b8bd8f09dbd093a942a353ec6d437575715797dc1ee341b5ff9289fc73ef323566d7c2c2196ef291decb9482d1a7e4be3f427ca2d96e37cf8f54e6aa312818644ec414aedf30db1e643886222dfe1cd7f9d84f596271b8e0705e91966126f64c52b89ed24595397d5187a37ef26539f7c3a534d631548fa93fc73fca9d1c6f5bbb3ce1b3d8040094c29fe891742101e7e5d35bed43e81026e858e60384239e346a345d9d519446a2803e54bf0a0257416e7da00c8d16f478e5ec2b19b74b39c7c2bd1102099fe8627f4cb7f57325dd910d0d5c3766b907096d9a749ef8c88062579002468be82f656cfdc1cab40c2f337f9ea894beff57f2fa315bbbeb0a38d6b7e61ce0fa495f75871d0d606133e755300767840b880d62e6f1d01a45bb83d59d294f9e752743ec656c2e7e48d56c8843a619bf74ffbbc58c741ef9be129463dc803d330aed24d3d676f86f8fbd0eccc449af0369c4c8b92c7a825f3d1294e0e68131a2af9735240c9cbde3099e1eb0454e2dcd01073ef59115886540820968d7143657aa8bf6eba23a429e7b3e7346ee1bcd1da8acbfb04b474a35b1f7022055245298de3a6f2361060f459d65b7b1d0e5201148792ac346077aae00252de56883278efc5d15398f95520f0b87c44d6a30fdbacb396b697a8701bf1576b4e36d57f2573e568891bc6ca561c10a86fe8a39ec6d54dcbf8b789b1592364fdc2dc65a58cfaefb6e4c1d2316ae072cb8bdf61adf21f22eaa1cefef2d0134099020d9de92df8e2ea087e2d855512fa4c544b42a5d200d2ccc115d1ee72b9cff42520daf3dc9f411732d7443418c31e68965ea2b67217ace219a4a51e350fca141a243d906f7c73dbac4de3d4f3bed56e0f7eab975a7bf67ed21f2e4dfc80a0cd0bb78f83b4f19e73e7e7ff223dcdd6d336b99bf01c60faae7ce88ee3e551f35deb7b8b3e70b758b940d644673b5d53837b902f1d88f236d94467588d7045cd9b0ce35c72579c6176900fe78a92d11217634bdebd8fbb6338c905fc489e17bfe1b277d36851bd3a5768691deab4076254a469dde8712190243e693ebb4830521c1860fb3e3f30dc249df09bfa51eb6f", + "credential_finalization": "3a20788abbcd7003e68623f8fe33228309be205f547bd40a8cb67fd9bf2573b2a934ec1f92594d34f94a1ed21a7f17c22bc86f03cfcceeced4938d8a8b581fd8", + "client_registration_state": "7296a3d1056cec20cca5f153e55fbffc96b85b8fa86d5b47edb354ea465314ed03127f88d68a28399e27c35dad8310a60019544b3d4673922e2ab5f060d834423b", + "client_login_state": "7296a3d1056cec20cca5f153e55fbffc96b85b8fa86d5b47edb354ea465314ed03127f88d68a28399e27c35dad8310a60019544b3d4673922e2ab5f060d834423b2f98027f49cecdece384850929ce9d3b0fd624860acda513da8ab39bc36f782102000bc84c5e5821871038d879ba46b9b37078dc192612a094a088990f193ae1cbac240638c46dd5b743e409e936efc4147a271ee11b9e7fe606864393c245883e9cd1c579402bac8807113858662a6773aafae4873e908719921726944703e705bc8514362a8fe028966c549280645c2c373a8ad216345abc690a0b9e5089ba0437c5a6b934046ab0e6792f7169562083522a44cba4415b74ccf3cb032a656ce94c924147443ebbc5d8f73eadf736d3b50b74f347b6090aa95619d93724fac6cbba8494ac863c3cda820435a6a89b4917d75141bb1c1b322d69e54a9664a8e9308b4072a1d07662270c21906018d83806d50bcfaf6c693c914e8ea967a4e324b1d62efac910eeaace6d8b68af6537066a00b029287da2b042d1ad61224b77b2b80e26a168b1c6bab156b423c4081758b15ab6a291bb3be1c4c43670044c087c178548c94638d4a2e73145bea7b0cbaa6ebfc78b46e485bea492ea9c7e8f639ce0a1956d876014fc1a24c6bd538747504c171497142c1ac712f4be67573d08805cedfc6f105895329a5465a62694494e66abafcc864e9a982fd110c72ec590904382c7bb9723b990fa7c42b3b6bbb221779e87482c71737150b53873cbb0f35c6dc9a991e26b3505c2ee6a5d31b95b069797b9d300395162cf31311da835243b56d68b7a4ee76746f71ac9c5504583935dc75bbec992b5e4791407c53f0a605dac7f636b8518fb2007c33fe5a03b79fc7349921fc4e5ac79aa1aa8462f93e98e7f9118b91c11baec561c8181185b0f16e183c3e005e68720365b999ccac3d9296cc15b6f93332c8954300df5b4377b64999c26da179632d6a8f299afb899023bbac20c0a0957b3cb4df05298781e354a6c0632a8be351e94ec24d857550bc08b082880283c3bcc182273fc86bd838da5d34a9dc829a860533170745c0b9521ec91f12b03aefc9fcee605f12b5bcf22a1ed27a6bdf0ac7a235fdf6289023757cbfcc2824b124092a5c8f76b32f54073828efa14c28fa1cfcd407feb687e10287112f9cf453497f654026fd662fb21c956db4b35a00b06bb84a538c0cc99009e369c2dd725b897408b38a3fc6400070303759c14cae702902c03279a6a9c50b5be20a3df144d59b72d78e1612abc7d3ed81db8754d07120a9ed50e8a4942b572478521ba739c4aecc8b2c9d4aadf063d005442b3445a33887272715afcf12ed570b8965811d0d650f5a68f272a9e45c78d16f243d07322d7330f04c10607570c78e08aa0a8324dd13ae3c48a5830b6a6da90fa69a0ef8254aac3b7a9859c93d89aeb22263a4777e3d851d92c70affa2611b1533c548bde3160036c39fc804846b14707189c10859fe17b3be4803036bb8b60d075b8d53e84615df2007db1481c9c312e7de149b68b04d0462d9612c171b03262095b98c586c679727cd1960d13a04a3c0381930a0acbc9ae1c8a2f798417f386cef51aa81853c3259680938b28aa8b53b881ef556e769a373964c77192c9c2138e3447b9f7c3387f042baf4c7439b1b951e0049a124331a2af82cb928dcb7059b944c55800d16b3c47674c39176bcc105eb7f41a1d9b7ed0198c10e4921d5220860c4c20c728b851b9dae4747a9c995e411ba375580a1b6a05b8830c699dcfc84f26e2084c79c0b5c2352e97718ac0bcca3568b0575a20c8c202ba0cb3fac3e3c0cb69389e42927b832084d460593d3402680ff49fde8a2d619bdfae52f3e49f5ff4e19daf3f03112a0ee396b367c4e5bb01b7ce737df54c52a2721a8d8241d5965a39f6f0c9e28197627275769f1844bacd4e680154752659029f81f046e86d81c365d1ebf22b59d2476a7ff176f9626858a72f98027f49cecdece384850929ce9d3b0fd624860acda513da8ab39bc36f7821d7da1a42d9af7cf9c423ca081923b94441870aa479d5652b20fa0ade42c960a8c70a561f361a5082510769930f84f87aa2727c6ccb140fdc7182fbbfa4e2a77c2a952376841d7c3fba097f8808b198f313db5a3d51272862b8028216206f52555911abd6b628b2d50116a5463b9a125440a0a8a00b000c3460229e6a040e704449940640e4a2aad46785ba646d22cb556bf654ba7214e3fb9b7d042f56e149b05043f0e089f8c74936e0ad85458e0bd2c8b677ad4ce274cf0c1fbef5922e9c8a93f9ab0bda3267e67baf0b341db89c5a9997e16b4701945166d40bc6cb7e5b7480f8749c19967c42b4bb6b07cc778a25fec47d6a67221a23079edc7801e2533db849653c5cdba367c882660c082ee76ac50a284f98b3b9242a05228582e8c04293fb7fb60c308ac9313285279e22be4268157dcb6addd5655f45ba39fa7c1ff87b517047f8ba6c72483edbeb6409443f8337baddb452ac26526e1792d498210c32313d046ade3c758e8b3fa53c02afe0946f0903cec8c2b9b380e551332b294e3ab6a894b3829190702b954a82b23a83131b1444a95361b4a677b4c5ec66ffd63e2677b83ec30ad9f454fd9aa6f8b1b809b24cebd2aff227b191487f86da95e410070696c2f2e8767c5615bf4b642c8b86cbd1820dc20b7a6ca24bc43e9fb141e92c2ac67078ce01385a419ec9c3b563430241ab1b246767fb155378d73c1af2b5eff6c67a46695bd6245ee87d2dc228f5b19a96006214a75fd23727c86463d0344478e22d9465a4117c6ddd94808f4187f37b637929a4415969e79595a4c3714295040b23bae03685200380dba2013c1b41523149873a8afa206753f032c3c9023d2932d878cdfc0302cbd22bb00a7037163fc1b18c182b0a0572368c2446ff5ca18cea2ef29bb3ff609b2c483bf43641f1027afa59bd936c01a580bfd6b036dcb7a0393500a001349469acf2370cb326429a4a3a2687a3e6f11a9be71011d12b8e5a7d4d702d6a529be08cba33549621409171dca649542457030131b31917b3774b97644e1050321494c4b6a5db4485a8890750c63f5f5a349aa885a27c5baf6b782bd69957f873b0da921fbb7a70b6a053c9430aaaa4dd24b29f059f8a7c0505e84104667b6ddba514670023a9c5929c22a2b92c812ca0fa6565b0320bbec42651928f0d955a95b8b5c248761ed8792b4b1bce87cde36830ed84b4831076ad7b659a67031ae1c486c9313936196a4b2a2b03693cd759ede5ba881989c0ba9d4d863031cc4dbb1086b2c0a318da8861caaac19b9f11b60be92125a07b3dce839b490665eb9032ba82c676b082d7816fb7a53ab7dc8b66840c2e634896c77137163b2fb70051b140c34ac15cf27af3d296a348931b6025675375088b0f18954287f9416c1791f4c17e04a2811a7b1d64415ec5f73ddd3b139b05ceaa1649b01868d28451fd035021e194deea4f2573c5df274be7d8116da690d155bf61a37a212501d886698aa33081e0082944348d23cf624472f1984a54b9c83706b2862a674a9423509b5f59222350ac80a1c08337121cda2b1dd62c6d137a7f0bb47f25613e7a008aa8965f04c17293763fa7e157d850a58af377b8fc567348197f360cc579402bac8807113858662a6773aafae4873e908719921726944703e705bc8514362a8fe028966c549280645c2c373a8ad216345abc690a0b9e5089ba0437c5a6b934046ab0e6792f7169562083522a44cba4415b74ccf3cb032a656ce94c924147443ebbc5d8f73eadf736d3b50b74f347b6090aa95619d93724fac6cbba8494ac863c3cda820435a6a89b4917d75141bb1c1b322d69e54a9664a8e9308b4072a1d07662270c21906018d83806d50bcfaf6c693c914e8ea967a4e324b1d62efac910eeaace6d8b68af6537066a00b029287da2b042d1ad61224b77b2b80e26a168b1c6bab156b423c4081758b15ab6a291bb3be1c4c43670044c087c178548c94638d4a2e73145bea7b0cbaa6ebfc78b46e485bea492ea9c7e8f639ce0a1956d876014fc1a24c6bd538747504c171497142c1ac712f4be67573d08805cedfc6f105895329a5465a62694494e66abafcc864e9a982fd110c72ec590904382c7bb9723b990fa7c42b3b6bbb221779e87482c71737150b53873cbb0f35c6dc9a991e26b3505c2ee6a5d31b95b069797b9d300395162cf31311da835243b56d68b7a4ee76746f71ac9c5504583935dc75bbec992b5e4791407c53f0a605dac7f636b8518fb2007c33fe5a03b79fc7349921fc4e5ac79aa1aa8462f93e98e7f9118b91c11baec561c8181185b0f16e183c3e005e68720365b999ccac3d9296cc15b6f93332c8954300df5b4377b64999c26da179632d6a8f299afb899023bbac20c0a0957b3cb4df05298781e354a6c0632a8be351e94ec24d857550bc08b082880283c3bcc182273fc86bd838da5d34a9dc829a860533170745c0b9521ec91f12b03aefc9fcee605f12b5bcf22a1ed27a6bdf0ac7a235fdf6289023757cbfcc2824b124092a5c8f76b32f54073828efa14c28fa1cfcd407feb687e10287112f9cf453497f654026fd662fb21c956db4b35a00b06bb84a538c0cc99009e369c2dd725b897408b38a3fc6400070303759c14cae702902c03279a6a9c50b5be20a3df144d59b72d78e1612abc7d3ed81db8754d07120a9ed50e8a4942b572478521ba739c4aecc8b2c9d4aadf063d005442b3445a33887272715afcf12ed570b8965811d0d650f5a68f272a9e45c78d16f243d07322d7330f04c10607570c78e08aa0a8324dd13ae3c48a5830b6a6da90fa69a0ef8254aac3b7a9859c93d89aeb22263a4777e3d851d92c70affa2611b1533c548bde3160036c39fc804846b14707189c10859fe17b3be4803036bb8b60d075b8d53e84615df2007db1481c9c312e7de149b68b04d0462d9612c171b03262095b98c586c679727cd1960d13a04a3c0381930a0acbc9ae1c8a2f798417f386cef51aa81853c3259680938b28aa8b53b881ef556e769a373964c77192c9c2138e3447b9f7c3387f042baf4c7439b1b951e0049a124331a2af82cb928dcb7059b944c55800d16b3c47674c39176bcc105eb7f41a1d9b7ed0198c10e4921d5220860c4c20c728b851b9dae4747a9c995e411ba375580a1b6a05b8830c699dcfc84f26e2084c79c0b5c2352e97718ac0bcca3568b0575a20c8c202ba0cb3fac3e3c0cb69389e42927b832084d460593d3402680ff49fde8a2d619bdfae52f3e49f5ff4e19daf3f03112a0ee396b367c4e5bbb3d826531f94607f183316acfa420d1b5e3b97545add80cd556753480c21c76201826e767f2960694852b4231c7a4b4e5f442ab2a6c7f85a14e0548f035c62fc", + "server_login_state": "1acf0252ecb0e3e81235f5c87eb0e30c9decd435e57c344258cf1044946e991f75e55d9d4c023b39abb1e17aa3c081dcd7879058aa7b7a8032da1079be52c37c3a20788abbcd7003e68623f8fe33228309be205f547bd40a8cb67fd9bf2573b2a934ec1f92594d34f94a1ed21a7f17c22bc86f03cfcceeced4938d8a8b581fd8c579402bac8807113858662a6773aafae4873e908719921726944703e705bc8514362a8fe028966c549280645c2c373a8ad216345abc690a0b9e5089ba0437c5a6b934046ab0e6792f7169562083522a44cba4415b74ccf3cb032a656ce94c924147443ebbc5d8f73eadf736d3b50b74f347b6090aa95619d93724fac6cbba8494ac863c3cda820435a6a89b4917d75141bb1c1b322d69e54a9664a8e9308b4072a1d07662270c21906018d83806d50bcfaf6c693c914e8ea967a4e324b1d62efac910eeaace6d8b68af6537066a00b029287da2b042d1ad61224b77b2b80e26a168b1c6bab156b423c4081758b15ab6a291bb3be1c4c43670044c087c178548c94638d4a2e73145bea7b0cbaa6ebfc78b46e485bea492ea9c7e8f639ce0a1956d876014fc1a24c6bd538747504c171497142c1ac712f4be67573d08805cedfc6f105895329a5465a62694494e66abafcc864e9a982fd110c72ec590904382c7bb9723b990fa7c42b3b6bbb221779e87482c71737150b53873cbb0f35c6dc9a991e26b3505c2ee6a5d31b95b069797b9d300395162cf31311da835243b56d68b7a4ee76746f71ac9c5504583935dc75bbec992b5e4791407c53f0a605dac7f636b8518fb2007c33fe5a03b79fc7349921fc4e5ac79aa1aa8462f93e98e7f9118b91c11baec561c8181185b0f16e183c3e005e68720365b999ccac3d9296cc15b6f93332c8954300df5b4377b64999c26da179632d6a8f299afb899023bbac20c0a0957b3cb4df05298781e354a6c0632a8be351e94ec24d857550bc08b082880283c3bcc182273fc86bd838da5d34a9dc829a860533170745c0b9521ec91f12b03aefc9fcee605f12b5bcf22a1ed27a6bdf0ac7a235fdf6289023757cbfcc2824b124092a5c8f76b32f54073828efa14c28fa1cfcd407feb687e10287112f9cf453497f654026fd662fb21c956db4b35a00b06bb84a538c0cc99009e369c2dd725b897408b38a3fc6400070303759c14cae702902c03279a6a9c50b5be20a3df144d59b72d78e1612abc7d3ed81db8754d07120a9ed50e8a4942b572478521ba739c4aecc8b2c9d4aadf063d005442b3445a33887272715afcf12ed570b8965811d0d650f5a68f272a9e45c78d16f243d07322d7330f04c10607570c78e08aa0a8324dd13ae3c48a5830b6a6da90fa69a0ef8254aac3b7a9859c93d89aeb22263a4777e3d851d92c70affa2611b1533c548bde3160036c39fc804846b14707189c10859fe17b3be4803036bb8b60d075b8d53e84615df2007db1481c9c312e7de149b68b04d0462d9612c171b03262095b98c586c679727cd1960d13a04a3c0381930a0acbc9ae1c8a2f798417f386cef51aa81853c3259680938b28aa8b53b881ef556e769a373964c77192c9c2138e3447b9f7c3387f042baf4c7439b1b951e0049a124331a2af82cb928dcb7059b944c55800d16b3c47674c39176bcc105eb7f41a1d9b7ed0198c10e4921d5220860c4c20c728b851b9dae4747a9c995e411ba375580a1b6a05b8830c699dcfc84f26e2084c79c0b5c2352e97718ac0bcca3568b0575a20c8c202ba0cb3fac3e3c0cb69389e42927b832084d460593d3402680ff49fde8a2d619bdfae52f3e49f5ff4e19daf3f03112a0ee396b367c4e5bb8e0c2f248736ed0e90bf1b1fbf13498bf6551a454816df1f769d85a1f0d89263be08a4cc3d38f890428671eac2be34c9ac82db9f97c70755bb00ccad61cd2cddb778fdb16e813b067536719ab90fc7fc314f3803bdc7ea7946f3aa8716628e8aa9c76ea07569d768d6a91131ee04fb68afcaeb0b197d13abbcc4a28884bc21e8e9dd22b1ae9e13c09f5d3058abb99700aaf3a62a17a5d8077d310c614ae15029bd1081c2bdf7661d58749ee90776aa204f689dccbad6c6ec1667a3dbfe0debbcf6a4970087505e9b59f928bdef4f8065b60726584dd3f8d336e5aef232912bfbc0b502a2960d09024420d1f8cbe1e2f1239d7c788c363efd7ea0722e5d21dfb3ac9e40f8643cb742fb0b6f8ae5cc73cedd69779cd13d8a0486a594393bf8192fffc2402d7c73488cc8bd099106d5d9c781fc6b8bd8f09dbd093a942a353ec6d437575715797dc1ee341b5ff9289fc73ef323566d7c2c2196ef291decb9482d1a7e4be3f427ca2d96e37cf8f54e6aa312818644ec414aedf30db1e643886222dfe1cd7f9d84f596271b8e0705e91966126f64c52b89ed24595397d5187a37ef26539f7c3a534d631548fa93fc73fca9d1c6f5bbb3ce1b3d8040094c29fe891742101e7e5d35bed43e81026e858e60384239e346a345d9d519446a2803e54bf0a0257416e7da00c8d16f478e5ec2b19b74b39c7c2bd1102099fe8627f4cb7f57325dd910d0d5c3766b907096d9a749ef8c88062579002468be82f656cfdc1cab40c2f337f9ea894beff57f2fa315bbbeb0a38d6b7e61ce0fa495f75871d0d606133e755300767840b880d62e6f1d01a45bb83d59d294f9e752743ec656c2e7e48d56c8843a619bf74ffbbc58c741ef9be129463dc803d330aed24d3d676f86f8fbd0eccc449af0369c4c8b92c7a825f3d1294e0e68131a2af9735240c9cbde3099e1eb0454e2dcd01073ef59115886540820968d7143657aa8bf6eba23a429e7b3e7346ee1bcd1da8acbfb04b474a35b1f7022055245298de3a6f2361060f459d65b7b1d0e5201148792ac346077aae00252de56883278efc5d15398f95520f0b87c44d6a30fdbacb396b697a8701bf1576b4e36d57f2573e568891bc6ca561c10a86fe8a39ec6d54dcbf8b789b1592364fdc2dc65a58cfaefb6e4c1d2316ae072cb8bdf61adf21f22eaa1cefef2d0134099020d9de92df8e2ea087e2d855512fa4c544b42a5d200d2ccc115d1ee72b9cff42520daf3dc9f411732d7443418c31e68965ea2b67217ace219a4a51e350fca141a243d906f7c73dbac4de3d4f3bed56e0f7eab975a7bf67ed21f2e4dfc80a0cd0bb78f83b4f19e73e7e7ff223dcdd6d336b99bf01c60faae7ce88ee3e551f35deb7b8b3e70b758b940d644673b5d53837b902f1d88f236d94467588d7045cd9b0ce35c72579c6176900fe78a92d11217634bdebd8fbb6338c905fc489e17bfe1b277d36851bd3a5768691deab4076254a469dde8712190243e693ebb4830521c1860fb3e3f30dc249df09bfa51eb6f", + "password_file": "020173db9eeec10ccfc4946c5674d3f5a9b76738cc0d5a68b108bd334cde85b49e29a68973cb485f88cb2a2f204ff9ce71f80bf27380bbc707798c4ed7b88e2c85d33280fa66615afa29e71cc76873a2fea65d54b20425ed3c40671c4f7a2c645af8ed0191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c3897be3be74cfc2db573d5937c7008b347a60e6c6edb356164a661d28a33eac73c", + "export_key": "b107a66f22beb9b180e6526edc62ccf79b02ec10a5caf6e079ed67cdbfd81d53", + "session_key": "1acf0252ecb0e3e81235f5c87eb0e30c9decd435e57c344258cf1044946e991f75e55d9d4c023b39abb1e17aa3c081dcd7879058aa7b7a8032da1079be52c37c" +} +"#; +pub static TEST_VECTOR_P384_TRIPLE_DH_KEM_P521: &str = r#" +{ + "client_s_pk": "020021414250e55d25a05bf56a0f7a8baefd1a9102142d33006baab534f3d36c61aad76910b73e90d745bda0d30aac568e52bcb8b203c497b5ab3b1ce426b4b5e9408a", + "client_s_sk": "0191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c383d7efe9faaf7a5138eed7b1db0830d1d93378e5c245862f90d686253752ba1ce3363", + "client_e_pk": "02010cdb74614552df1dbd2028eeaabee3f5f7226f0a200dc661ce1c1143d7402c09c50a8b3b40887fa9324cab6ffd33d9b47732e122a07d06dc7add66cbcb88fdff35", + "client_e_sk": "01826e767f2960694852b4231c7a4b4e5f442ab2a6c7f85a14e0548f035c62fcc4e399f0d2a935c9221773eedcd1ca118561c4d5f01e033638e8c999cf7a4c344dd1", + "server_s_pk": "030007864ac5d5e484396228574ba54b350d05f117d691e7d436f7a42a86b80ca35e7e8dcc2862eb774249ec45ed36d8375fdcfd2bced9e0037bcfbb649c6a0ffc8d2e", + "server_s_sk": "000cd2237f8cc7da2a2b144249df100cd38a7faa8e24da3fb9c6c78ba2ce4607063abd60915020f04278b95ae462e1232d1b20a399d94406119c88b73da354f0c19a", + "server_e_pk": "03019aac00e2d71f7481c86b2fd6e5d322dfada045cc3a08125b3dba79b45e3df28897af6482e8b93c22fadb58d8b5d9b703e0011cf77d3183aa8d97c502e234254ef0", + "server_e_sk": "016efb612c53e84229af489df498156104e2aa18c43dcf5699f1c90cf74c8c3c7df396a733521aafe24d12370e6a34cd41b15e4350d0e2683b998f2415e3f445fd6b", + "dummy_client_pk": "0200b0b6b845945e221270aa5599754229c69d2410bcbb53d620f4262367e9c6f32a0ac32e4ae1ba8a51e970e7aed8e09f312f79ba4ede2bc4189626b508bdcec08d8d", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "34786051c54dfe7a8386928e812386cc83d84dc595bc9efd6d82fee5d5be24109d2508e3fa5575483e8973eb72f59f75", + "oprf_seed": "0a21aa10667cb3715191792d822015c1b300ea6af2d1c7c429dcb07d8f0f691996306ba315f8221e511ab0f11f71fe47", + "dummy_masking_key": "65ab925abafebc92f3d37a1e29965f2ee2b707a32743af30d4dc07380e746432fd9bb07fd570b12b195efe1c8f39d5d7", + "masking_nonce": "3f87e1cb754cf4908cc6cf1f2856b6fbb9cff0a3e0832db07b0a35b70ecc04760a34572e84579906f0ba6cd403c3962234e974d5f2806aab9953e1ee0efcea10", + "envelope_nonce": "2f98027f49cecdece384850929ce9d3b0fd624860acda513da8ab39bc36f7821", + "client_nonce": "d7d6ba25df2b8fe865bb2f3a94db41b56d7275384017c033e1a62d5536d39d8f", + "server_nonce": "4239a9fcfccacc5623588c32c0f99bec53243d8963dd7fbcfe8a2afd0034158b", + "server_sig_rng": "b9a17caddd81307e317cf08e5944a0f6819811e59e571b9c43e891c2c36cf547fc3a80f4112df5e8f5ca154593552262645d524b81fa14e848a6a4787d8a24923217", + "client_sig_rng": "6224c06444bd18e351fd84348b8ed5c08e3dde4874763fe2eff0e84a20b3fe9a7266b0f67296a3d1056cec20cca5f153e55fbffc96b85b8fa86d5b47edb354ea4653", + "context": "636f6e74657874", + "registration_request": "03510d65a177ad3d0db25e4c62c8d34eaea0516ab6cc8967b2d25e597af2e33f619e9bc4312059cb68faeb1aec655cee76", + "registration_response": "0235017f6c4141bc16a595914fef41d342958d9b01187a5d5bfc5355f004ca773e32160cea256945c82772a892a6f19996030007864ac5d5e484396228574ba54b350d05f117d691e7d436f7a42a86b80ca35e7e8dcc2862eb774249ec45ed36d8375fdcfd2bced9e0037bcfbb649c6a0ffc8d2e", + "registration_upload": "030095f619e2660b78bf4ddef4f1ff23b1839366f9a214b7aa9b15a5f4b94994c45aab08be769a4d1e37d1bbd32ea3247914007487afbc34face786b9dcb326002baa55a1eca0bf52b6faff5330bf6cd1f5d2c6511da4c920da9f2da98beeec1c125926850846d29c84775872e777362b73fd00191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c384216604c9da2f064937780896e19b83417592b478f7440348b524e9a1fad82f631a3f8ae1d1702a12d927e67f037b961", + "credential_request": "03510d65a177ad3d0db25e4c62c8d34eaea0516ab6cc8967b2d25e597af2e33f619e9bc4312059cb68faeb1aec655cee76d7d6ba25df2b8fe865bb2f3a94db41b56d7275384017c033e1a62d5536d39d8f02000bc84c5e5821871038d879ba46b9b37078dc192612a094a088990f193ae1cbac240638c46dd5b743e409e936efc4147a271ee11b9e7fe606864393c245883e9cd14efb801fc42866818b18dc08d7153b5e337e10c5628d3a83ca55067f6bc294a53ac10a2ee4c122c5e53ba1cac538c4826e7bb23a649559c4c7b771b832f649f9a15591a707c05c517b668d20a20bfa7393fc46a8ee8b7ed46365748b28b536827bc670580871bfe4cef0a32892a1ae2c160271ec6d850c863ba2470ba0cad56c195762bdcbd8461a9474e1b62a1276134c910ac18b7cb6f81c7ef76a31fcb84fcb9f8cd5027f9b0b2bbc22ebfc1373141d5515bf8a1572a9c084f7e730919a15c6a66d7862838a15619c548d33269e6e608ca94020d520c1bba474428b79b9e4b5622131f7ec8b0fbc70253c35d4f9c55a40c04d6b5820a62382b57920c5598f769276780255e67c563773f2384d053a6aac0a9e16d090040830794cc9eebc0f8b5866def1ac25982a9f2057ae4b537b043dfdfa07df8668c9470d0302c5b2212c16a731f604c5d04ab252241d9ca07767ca5cea52bb3c4547f73163c0b4055927730e63ab7ce92de7fb2f3d9a59a833bdf023636ab8aa44da9b03791074f0510bd80b93b9c072729329519f04c91eed099ed621414045789edc1737ba6e3ed7640a18b0c38bb945178d9e404825575b1ac8433138178b58a3e820b6f4b5bc67f4a1ad72b7fc4392e4d96ed636a0e1793cbe214e03815633531fb659c92d339e3353840d33a0422947194ca40a33be96196fcf080a68d7a0050292cd3a7ebc69a0d88817abf07459aa3ce0999018109a787a6980ec44707871d8dc2fe2b335210386424abfdf049f0b1680e6303384409cd484c8071c1529bb3d3839c09718641ca41fb8aa9cdd354ba50351dd836426b0c38845042d2b2212734a45232f1c86a4befa4b303354f50cc3f6390aeba5caa9bb5ef1bc7b6f9605cbe29a09695e85c5c8464caa46e5259ab95930ac2219c48ac5ac7362326d22b43041c3c567ca527e038c37d62554991b4b17ae3b8857be02b6c4aa70719bb0e4e89755662c7428ced88359309a986b6464ebc6cbe3062ae3057028489daafc530ca2613f975dd44313a0175aeda94ad106c3392864fcc906080cbfb58a2b9257b742a0874ee76749f0640eec02ed201f55b50fc27740d0a54929271855f72bc3e37c5d615696d0a4f4e9954a90a748482126927951e5c2451a436592283c325d497cc7135c702fb54703eb6d5c220ecbb97574b932cfcc970cb65d4a43c5f285630e55644e098d4403bda37a5c02a4a4c1d341ad8087411a8fdabb7346132bebc5be668461b99a76fe453ebf746e7d3774767298619aab0b02697361c0f6e88309618403586988f2110b5cc8de9380f1a2c86b999c726202f0ea4932b7a07320b147c30dc71572628608a65b39315b405bb63649b67594d7a1c7fa1f2f0a66dfea832da4a2f2639116278cef9438b4db24f7e937d15c834cbba531c54cad85254b44a42062221f1467f42cc5a254628e66801028aab999870a80af7c9a1bb260baf3fc3fc6ec8c0354cfacf3c2a0b5bed8b77e23806a287823b515a84e9b55c17a35d3bc28eb138bb982b6178c1162db1f0859267094924ea0cf942918e2504802ac883f59479069c8b0d75fe067a39b9341fb33ad7c53677f58bd00dd11e59b93f8050182d8275e76b2c23fa6a563c7a1d9c0dacbf4876f4cec049f0ecb60fbdb73aca8d4522b", + "credential_response": "0235017f6c4141bc16a595914fef41d342958d9b01187a5d5bfc5355f004ca773e32160cea256945c82772a892a6f199963f87e1cb754cf4908cc6cf1f2856b6fbb9cff0a3e0832db07b0a35b70ecc04768b4066746fa03cdee44e7ba52d4afbd2965a70d3a624c7bdaee8a751410313ca7396666136566cdac9491ec643c65873814994a729db7acc62c40970680e4b3739074ada8d9500d1cfade000b828f765150936a08186d22fc816ddf356094195dda9eb8577a533f479562abe39da0bb585c8bb4f1efba36e6a56db2f85221cdff765b6e9097d316dc2d957e8231318b02dd9f696a733521aafe24d12370e6a34cd41b15e4350d0e2683b998f2415e3f445fd6b020132f3dd85392087784911508b9bb177bf94f6d7b580a155b189de06276f6148699134fba2d318befc8a97dedf14b33ea75f47382000645d7498cbe27a0ab294ed9426f251699dba8bc58d7b448eb44d445cc4955769a05caa80806ba85fa1544a065db87907594e544d7497e0021448d41c6850b78a3f66227911b4b2c8584300a0516c9af4a6b1e9e8d88b68c04f07e87b0a615c7fed7f257a20376cfbfb472a27f48c58d9d96a3c883d35c21d9d4b25a251b17f3aa9e53972299fb861f191602829bbc2b0f4e95a65b564c375d11912dd13224d1a92832e41a0938950800e1082bf263cc13d84aba92d141e9bcb0e6dd676aef3e67c9e82452b1b03832a35e27352b00faf381d288599e2cde993d5df5527b0f423f76a46d9ea23515a877d8a156c3cddd6d62c956e1d74769a584d4438f0d78b4120c60268297fabafe2259d5007daa1c7391ec3d3f074ae32f7a38e1fd918751b6d001b2b5dff3c0b2b158125bf3fa4bcc5baf85cbbbb37f18fe4de7e437c1a9a4fc4d2a51a2d8d271296e3b63712a879c5663fe7499c69835bb90170e92703adc96537df29421895e50e32e48979cb2b644a1bcd39806b2e5165dada17df6aa2577992c0f49f46b6b63744dc2fef9eef67009b50a51b9fb1501abfd22dcda691805e63f1742b145e148cf1ae41d59a05a1182bf2c0f807d5a166cf3c5bd08202f0bd94376372a49094430af10893fade192224dac19beeb17b09ea00b1888e5bf6777e802692fd1772087a66f108d9b27fe0b32ccf0750ed284bd354f60e9880bae765f91f8926f5e7c1992d0d25f5f379b52d4013585a78d8b9f5b093549759a3e03ea74e33356e1a30331c96e820cd9be9d96565b31cfee5529f3723d1f929521b40bcdcf053cb5954f58c8676e7ab5e8da1fcc5c0cab4fa7ebc15c96597a049adabe25721af524e06df6187cf184a7101dca867278e251f310399e55f1c09cebed0463856b8c40121c083cccf383a238afe3999e938ef12db61f5e7aed12883264b994581b7ecdcaae379955ddcd4b686d618903da25fefe333668dc8793f8705f811f466f820616d592e32f28f32d28ac7bb37640e23b7b4c8e474886c322a295d6d1269ec2685b99b2b66403d7222a22e1e5746553bdd7badda01a8b192558f0e81daa2e43533e5004841ea7a9bfbf5a45f8cfc95daaa776362a96c41e9cba99ed6e2f98180eda016af839e933e525ad0c0a9b033dfad448b5d17ba2ea971598a1899692f33930d59c090f6200da0c64794be2d2023e0fce940d725cde5d5ca8b82b9c5f05af98fc1496aa9d498c1b359a6e8083db260ec3b2faaec7ede9276a25e51d8346a70299e003f14ca3747e902700eacfc92349e7e3174bf5fb5e4452b5f62d2f6a2a4c7dc0ab1e9e8ac4622799af931f2bea6bee69127fd880f82ab75400634d6c342d285756722aae7cb9f1be6a5474ab7f783f1cc9cfac99158da092bc131d6d6bf08b2603820811348e6f8d9c35c7885fb76fedead99dd50be49ef466508f2c2293bfcedb29e9aa6bd6e289da961be235bd81527370723e6d9bcf06b26265847a5715b9f3651c252b21cf7a77ee7c2ae22e4ac97576833630e37796ce0fc572ee37d275282d6b8dd1ce5edaa298baa9b948432417c4d6277206bb1356c26732f9c532abe6c2e369338559850236621d9b4a116411e8f9d2fd2e4072380c2336fb1f88e22", + "credential_finalization": "e1f20d16260246ce40f328f06eae70728c54f77e5ddcccd68daccaf0177f9b37a1bedcbb99db8b40e57264e35fbce4e1d9c9ff4f1aeccb48f52ea089bc9a4b18", + "client_registration_state": "34786051c54dfe7a8386928e812386cc83d84dc595bc9efd6d82fee5d5be24109d2508e3fa5575483e8973eb72f59f7503510d65a177ad3d0db25e4c62c8d34eaea0516ab6cc8967b2d25e597af2e33f619e9bc4312059cb68faeb1aec655cee76", + "client_login_state": "34786051c54dfe7a8386928e812386cc83d84dc595bc9efd6d82fee5d5be24109d2508e3fa5575483e8973eb72f59f7503510d65a177ad3d0db25e4c62c8d34eaea0516ab6cc8967b2d25e597af2e33f619e9bc4312059cb68faeb1aec655cee76d7d6ba25df2b8fe865bb2f3a94db41b56d7275384017c033e1a62d5536d39d8f02000bc84c5e5821871038d879ba46b9b37078dc192612a094a088990f193ae1cbac240638c46dd5b743e409e936efc4147a271ee11b9e7fe606864393c245883e9cd14efb801fc42866818b18dc08d7153b5e337e10c5628d3a83ca55067f6bc294a53ac10a2ee4c122c5e53ba1cac538c4826e7bb23a649559c4c7b771b832f649f9a15591a707c05c517b668d20a20bfa7393fc46a8ee8b7ed46365748b28b536827bc670580871bfe4cef0a32892a1ae2c160271ec6d850c863ba2470ba0cad56c195762bdcbd8461a9474e1b62a1276134c910ac18b7cb6f81c7ef76a31fcb84fcb9f8cd5027f9b0b2bbc22ebfc1373141d5515bf8a1572a9c084f7e730919a15c6a66d7862838a15619c548d33269e6e608ca94020d520c1bba474428b79b9e4b5622131f7ec8b0fbc70253c35d4f9c55a40c04d6b5820a62382b57920c5598f769276780255e67c563773f2384d053a6aac0a9e16d090040830794cc9eebc0f8b5866def1ac25982a9f2057ae4b537b043dfdfa07df8668c9470d0302c5b2212c16a731f604c5d04ab252241d9ca07767ca5cea52bb3c4547f73163c0b4055927730e63ab7ce92de7fb2f3d9a59a833bdf023636ab8aa44da9b03791074f0510bd80b93b9c072729329519f04c91eed099ed621414045789edc1737ba6e3ed7640a18b0c38bb945178d9e404825575b1ac8433138178b58a3e820b6f4b5bc67f4a1ad72b7fc4392e4d96ed636a0e1793cbe214e03815633531fb659c92d339e3353840d33a0422947194ca40a33be96196fcf080a68d7a0050292cd3a7ebc69a0d88817abf07459aa3ce0999018109a787a6980ec44707871d8dc2fe2b335210386424abfdf049f0b1680e6303384409cd484c8071c1529bb3d3839c09718641ca41fb8aa9cdd354ba50351dd836426b0c38845042d2b2212734a45232f1c86a4befa4b303354f50cc3f6390aeba5caa9bb5ef1bc7b6f9605cbe29a09695e85c5c8464caa46e5259ab95930ac2219c48ac5ac7362326d22b43041c3c567ca527e038c37d62554991b4b17ae3b8857be02b6c4aa70719bb0e4e89755662c7428ced88359309a986b6464ebc6cbe3062ae3057028489daafc530ca2613f975dd44313a0175aeda94ad106c3392864fcc906080cbfb58a2b9257b742a0874ee76749f0640eec02ed201f55b50fc27740d0a54929271855f72bc3e37c5d615696d0a4f4e9954a90a748482126927951e5c2451a436592283c325d497cc7135c702fb54703eb6d5c220ecbb97574b932cfcc970cb65d4a43c5f285630e55644e098d4403bda37a5c02a4a4c1d341ad8087411a8fdabb7346132bebc5be668461b99a76fe453ebf746e7d3774767298619aab0b02697361c0f6e88309618403586988f2110b5cc8de9380f1a2c86b999c726202f0ea4932b7a07320b147c30dc71572628608a65b39315b405bb63649b67594d7a1c7fa1f2f0a66dfea832da4a2f2639116278cef9438b4db24f7e937d15c834cbba531c54cad85254b44a42062221f1467f42cc5a254628e66801028aab999870a80af7c9a1bb260baf3fc3fc6ec8c0354cfacf3c2a0b5bed8b77e23806a287823b515a84e9b55c17a35d3bc28eb138bb982b6178c1162db1f0859267094924ea0cf942918e2504802ac883f59479069c8b0d75fe067a39b9341fb33ad7c53677f58bd00dd11e59b93f8050182d8275e76b2c23fa6a563c7a1d9c0dacbf4876f4cec049f0ecb60fbdb73aca8d4522b01b7ce737df54c52a2721a8d8241d5965a39f6f0c9e28197627275769f1844bacd4e680154752659029f81f046e86d81c365d1ebf22b59d2476a7ff176f9626858a7d7d6ba25df2b8fe865bb2f3a94db41b56d7275384017c033e1a62d5536d39d8f6b5546a5c40b0f91c1fb6848e480a7acb6cc4e4927f55323cf088da41537c3c36379375ef4833489492f4a579abd4a29a2f863f29b03e8ca3e21d528eb651d3774c5f8fcbec28054c36938f30b756cf06fa5809f29157ae33608f31728f843bdd4bbc6e059201a542425595fca152d9f98c8b8119d5169cfce919ea39cbe59490ba4f982c4dbb6934b12cdfba3657554b0c56563a33814145a911bad7a624d31e1992c3199afd2935f70b6179664571772f75002fc053e4ab742f50c29f0f21ba3b8b9084819fa3806f0c4ad46c451faf97aaed931e5731ab53464c1a363cfba51b13267cd46228a0936c0747dc31a139c8c640e3448126a558b9bc6bbeb39a188102de989017817aeb0b880641d0f344011071b072093dc3815f164a7c77a09db7b829642546beaa8748b0909a0205e9b44d3835d0c1985c0a961e219b995e95e0c66ab3699c2f560b06236caf05035c49abd7f01554662c799b9672ed1a201caa45746a15280bbc2c752efd990950a40d8a10acff90edccb6c62f263751396bada632a15964b2312d0d8a8d6c8396e7317f7c844c725b1774264fc8744ecdb18c1c3cc08f27a336144a362a7fed3481aa1c7662b78c9e12b2e0c866acc62ae7a00dc663f11443887247b2365bbd0c071745723a0c93bd9f36d9431807a62b6bfd34ca4eccbc900997b1c24fa89789fd389b2917404525a84602777f73540c637a9921db3c88503a57cee46753da3c3fe44501be1c38037875a95b7d619bc4e608a5a5c794e840c1ee691ad3a2b4d473cea7265e9e26eaf7475e071b5faa6a50fe13496269b1aa65a0b7c6f6d5b2a48eac78bf7b11e39c04c4baf173b19ac1a76f4a6757dda28eaf38b36cc91a931141f4c3223c1a1ddebbfdf64ccb83a9f65358fc4cb07ce193c435c5300d006ce1b9e94f682b2d61cedd57937b3c4f3126a471610924b096d386269c0b00fd9a15ea8b682fb3a545502c7b697a9b36dc5b1193a7ace69c07fdea11bd7755ac2c233d17745ba673087938aa1f2c661ec30f9fb05e54b7aa8395823ec6824e704bb73c340583c1193bcd7ab57fec7cf5502850cb91f4a94a246382a4f99389db981a6337922e9450bd7b00f5a798d5887ed5043f609679779b4d2036e62c566cce94adbd8afa9e69ad8da1de39aa071e9b8de336902b18111240d9bb45fbd3575a3467ec1352739d85b21e49d331156c6f70ca6c4abea03cbc5f4beba89a4062c16c1044072ca10d9350b409b960c080426b0409a628d52e6b5b1b24bce42c90a4ca95aa6ce21ca7befa464f39a5ab5ca65cb1bb108eb0b7ec6518c95610e03aea1c78ecf0b97b43393ced4a2676833c41104f8c4a20d58b874bc2eda6abbf6b5bafc675e0ceb3b08b9555ed298fff7ab7ef8be581a336c79502abaa9c7c77e5335234c25b4b72a9b9836548139c20f0499ef912dde537989812ded1aa9cb8905f4c52f93d53e925a6c33bb280076051af9b4abb0b75c6949c9b01b682cc921db9004c4409570156b47b5d99023b88807fa368c60eaca27158904fb459aba583edb709e8c70aba26edf888ee0a9285cd008ace73c68c69187948d7aa899363103067070a7b21e30b32c0bca9372874252036b4efb801fc42866818b18dc08d7153b5e337e10c5628d3a83ca55067f6bc294a53ac10a2ee4c122c5e53ba1cac538c4826e7bb23a649559c4c7b771b832f649f9a15591a707c05c517b668d20a20bfa7393fc46a8ee8b7ed46365748b28b536827bc670580871bfe4cef0a32892a1ae2c160271ec6d850c863ba2470ba0cad56c195762bdcbd8461a9474e1b62a1276134c910ac18b7cb6f81c7ef76a31fcb84fcb9f8cd5027f9b0b2bbc22ebfc1373141d5515bf8a1572a9c084f7e730919a15c6a66d7862838a15619c548d33269e6e608ca94020d520c1bba474428b79b9e4b5622131f7ec8b0fbc70253c35d4f9c55a40c04d6b5820a62382b57920c5598f769276780255e67c563773f2384d053a6aac0a9e16d090040830794cc9eebc0f8b5866def1ac25982a9f2057ae4b537b043dfdfa07df8668c9470d0302c5b2212c16a731f604c5d04ab252241d9ca07767ca5cea52bb3c4547f73163c0b4055927730e63ab7ce92de7fb2f3d9a59a833bdf023636ab8aa44da9b03791074f0510bd80b93b9c072729329519f04c91eed099ed621414045789edc1737ba6e3ed7640a18b0c38bb945178d9e404825575b1ac8433138178b58a3e820b6f4b5bc67f4a1ad72b7fc4392e4d96ed636a0e1793cbe214e03815633531fb659c92d339e3353840d33a0422947194ca40a33be96196fcf080a68d7a0050292cd3a7ebc69a0d88817abf07459aa3ce0999018109a787a6980ec44707871d8dc2fe2b335210386424abfdf049f0b1680e6303384409cd484c8071c1529bb3d3839c09718641ca41fb8aa9cdd354ba50351dd836426b0c38845042d2b2212734a45232f1c86a4befa4b303354f50cc3f6390aeba5caa9bb5ef1bc7b6f9605cbe29a09695e85c5c8464caa46e5259ab95930ac2219c48ac5ac7362326d22b43041c3c567ca527e038c37d62554991b4b17ae3b8857be02b6c4aa70719bb0e4e89755662c7428ced88359309a986b6464ebc6cbe3062ae3057028489daafc530ca2613f975dd44313a0175aeda94ad106c3392864fcc906080cbfb58a2b9257b742a0874ee76749f0640eec02ed201f55b50fc27740d0a54929271855f72bc3e37c5d615696d0a4f4e9954a90a748482126927951e5c2451a436592283c325d497cc7135c702fb54703eb6d5c220ecbb97574b932cfcc970cb65d4a43c5f285630e55644e098d4403bda37a5c02a4a4c1d341ad8087411a8fdabb7346132bebc5be668461b99a76fe453ebf746e7d3774767298619aab0b02697361c0f6e88309618403586988f2110b5cc8de9380f1a2c86b999c726202f0ea4932b7a07320b147c30dc71572628608a65b39315b405bb63649b67594d7a1c7fa1f2f0a66dfea832da4a2f2639116278cef9438b4db24f7e937d15c834cbba531c54cad85254b44a42062221f1467f42cc5a254628e66801028aab999870a80af7c9a1bb260baf3fc3fc6ec8c0354cfacf3c2a0b5bed8b77e23806a287823b515a84e9b55c17a35d3bc28eb138bb982b6178c1162db1f0859267094924ea0cf942918e2504802ac883f59479069c8b0d75fe067a39b9341fb33ad7c53677f58bd00dd11e59b93f8050182d8275e76b2c23fa6a563c7a1d9c0dacbf4876f4cec049f0ecb60fbdb73aca8d4522b0af81d419605c8d57632d99b37c1a0c129428b57371d31bc501da391a6afdb769d2508e3fa5575483e8973eb72f59f7501826e767f2960694852b4231c7a4b4e", + "server_login_state": "7d926466f9e143973e959f5870248bc6d85a8669bc33df13078657e6827515c5dcab7d29e7eb884d95de7a3814d7886a6749970636968cc35057811513d629b2e1f20d16260246ce40f328f06eae70728c54f77e5ddcccd68daccaf0177f9b37a1bedcbb99db8b40e57264e35fbce4e1d9c9ff4f1aeccb48f52ea089bc9a4b184efb801fc42866818b18dc08d7153b5e337e10c5628d3a83ca55067f6bc294a53ac10a2ee4c122c5e53ba1cac538c4826e7bb23a649559c4c7b771b832f649f9a15591a707c05c517b668d20a20bfa7393fc46a8ee8b7ed46365748b28b536827bc670580871bfe4cef0a32892a1ae2c160271ec6d850c863ba2470ba0cad56c195762bdcbd8461a9474e1b62a1276134c910ac18b7cb6f81c7ef76a31fcb84fcb9f8cd5027f9b0b2bbc22ebfc1373141d5515bf8a1572a9c084f7e730919a15c6a66d7862838a15619c548d33269e6e608ca94020d520c1bba474428b79b9e4b5622131f7ec8b0fbc70253c35d4f9c55a40c04d6b5820a62382b57920c5598f769276780255e67c563773f2384d053a6aac0a9e16d090040830794cc9eebc0f8b5866def1ac25982a9f2057ae4b537b043dfdfa07df8668c9470d0302c5b2212c16a731f604c5d04ab252241d9ca07767ca5cea52bb3c4547f73163c0b4055927730e63ab7ce92de7fb2f3d9a59a833bdf023636ab8aa44da9b03791074f0510bd80b93b9c072729329519f04c91eed099ed621414045789edc1737ba6e3ed7640a18b0c38bb945178d9e404825575b1ac8433138178b58a3e820b6f4b5bc67f4a1ad72b7fc4392e4d96ed636a0e1793cbe214e03815633531fb659c92d339e3353840d33a0422947194ca40a33be96196fcf080a68d7a0050292cd3a7ebc69a0d88817abf07459aa3ce0999018109a787a6980ec44707871d8dc2fe2b335210386424abfdf049f0b1680e6303384409cd484c8071c1529bb3d3839c09718641ca41fb8aa9cdd354ba50351dd836426b0c38845042d2b2212734a45232f1c86a4befa4b303354f50cc3f6390aeba5caa9bb5ef1bc7b6f9605cbe29a09695e85c5c8464caa46e5259ab95930ac2219c48ac5ac7362326d22b43041c3c567ca527e038c37d62554991b4b17ae3b8857be02b6c4aa70719bb0e4e89755662c7428ced88359309a986b6464ebc6cbe3062ae3057028489daafc530ca2613f975dd44313a0175aeda94ad106c3392864fcc906080cbfb58a2b9257b742a0874ee76749f0640eec02ed201f55b50fc27740d0a54929271855f72bc3e37c5d615696d0a4f4e9954a90a748482126927951e5c2451a436592283c325d497cc7135c702fb54703eb6d5c220ecbb97574b932cfcc970cb65d4a43c5f285630e55644e098d4403bda37a5c02a4a4c1d341ad8087411a8fdabb7346132bebc5be668461b99a76fe453ebf746e7d3774767298619aab0b02697361c0f6e88309618403586988f2110b5cc8de9380f1a2c86b999c726202f0ea4932b7a07320b147c30dc71572628608a65b39315b405bb63649b67594d7a1c7fa1f2f0a66dfea832da4a2f2639116278cef9438b4db24f7e937d15c834cbba531c54cad85254b44a42062221f1467f42cc5a254628e66801028aab999870a80af7c9a1bb260baf3fc3fc6ec8c0354cfacf3c2a0b5bed8b77e23806a287823b515a84e9b55c17a35d3bc28eb138bb982b6178c1162db1f0859267094924ea0cf942918e2504802ac883f59479069c8b0d75fe067a39b9341fb33ad7c53677f58bd00dd11e59b93f8050182d8275e76b2c23fa6a563c7a1d9c0dacbf4876f4cec049f0ecb60fbdb73aca8d4522b516c9af4a6b1e9e8d88b68c04f07e87b0a615c7fed7f257a20376cfbfb472a27f48c58d9d96a3c883d35c21d9d4b25a251b17f3aa9e53972299fb861f191602829bbc2b0f4e95a65b564c375d11912dd13224d1a92832e41a0938950800e1082bf263cc13d84aba92d141e9bcb0e6dd676aef3e67c9e82452b1b03832a35e27352b00faf381d288599e2cde993d5df5527b0f423f76a46d9ea23515a877d8a156c3cddd6d62c956e1d74769a584d4438f0d78b4120c60268297fabafe2259d5007daa1c7391ec3d3f074ae32f7a38e1fd918751b6d001b2b5dff3c0b2b158125bf3fa4bcc5baf85cbbbb37f18fe4de7e437c1a9a4fc4d2a51a2d8d271296e3b63712a879c5663fe7499c69835bb90170e92703adc96537df29421895e50e32e48979cb2b644a1bcd39806b2e5165dada17df6aa2577992c0f49f46b6b63744dc2fef9eef67009b50a51b9fb1501abfd22dcda691805e63f1742b145e148cf1ae41d59a05a1182bf2c0f807d5a166cf3c5bd08202f0bd94376372a49094430af10893fade192224dac19beeb17b09ea00b1888e5bf6777e802692fd1772087a66f108d9b27fe0b32ccf0750ed284bd354f60e9880bae765f91f8926f5e7c1992d0d25f5f379b52d4013585a78d8b9f5b093549759a3e03ea74e33356e1a30331c96e820cd9be9d96565b31cfee5529f3723d1f929521b40bcdcf053cb5954f58c8676e7ab5e8da1fcc5c0cab4fa7ebc15c96597a049adabe25721af524e06df6187cf184a7101dca867278e251f310399e55f1c09cebed0463856b8c40121c083cccf383a238afe3999e938ef12db61f5e7aed12883264b994581b7ecdcaae379955ddcd4b686d618903da25fefe333668dc8793f8705f811f466f820616d592e32f28f32d28ac7bb37640e23b7b4c8e474886c322a295d6d1269ec2685b99b2b66403d7222a22e1e5746553bdd7badda01a8b192558f0e81daa2e43533e5004841ea7a9bfbf5a45f8cfc95daaa776362a96c41e9cba99ed6e2f98180eda016af839e933e525ad0c0a9b033dfad448b5d17ba2ea971598a1899692f33930d59c090f6200da0c64794be2d2023e0fce940d725cde5d5ca8b82b9c5f05af98fc1496aa9d498c1b359a6e8083db260ec3b2faaec7ede9276a25e51d8346a70299e003f14ca3747e902700eacfc92349e7e3174bf5fb5e4452b5f62d2f6a2a4c7dc0ab1e9e8ac4622799af931f2bea6bee69127fd880f82ab75400634d6c342d285756722aae7cb9f1be6a5474ab7f783f1cc9cfac99158da092bc131d6d6bf08b2603820811348e6f8d9c35c7885fb76fedead99dd50be49ef466508f2c2293bfcedb29e9aa6bd6e289da961be235bd81527370723e6d9bcf06b26265847a5715b9f3651c252b21cf7a77ee7c2ae22e4ac97576833630e37796ce0fc572ee37d275282d6b8dd1ce5edaa298baa9b948432417c4d6277206bb1356c26732f9c532abe6c2e369338559850236621d9b4a116411e8f9d2fd2e4072380c2336fb1f88e22", + "password_file": "030095f619e2660b78bf4ddef4f1ff23b1839366f9a214b7aa9b15a5f4b94994c45aab08be769a4d1e37d1bbd32ea3247914007487afbc34face786b9dcb326002baa55a1eca0bf52b6faff5330bf6cd1f5d2c6511da4c920da9f2da98beeec1c125926850846d29c84775872e777362b73fd00191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c384216604c9da2f064937780896e19b83417592b478f7440348b524e9a1fad82f631a3f8ae1d1702a12d927e67f037b961", + "export_key": "fdef7f35937b70422146685688e870eb110a37ec6d0b516362e3df8b0e3c60614f4e69f06efb85a7266d80245e36e0d8", + "session_key": "7d926466f9e143973e959f5870248bc6d85a8669bc33df13078657e6827515c5dcab7d29e7eb884d95de7a3814d7886a6749970636968cc35057811513d629b2" +} +"#; +pub static TEST_VECTOR_P521_TRIPLE_DH_KEM_P521: &str = r#" +{ + "client_s_pk": "020021414250e55d25a05bf56a0f7a8baefd1a9102142d33006baab534f3d36c61aad76910b73e90d745bda0d30aac568e52bcb8b203c497b5ab3b1ce426b4b5e9408a", + "client_s_sk": "0191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c383d7efe9faaf7a5138eed7b1db0830d1d93378e5c245862f90d686253752ba1ce3363", + "client_e_pk": "02010cdb74614552df1dbd2028eeaabee3f5f7226f0a200dc661ce1c1143d7402c09c50a8b3b40887fa9324cab6ffd33d9b47732e122a07d06dc7add66cbcb88fdff35", + "client_e_sk": "01826e767f2960694852b4231c7a4b4e5f442ab2a6c7f85a14e0548f035c62fcc4e399f0d2a935c9221773eedcd1ca118561c4d5f01e033638e8c999cf7a4c344dd1", + "server_s_pk": "030007864ac5d5e484396228574ba54b350d05f117d691e7d436f7a42a86b80ca35e7e8dcc2862eb774249ec45ed36d8375fdcfd2bced9e0037bcfbb649c6a0ffc8d2e", + "server_s_sk": "000cd2237f8cc7da2a2b144249df100cd38a7faa8e24da3fb9c6c78ba2ce4607063abd60915020f04278b95ae462e1232d1b20a399d94406119c88b73da354f0c19a", + "server_e_pk": "03019aac00e2d71f7481c86b2fd6e5d322dfada045cc3a08125b3dba79b45e3df28897af6482e8b93c22fadb58d8b5d9b703e0011cf77d3183aa8d97c502e234254ef0", + "server_e_sk": "016efb612c53e84229af489df498156104e2aa18c43dcf5699f1c90cf74c8c3c7df396a733521aafe24d12370e6a34cd41b15e4350d0e2683b998f2415e3f445fd6b", + "dummy_client_pk": "0200b0b6b845945e221270aa5599754229c69d2410bcbb53d620f4262367e9c6f32a0ac32e4ae1ba8a51e970e7aed8e09f312f79ba4ede2bc4189626b508bdcec08d8d", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "012be71e97d83cdb4b933911353bc06e41094bbc2d3d2b94cd3ace502fff999b7a54c5c767fe565cb3fe0390fa94fffecd8d026d6e1a31d6637867fab48183342c9a", + "oprf_seed": "0a21aa10667cb3715191792d822015c1b300ea6af2d1c7c429dcb07d8f0f691996306ba315f8221e511ab0f11f71fe4765ab925abafebc92f3d37a1e29965f2e", + "dummy_masking_key": "e2b707a32743af30d4dc07380e746432fd9bb07fd570b12b195efe1c8f39d5d73f87e1cb754cf4908cc6cf1f2856b6fbb9cff0a3e0832db07b0a35b70ecc0476", + "masking_nonce": "0a34572e84579906f0ba6cd403c3962234e974d5f2806aab9953e1ee0efcea102f98027f49cecdece384850929ce9d3b0fd624860acda513da8ab39bc36f7821", + "envelope_nonce": "d7d6ba25df2b8fe865bb2f3a94db41b56d7275384017c033e1a62d5536d39d8f", + "client_nonce": "4239a9fcfccacc5623588c32c0f99bec53243d8963dd7fbcfe8a2afd0034158b", + "server_nonce": "b9a17caddd81307e317cf08e5944a0f6819811e59e571b9c43e891c2c36cf547", + "server_sig_rng": "fc3a80f4112df5e8f5ca154593552262645d524b81fa14e848a6a4787d8a2492321738676224c06444bd18e351fd84348b8ed5c08e3dde4874763fe2eff0e84a20b3", + "client_sig_rng": "7266b0f67296a3d1056cec20cca5f153e55fbffc96b85b8fa86d5b47edb354ea465314ed34786051c54dfe7a8386928e812386cc83d84dc595bc9efd6d82fee5d5be", + "context": "636f6e74657874", + "registration_request": "02017a4ba32aaef77ffcde95ee4cb6162b44c3bb1f3b09fecd19b03117d2ff58501773ec01c5f9a642c3defdeeeb3611a64dbe7b626ac4debb77b90acd9a1b605aea27", + "registration_response": "03004e23d84cbff64e704cccbff057f4cbbbc80b216fe4b44af53873e8a889a6c957eac3b3558aea48d32fee0763bbf2f7d0310946c4f0fb4e1ae405b1aee9bdf8f73c030007864ac5d5e484396228574ba54b350d05f117d691e7d436f7a42a86b80ca35e7e8dcc2862eb774249ec45ed36d8375fdcfd2bced9e0037bcfbb649c6a0ffc8d2e", + "registration_upload": "020197c811fdaa93a80cb94bb8be013424acfc2767b93f554bb5e70c28b1f77829cb5570f60e9eb490159f799324e017afba0c04f843a013da6a00290166b80eb678240ea7f95f3016c49752e34ab060ae19ad19cc24212ddd005f4bae4fb6533a4690550b3feb300768e6c7dffb0f238230bd8886fb7142153485c67f260baea0a2930191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c3846621e4d65ddf941eaf2f1b68bda57f81b968c24190bc5744a58f0be15bfcc634facbd2d9432ae426cc67ec826dc1fc1ae1023613ccda8f46d3566ec8f380763", + "credential_request": "02017a4ba32aaef77ffcde95ee4cb6162b44c3bb1f3b09fecd19b03117d2ff58501773ec01c5f9a642c3defdeeeb3611a64dbe7b626ac4debb77b90acd9a1b605aea274239a9fcfccacc5623588c32c0f99bec53243d8963dd7fbcfe8a2afd0034158b02000bc84c5e5821871038d879ba46b9b37078dc192612a094a088990f193ae1cbac240638c46dd5b743e409e936efc4147a271ee11b9e7fe606864393c245883e9cd1b1d6c5272bc3ffa6a93a46621ed6b25b19c53d47c78606b55555417791187c83318055489f32551925c98dc11bb7d08170bc46e1ab2e1cf87b6b2777acd21b4939489a3acd9619210edcac3a1a04e6837f364c8f27616f5c8b220fcbbe741b684b591b1f94aecd587ab8d1aca50c901e7b4c7d89ae2c9448f2703f9d225eecfaabf5f2c69215b37f9bc23a480a9c307bca3bcafb097463b9440e4bcb68637c69c960d886133002b6a142af82bca0abc1bb1952c5d48aa8bd318750fb8a52684f00adb038121ceab20955970d35801f89611f8f6923bbd06a231786bb25536dcb2dc8d60541abcc4bfa86964c0a1f723bdf260b5190417279118f863a8cf24a46852ab810069664b4e97c7809022fb8b606788075e7b45839f873c830a729a2b293849b3d704b7a705fce39c09de34d9a8c0f28c9236504053974167f26a461557f2c4a8f19558497a89885f6ac55610829e45fdbf30b745b31a2922ca43a10b8746097083808a7383f8b420fd616eef86b550188ae052ff56450c5fa097eb802e369a094949b5a896af5a71dd0056108e7085a32a38d03d016918c2d327e601a19dc53ab30195721955789819d04fc71ebc18eb9c3750a643b1639740708702a20c3b8d88336e75d9f584903c61cda995282511e9e4936784652a2659f15b85d7bd33d25f4365a6121b36b7cfd2721ee119f18a835d578364bdbb2d8009762c344bb89a3d3e05224e03296f15a037cc58cc914f4aba2e9d00ab6d822f968468a835a6f3a90c02ca0f30592ddba4fe353c8e1da45ff220dfba210d9347e2a48599d6562e6f0cacc6436ba15bd3aa45ae23146774b831703d08f69b9bee618dd0a4f24f6557cda7192dbba9a663daf9a5954ac6c184688b9aa5f6f046d5340cfe00c6ac3430f56e3ac80439d7a711680e28a9caa5c288499c1679c4b8473646a782459a77c4973dd93ab3d51c6acc08ec48c223911cc4e7c76f6714e3cb1100de2543b592412a3a318a9a0290b99d79ba84318638733297996c426486798a0a6d16c0b0c5aac7d380c5e218adbac03e5da6f1ee980455a3792b420c4976376ca91614c5ba8d1c52c504c96078de4846c464b34a3b78ba7686b7a718e43f3a692a83437804e113babd0902e91643bb384c420bb81cac32cd54027021980b046c8e4a1b20121c84485a83df26388b9c59487b242448a1f063ed135653220830faa1c7c830a6f548e04888577971f4253b989f67102e0c3e0694547950b5dc91bc21c65abd7a16dc771ec254221e7acaa42160e8ca74177c272c49e70264d59135fb7db0f5cac18a0194f7fd589ef40a8b7e46a4db8c1ff945da5785edcd695cd77887591c5a471b100bd19ead7af9122c9dc554484cc6940ba0982232e99207adb452f185a5ee194c163fcbe904749dbc6b6a7c0cadba495bcd623c219c26c8cb24ac039ad953915426b2510b4803cb9ee950535d7894aabaea0b45e9364a1a5d023533522336031d0db291299022c1955499bb0ee71ac237777562b9af2c1a85c141292a97a41c12b50236ffb781ce56c852847abaecac5a144498249924ed5b36f77577089cc0bca0c7d54b2f2cc111e13b1b861402e23b66752aa8501849221493d2d4d1f4c81cc82e55413667a2cb5883ba4a5ca93754f8b9ba773ebe081ab28", + "credential_response": "03004e23d84cbff64e704cccbff057f4cbbbc80b216fe4b44af53873e8a889a6c957eac3b3558aea48d32fee0763bbf2f7d0310946c4f0fb4e1ae405b1aee9bdf8f73c0a34572e84579906f0ba6cd403c3962234e974d5f2806aab9953e1ee0efcea102ac0e604e12f47a642f99c377a9782ad7a17164c83ce10c0352c947f53decbffcff76f80cddc6e279d3d99bc0b2743cb1bab3b229818b35050848f5544ba4098ba511641b2030374e308b692d87e1f46d9abbe6b5baf50612363b772830f06c927d05121459eab3615a6052a3db997d2da70a8cc315ce0a6797b9cf7ed523f7eb5e881a99b277e124905f30be016dccf94295165ff88381302a8db50d3fe87c6ac4f7496a733521aafe24d12370e6a34cd41b15e4350d0e2683b998f2415e3f445fd6b02016686e0246f047a02b8e12866909c1e5a05b9e2ba50ae0b41d29703791d1b51da10c3570c6c600ca4f21ef23e28d198a7e16d1cc86a4ce3da3b70ce213f3472fc8ce1946d44b2a5b116e3f3d522b0eb175a447b096b5534630dc1e1333ab227f079200f2a03ea99dba59678cd23cd68e6c5b8348dc05288c23aaa9a081df95506a3fc69f6bc7768d56f899c147823fa886e1553710206ecda3a702ff741f390b31355fc9a17fb0d5db66e8af96c91e81e51c71939d20227f1a2a6bc1a916afe588014454e6dc0d25bee911717cad0842e68b38e85a7fd69aedc778c8d54bdf036a5e1991ebda1ad9da7b3b2fcb9394a45dd2a93523125604a7c4d5474775a11d362507f5e9dd7fffd2da11b81f7ca16183ff63e3e57f79aa9d4435ae09e50ee8e2e7c2f8ed70ab5d5abfb959802867ce86e04d1d0af3995c00e26985c000a7b249a88e2a3acc849431df970f2e4947725212575d2df99396a63f285ad9733634b905748785b1e03cb9111c7f1ea90889ff1f7a46e01b605a369e9924c40124ef6507d879264f0f3596043308836e5e2ddfff906073ace8d88f1167fab16c52dce6037e3712f912d8fcfffca69014422f81c1c6e74dff415f478584b213fdc3af3aa1bf9e2c633f7e5ab4bc1d954798004c64361661f3f8a98b37cb8be3d3bbf8c18af5e23daec10060cc15ab458a08b7dde4114d003e47f3b061363a08a5f015396ae339b899a155d91bac0a21d45d734926667233396ca2cd7c442e3e4f32b4f52587f32d9e4be88c9961b8189526988e2d79740c356960b1d90f2e470fba839de09af05af6a6b74a43076bc2bb973e8614416a53de265ddd4e58b3a66a47a35a0247ca80f96f4b0e40ec3b0419b93ce696d00b11f986d81dafe34f1a103fa1578b31d7724a9ceddc202fec936f7f225164e81715d17bc0399a850d9f459cae07034179369d756f4e15ed7ea548c7cf43db097af316c637fe738191f595447679e6374a7e8e18edb5bfbbf050d8e0b949cbb78310a875e1a0d1fee1c3351591f096a7dc65e9b759843e5ddecdc596585116a772b3c5a0c946433cf69d862e9447e4756ec0804b2ba6ee09e79d61f6f1e8d29bc7f5bf8501d57c0d78a454eb0dec61a4ed1d6a7ea1ba397682937f245f77d0b690e033c2a93022761af4fcf5edc4e8ebe239fab5fdab6f03a2e806ea5e6f59738398518aa048e794ddfab1b9747a2dbadc0c8309a8c9f149e136f18aef1b80fcf9ce09b47732b550a31333eff86db3ccbfafe3cba9a8f7761f82aa4202e4f4af47f1d6d0bd5e8edcddc9ae54652be2c912cf8ff79d575243f9071d71ebcbe0c594fc62126903685ea9785a4d24d9504dd2914272bdccd17eb8f561513d0bb31562ab037160f868b25f6087fc17b135bb1b41e7a9884ffaccba8924773b06593334a84fd0de1e1c08e4a69dbf94b50310b8b0e431234bb9dfcc271d82694f3e61d3890c1393d5b1aca8a1f8fc7c6785cc5bf21111f84a93ecf131fc54f3eaed53369007b9e03cdf561b143f71cdd6ef2d4a7eb134c3a3d4c6b7d07e20d16fc5934f7c58ffa9c5e729ac40560fbfea8df3c27185420c4a0180b46b688e6395825e3939aa092347099fdcf701857299301cb56e75e1db263238015622d8aca61f41cc7d8658d6485a829e16008fa722587ae3c28421b8a0ae68a8484aaf724365e031362df75496a8b07f704c398b313", + "credential_finalization": "2e040406409468152b6265ea437a6ae3346d0b329d76d8f7df88a7067280c03fa4ff6b63a4b56e90212c103124e7d03572fd980132851a6b50c26e8175deda46", + "client_registration_state": "012be71e97d83cdb4b933911353bc06e41094bbc2d3d2b94cd3ace502fff999b7a54c5c767fe565cb3fe0390fa94fffecd8d026d6e1a31d6637867fab48183342c9a02017a4ba32aaef77ffcde95ee4cb6162b44c3bb1f3b09fecd19b03117d2ff58501773ec01c5f9a642c3defdeeeb3611a64dbe7b626ac4debb77b90acd9a1b605aea27", + "client_login_state": "012be71e97d83cdb4b933911353bc06e41094bbc2d3d2b94cd3ace502fff999b7a54c5c767fe565cb3fe0390fa94fffecd8d026d6e1a31d6637867fab48183342c9a02017a4ba32aaef77ffcde95ee4cb6162b44c3bb1f3b09fecd19b03117d2ff58501773ec01c5f9a642c3defdeeeb3611a64dbe7b626ac4debb77b90acd9a1b605aea274239a9fcfccacc5623588c32c0f99bec53243d8963dd7fbcfe8a2afd0034158b02000bc84c5e5821871038d879ba46b9b37078dc192612a094a088990f193ae1cbac240638c46dd5b743e409e936efc4147a271ee11b9e7fe606864393c245883e9cd1b1d6c5272bc3ffa6a93a46621ed6b25b19c53d47c78606b55555417791187c83318055489f32551925c98dc11bb7d08170bc46e1ab2e1cf87b6b2777acd21b4939489a3acd9619210edcac3a1a04e6837f364c8f27616f5c8b220fcbbe741b684b591b1f94aecd587ab8d1aca50c901e7b4c7d89ae2c9448f2703f9d225eecfaabf5f2c69215b37f9bc23a480a9c307bca3bcafb097463b9440e4bcb68637c69c960d886133002b6a142af82bca0abc1bb1952c5d48aa8bd318750fb8a52684f00adb038121ceab20955970d35801f89611f8f6923bbd06a231786bb25536dcb2dc8d60541abcc4bfa86964c0a1f723bdf260b5190417279118f863a8cf24a46852ab810069664b4e97c7809022fb8b606788075e7b45839f873c830a729a2b293849b3d704b7a705fce39c09de34d9a8c0f28c9236504053974167f26a461557f2c4a8f19558497a89885f6ac55610829e45fdbf30b745b31a2922ca43a10b8746097083808a7383f8b420fd616eef86b550188ae052ff56450c5fa097eb802e369a094949b5a896af5a71dd0056108e7085a32a38d03d016918c2d327e601a19dc53ab30195721955789819d04fc71ebc18eb9c3750a643b1639740708702a20c3b8d88336e75d9f584903c61cda995282511e9e4936784652a2659f15b85d7bd33d25f4365a6121b36b7cfd2721ee119f18a835d578364bdbb2d8009762c344bb89a3d3e05224e03296f15a037cc58cc914f4aba2e9d00ab6d822f968468a835a6f3a90c02ca0f30592ddba4fe353c8e1da45ff220dfba210d9347e2a48599d6562e6f0cacc6436ba15bd3aa45ae23146774b831703d08f69b9bee618dd0a4f24f6557cda7192dbba9a663daf9a5954ac6c184688b9aa5f6f046d5340cfe00c6ac3430f56e3ac80439d7a711680e28a9caa5c288499c1679c4b8473646a782459a77c4973dd93ab3d51c6acc08ec48c223911cc4e7c76f6714e3cb1100de2543b592412a3a318a9a0290b99d79ba84318638733297996c426486798a0a6d16c0b0c5aac7d380c5e218adbac03e5da6f1ee980455a3792b420c4976376ca91614c5ba8d1c52c504c96078de4846c464b34a3b78ba7686b7a718e43f3a692a83437804e113babd0902e91643bb384c420bb81cac32cd54027021980b046c8e4a1b20121c84485a83df26388b9c59487b242448a1f063ed135653220830faa1c7c830a6f548e04888577971f4253b989f67102e0c3e0694547950b5dc91bc21c65abd7a16dc771ec254221e7acaa42160e8ca74177c272c49e70264d59135fb7db0f5cac18a0194f7fd589ef40a8b7e46a4db8c1ff945da5785edcd695cd77887591c5a471b100bd19ead7af9122c9dc554484cc6940ba0982232e99207adb452f185a5ee194c163fcbe904749dbc6b6a7c0cadba495bcd623c219c26c8cb24ac039ad953915426b2510b4803cb9ee950535d7894aabaea0b45e9364a1a5d023533522336031d0db291299022c1955499bb0ee71ac237777562b9af2c1a85c141292a97a41c12b50236ffb781ce56c852847abaecac5a144498249924ed5b36f77577089cc0bca0c7d54b2f2cc111e13b1b861402e23b66752aa8501849221493d2d4d1f4c81cc82e55413667a2cb5883ba4a5ca93754f8b9ba773ebe081ab2801b7ce737df54c52a2721a8d8241d5965a39f6f0c9e28197627275769f1844bacd4e680154752659029f81f046e86d81c365d1ebf22b59d2476a7ff176f9626858a74239a9fcfccacc5623588c32c0f99bec53243d8963dd7fbcfe8a2afd0034158bb7fa46020437c9652810a60f8611a9ab35c5fa2a82074455df72b7294c2f95c844a75cc2fb08a52a4906e9e69b4e557e73805a41345a105a21efb12e73f6cf5bbbca1d87ce9b41449c6b527674814a8192bf0678de909b5ad265222969878cc22a199578a05813336405eb0b9e690d9a097625e9712729645a056f82956e757c393cab0c47d70ddb0540149a006f942007d859c825c605723ccde624c297c5ea5b8cace17356790e20f32e8a1acb3920a644f111116b70f83b1eb43829c7f782fdc7002e728998c70ccee444c542055b3a551dd144df107a8d979d176095148b8df6582bbb16ceb598a0996c0b59f23d666845c713a2b0fb7eb62ab5ba593f79d38c081371d4d0435533be1dfc819c32035f3a237e4c97efd73ac9d473b6c925861722a25a652fb11438fa3d4ed08301b32c63f084df79cbada293714b3fd13c37ec549f6e6a7a6537246c01a4636114eb5206a743b12e7186ac35a02be05ce4da8bfddcba87ab8d8de180b15ac4b2d1a0cba04339b8b5432caee959b7ca55c5d7c037098ba9132ccc79450788e233be367408e3ba51f457d21843f01b414b6a70e1d042fc78b6168cb62d53727ca81c058666dc25170373a552b600967584cac41da1cb97e43a40b83382d95a6fd9342d655b3ccfb77b22a0ce8b28154e992d4f06bfffc70e8db1ccf791a3d5b25124522722e73a3a98942c9062cc491965d04d832989334aa4e905018cfbb99c5624e7653e3a58ca9d1cc2b6e806b9cb1394a05b7c7c339721405c675c81258c8aec3e6fc378a45ab7e065c56df13cb2893a28076361531be2b688f6833c0f2007a5b5968f59819a197778294fde4a6961932c81e60bcb8402c5171e80d2a81e4b9e9cd12cf5025f4084b471e60228d563afa4550d2b1fd58644a9b393f5b071d68c090112c0fc61a3a32171f725729cd42a1ba861df2240fee567ec059ae2ba3014946790a481e78320cc7c0773e79f4f0b134ba551d2760e67f319015ba7d9356aca96202c07685f676168447860203acdbb3093363b0c34948650515895340b264e13287824c50ce0f87b8e48742586693551929b02360c021ba381beb4d727832653fd310074f7c2a86aa9019c9004dbcb12a66aab3c36f30015c6e790be85952b59046428627b90634193235e4a025aa38b76e6390f50c7b31112e782447dd78953c7c2794100c315575079ce78137fbb882630104f796b3fe2892efa396575a92f1191720287b51d395002b1a309faaf862a96c5472333b4597c3ba877c1c18fe5a00ef97efc2921a57b0bc508a5aaec511e78a7e238cd4dd402cb0257c864706039a648898855a0c01b7b86fdb3c0337a3a215b1efae845fa620920642942c25995bc1775c460aa65190a9c6c249409c427abd6653967475947395400c57bb712b910b89c393791296184d850bc4c349fc739c52ab345bdf7065b712315c884102b21fecb8321f066669408e40988148713588519676c7a8a6b835ab3ba9a10276971809ceb0289ec6c8cb86d8a6a4a3588b66c272c89715716d906c2bbc35e5cb8151c1c7a8b9feebc13361b90e1e58c11c5366a46923c158ea8690049828c9af988dd4b6d8ef08eaeaaba46824cb1d6c5272bc3ffa6a93a46621ed6b25b19c53d47c78606b55555417791187c83318055489f32551925c98dc11bb7d08170bc46e1ab2e1cf87b6b2777acd21b4939489a3acd9619210edcac3a1a04e6837f364c8f27616f5c8b220fcbbe741b684b591b1f94aecd587ab8d1aca50c901e7b4c7d89ae2c9448f2703f9d225eecfaabf5f2c69215b37f9bc23a480a9c307bca3bcafb097463b9440e4bcb68637c69c960d886133002b6a142af82bca0abc1bb1952c5d48aa8bd318750fb8a52684f00adb038121ceab20955970d35801f89611f8f6923bbd06a231786bb25536dcb2dc8d60541abcc4bfa86964c0a1f723bdf260b5190417279118f863a8cf24a46852ab810069664b4e97c7809022fb8b606788075e7b45839f873c830a729a2b293849b3d704b7a705fce39c09de34d9a8c0f28c9236504053974167f26a461557f2c4a8f19558497a89885f6ac55610829e45fdbf30b745b31a2922ca43a10b8746097083808a7383f8b420fd616eef86b550188ae052ff56450c5fa097eb802e369a094949b5a896af5a71dd0056108e7085a32a38d03d016918c2d327e601a19dc53ab30195721955789819d04fc71ebc18eb9c3750a643b1639740708702a20c3b8d88336e75d9f584903c61cda995282511e9e4936784652a2659f15b85d7bd33d25f4365a6121b36b7cfd2721ee119f18a835d578364bdbb2d8009762c344bb89a3d3e05224e03296f15a037cc58cc914f4aba2e9d00ab6d822f968468a835a6f3a90c02ca0f30592ddba4fe353c8e1da45ff220dfba210d9347e2a48599d6562e6f0cacc6436ba15bd3aa45ae23146774b831703d08f69b9bee618dd0a4f24f6557cda7192dbba9a663daf9a5954ac6c184688b9aa5f6f046d5340cfe00c6ac3430f56e3ac80439d7a711680e28a9caa5c288499c1679c4b8473646a782459a77c4973dd93ab3d51c6acc08ec48c223911cc4e7c76f6714e3cb1100de2543b592412a3a318a9a0290b99d79ba84318638733297996c426486798a0a6d16c0b0c5aac7d380c5e218adbac03e5da6f1ee980455a3792b420c4976376ca91614c5ba8d1c52c504c96078de4846c464b34a3b78ba7686b7a718e43f3a692a83437804e113babd0902e91643bb384c420bb81cac32cd54027021980b046c8e4a1b20121c84485a83df26388b9c59487b242448a1f063ed135653220830faa1c7c830a6f548e04888577971f4253b989f67102e0c3e0694547950b5dc91bc21c65abd7a16dc771ec254221e7acaa42160e8ca74177c272c49e70264d59135fb7db0f5cac18a0194f7fd589ef40a8b7e46a4db8c1ff945da5785edcd695cd77887591c5a471b100bd19ead7af9122c9dc554484cc6940ba0982232e99207adb452f185a5ee194c163fcbe904749dbc6b6a7c0cadba495bcd623c219c26c8cb24ac039ad953915426b2510b4803cb9ee950535d7894aabaea0b45e9364a1a5d023533522336031d0db291299022c1955499bb0ee71ac237777562b9af2c1a85c141292a97a41c12b50236ffb781ce56c852847abaecac5a144498249924ed5b36f77577089cc0bca0c7d54b2f2cc111e13b1b861402e23b66752aa8501849221493d2d4d1f4c81cc82e55413667a2cb5883ba4a5ca93754f8b9ba773ebe081ab28b5c70e43212561d714c0bbc937e088f51943f27c0d71394085ac354b1c3eaee67a54c5c767fe565cb3fe0390fa94fffecd8d026d6e1a31d6637867fab4818334", + "server_login_state": "bc382cb8d96de82ba1e2df4d93a5afa18c205344d0d0a171a54c91091d0a393922652f2c9e1e7e2591779a45d41926549abbac14d49fd5a2d3c84304c81f6ab92e040406409468152b6265ea437a6ae3346d0b329d76d8f7df88a7067280c03fa4ff6b63a4b56e90212c103124e7d03572fd980132851a6b50c26e8175deda46b1d6c5272bc3ffa6a93a46621ed6b25b19c53d47c78606b55555417791187c83318055489f32551925c98dc11bb7d08170bc46e1ab2e1cf87b6b2777acd21b4939489a3acd9619210edcac3a1a04e6837f364c8f27616f5c8b220fcbbe741b684b591b1f94aecd587ab8d1aca50c901e7b4c7d89ae2c9448f2703f9d225eecfaabf5f2c69215b37f9bc23a480a9c307bca3bcafb097463b9440e4bcb68637c69c960d886133002b6a142af82bca0abc1bb1952c5d48aa8bd318750fb8a52684f00adb038121ceab20955970d35801f89611f8f6923bbd06a231786bb25536dcb2dc8d60541abcc4bfa86964c0a1f723bdf260b5190417279118f863a8cf24a46852ab810069664b4e97c7809022fb8b606788075e7b45839f873c830a729a2b293849b3d704b7a705fce39c09de34d9a8c0f28c9236504053974167f26a461557f2c4a8f19558497a89885f6ac55610829e45fdbf30b745b31a2922ca43a10b8746097083808a7383f8b420fd616eef86b550188ae052ff56450c5fa097eb802e369a094949b5a896af5a71dd0056108e7085a32a38d03d016918c2d327e601a19dc53ab30195721955789819d04fc71ebc18eb9c3750a643b1639740708702a20c3b8d88336e75d9f584903c61cda995282511e9e4936784652a2659f15b85d7bd33d25f4365a6121b36b7cfd2721ee119f18a835d578364bdbb2d8009762c344bb89a3d3e05224e03296f15a037cc58cc914f4aba2e9d00ab6d822f968468a835a6f3a90c02ca0f30592ddba4fe353c8e1da45ff220dfba210d9347e2a48599d6562e6f0cacc6436ba15bd3aa45ae23146774b831703d08f69b9bee618dd0a4f24f6557cda7192dbba9a663daf9a5954ac6c184688b9aa5f6f046d5340cfe00c6ac3430f56e3ac80439d7a711680e28a9caa5c288499c1679c4b8473646a782459a77c4973dd93ab3d51c6acc08ec48c223911cc4e7c76f6714e3cb1100de2543b592412a3a318a9a0290b99d79ba84318638733297996c426486798a0a6d16c0b0c5aac7d380c5e218adbac03e5da6f1ee980455a3792b420c4976376ca91614c5ba8d1c52c504c96078de4846c464b34a3b78ba7686b7a718e43f3a692a83437804e113babd0902e91643bb384c420bb81cac32cd54027021980b046c8e4a1b20121c84485a83df26388b9c59487b242448a1f063ed135653220830faa1c7c830a6f548e04888577971f4253b989f67102e0c3e0694547950b5dc91bc21c65abd7a16dc771ec254221e7acaa42160e8ca74177c272c49e70264d59135fb7db0f5cac18a0194f7fd589ef40a8b7e46a4db8c1ff945da5785edcd695cd77887591c5a471b100bd19ead7af9122c9dc554484cc6940ba0982232e99207adb452f185a5ee194c163fcbe904749dbc6b6a7c0cadba495bcd623c219c26c8cb24ac039ad953915426b2510b4803cb9ee950535d7894aabaea0b45e9364a1a5d023533522336031d0db291299022c1955499bb0ee71ac237777562b9af2c1a85c141292a97a41c12b50236ffb781ce56c852847abaecac5a144498249924ed5b36f77577089cc0bca0c7d54b2f2cc111e13b1b861402e23b66752aa8501849221493d2d4d1f4c81cc82e55413667a2cb5883ba4a5ca93754f8b9ba773ebe081ab28fc69f6bc7768d56f899c147823fa886e1553710206ecda3a702ff741f390b31355fc9a17fb0d5db66e8af96c91e81e51c71939d20227f1a2a6bc1a916afe588014454e6dc0d25bee911717cad0842e68b38e85a7fd69aedc778c8d54bdf036a5e1991ebda1ad9da7b3b2fcb9394a45dd2a93523125604a7c4d5474775a11d362507f5e9dd7fffd2da11b81f7ca16183ff63e3e57f79aa9d4435ae09e50ee8e2e7c2f8ed70ab5d5abfb959802867ce86e04d1d0af3995c00e26985c000a7b249a88e2a3acc849431df970f2e4947725212575d2df99396a63f285ad9733634b905748785b1e03cb9111c7f1ea90889ff1f7a46e01b605a369e9924c40124ef6507d879264f0f3596043308836e5e2ddfff906073ace8d88f1167fab16c52dce6037e3712f912d8fcfffca69014422f81c1c6e74dff415f478584b213fdc3af3aa1bf9e2c633f7e5ab4bc1d954798004c64361661f3f8a98b37cb8be3d3bbf8c18af5e23daec10060cc15ab458a08b7dde4114d003e47f3b061363a08a5f015396ae339b899a155d91bac0a21d45d734926667233396ca2cd7c442e3e4f32b4f52587f32d9e4be88c9961b8189526988e2d79740c356960b1d90f2e470fba839de09af05af6a6b74a43076bc2bb973e8614416a53de265ddd4e58b3a66a47a35a0247ca80f96f4b0e40ec3b0419b93ce696d00b11f986d81dafe34f1a103fa1578b31d7724a9ceddc202fec936f7f225164e81715d17bc0399a850d9f459cae07034179369d756f4e15ed7ea548c7cf43db097af316c637fe738191f595447679e6374a7e8e18edb5bfbbf050d8e0b949cbb78310a875e1a0d1fee1c3351591f096a7dc65e9b759843e5ddecdc596585116a772b3c5a0c946433cf69d862e9447e4756ec0804b2ba6ee09e79d61f6f1e8d29bc7f5bf8501d57c0d78a454eb0dec61a4ed1d6a7ea1ba397682937f245f77d0b690e033c2a93022761af4fcf5edc4e8ebe239fab5fdab6f03a2e806ea5e6f59738398518aa048e794ddfab1b9747a2dbadc0c8309a8c9f149e136f18aef1b80fcf9ce09b47732b550a31333eff86db3ccbfafe3cba9a8f7761f82aa4202e4f4af47f1d6d0bd5e8edcddc9ae54652be2c912cf8ff79d575243f9071d71ebcbe0c594fc62126903685ea9785a4d24d9504dd2914272bdccd17eb8f561513d0bb31562ab037160f868b25f6087fc17b135bb1b41e7a9884ffaccba8924773b06593334a84fd0de1e1c08e4a69dbf94b50310b8b0e431234bb9dfcc271d82694f3e61d3890c1393d5b1aca8a1f8fc7c6785cc5bf21111f84a93ecf131fc54f3eaed53369007b9e03cdf561b143f71cdd6ef2d4a7eb134c3a3d4c6b7d07e20d16fc5934f7c58ffa9c5e729ac40560fbfea8df3c27185420c4a0180b46b688e6395825e3939aa092347099fdcf701857299301cb56e75e1db263238015622d8aca61f41cc7d8658d6485a829e16008fa722587ae3c28421b8a0ae68a8484aaf724365e031362df75496a8b07f704c398b313", + "password_file": "020197c811fdaa93a80cb94bb8be013424acfc2767b93f554bb5e70c28b1f77829cb5570f60e9eb490159f799324e017afba0c04f843a013da6a00290166b80eb678240ea7f95f3016c49752e34ab060ae19ad19cc24212ddd005f4bae4fb6533a4690550b3feb300768e6c7dffb0f238230bd8886fb7142153485c67f260baea0a2930191d6e31507e9e3af8e611afcc4c542697ee8bf67f4135e81cf8e9f1d528c3846621e4d65ddf941eaf2f1b68bda57f81b968c24190bc5744a58f0be15bfcc634facbd2d9432ae426cc67ec826dc1fc1ae1023613ccda8f46d3566ec8f380763", + "export_key": "bda7c3ff38c8733d2ae136597cf10a0371ff3aac919e1b3ef5d52f0b4a6093abd5e9784f6cb688099d11e77a7e22530eb33c1d3d24dcf8b1ce69e3a1382a2a8c", + "session_key": "bc382cb8d96de82ba1e2df4d93a5afa18c205344d0d0a171a54c91091d0a393922652f2c9e1e7e2591779a45d41926549abbac14d49fd5a2d3c84304c81f6ab9" +} +"#; +#[cfg(feature = "curve25519")] +#[cfg(feature = "ristretto255")] +pub static TEST_VECTOR_RISTRETTO255_TRIPLE_DH_KEM_CURVE25519: &str = r#" +{ + "client_s_pk": "01e73901c93e2e6ac8554da09d0fd591c3c959f307530d4352414252502bd72e", + "client_s_sk": "b0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265", + "client_e_pk": "ae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f229", + "client_e_sk": "e84dd791cb2a3f5151577f1e26e3d9592efd5f91e5d6c039bc2a35eeac1fd87b", + "server_s_pk": "09a7e20539b6a73068d8d17f58aa52698fd43a921fa8eafa0210f1404d2bac01", + "server_s_sk": "406e30dce8dd4e11d946d4d60bab8ebfcaa9b55b3c172802dfa0518762ea8144", + "server_e_pk": "031a8d91a2d0be2efe5dc99da65ccdd3622cfd208737dee5cb86be32d5191655", + "server_e_sk": "60ff37cac3637214feff2c0a454028a78ffbf6e3397719965d42fd3f3a17714a", + "dummy_client_pk": "f954fbdbc732196433e6b1e30e64884104384d0de331d5abb0028e26fec00b4f", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "56d083cb1619798759c53fedf35c0230c53769bf817ca73d29b35d8b6413a80b", + "oprf_seed": "519dbe4c91dc74d173a34505ea59daaf0c1426d027e21dd83425cfb1b644991f83d121ef67bef278e93f0d1026ce1fc6f986681ea7c95b482711cd1540bcaa83", + "dummy_masking_key": "ad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13", + "masking_nonce": "c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedfba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e", + "envelope_nonce": "a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "client_nonce": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "server_nonce": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "server_sig_rng": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "client_sig_rng": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5b", + "context": "636f6e74657874", + "registration_request": "68b6a3bd4f52fb44e68cec8d259f806f8fc676570137775ce8f61c1ca045c027", + "registration_response": "dc21e4b8d4d6d7e72fa29858f2765693202f15f72d6f7ece3302b4446055385509a7e20539b6a73068d8d17f58aa52698fd43a921fa8eafa0210f1404d2bac01", + "registration_upload": "ea0118578326d5c0ce0ccce4c836590e85610e646acc9092252ac84aca00d71d2ddca3f4ca1ba199025c9f490d35c1f93f250110c430331fe4761df3e94532fdf5b5f91146c69501203faedbe93b04e0c4204f995eb0261ba563fb4e3ec7abf4b0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265d0e1f51f070336bcb2ff904a18092cb6542cf25a370088dcb4a0b5f2966f1ff16c507b79be408613f6320e05a30ea7470858e1020b228988386384cb46a039a2", + "credential_request": "68b6a3bd4f52fb44e68cec8d259f806f8fc676570137775ce8f61c1ca045c0272488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ffae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f22999832eae8a4051e05fbeb05ef8711aaac41bc160ca0dcc1a0f7b373c31696bd917bf4272ab752d145854ca17474e2ab0795c24c8c045f7e512b985a9e6231376ca4358f28fcc475f08079dd10a882a64ab2925106daa4e1c561662977e13c77873b132094b1f6331744e87cc2d50091d38a8d2eca50dc4c2f2e148b85cbdcb0c9d4089c1c782912563688181ba64e758c4d5627bd5a4c9236b475a4fcfacc8f359c180643308fb45de06130f501dd16cc214185c29987cf92a8c938309599276324bb90b1a07dd7830fb5ab36165358845bc25852221e7bd2b98c94fab7ea75a0e687c71f700b2523b0c1f9a6fbd1aa911c274bca1af2ee45ad1f858cd83546473c625388d0470b00991c38725bbb2c9bdd395213018663aa8b6a2c515aa527f137354a08084d9691e18568e90f8a0a3b1abd4a8577851a8cb670cf5639ce96184cfa1bed338b106da639af95a1ddc0d27e06f6b783b1b9276e1e20cfb484b89546242418027824939d68090f62e06473611382118b49336c30e8da56aa51796a6d407aef634a1f168cda2ad4fd05e38891a25049a0ef560a8232946c0bf0e99051e953b3db4c5d2112e8934447d98568c647d463c34e83512b639b3d603574b7330a45b0e430386f19bb4c63ab2217313a7a07284a3994d2012aab965d8379ba5872aea773d03d74ab8b28c6c6152fef81cacb5c21bb541b2349887cc31c0c046237283dc3570caf0ae1d016dd1b67b4c83c758f58bc8ab918e4a8cd4300acfccb00aa9518fea103d8b951b2c425278585c08676635a7d3472066e54f564bab496931def8b43790598cd766726a31aff701bcd222f56cb699b4089f3872fae6a6be544c081265d4808b6743aed64a1b0db8b1be1a2346dbb52dd48023ca6cff44c4668283591a2808bc3417133a6e376ce229c1e075186cd3018b83256ada96520ac8bcd8983e097eadd0387db14556d03e4705a3d007a203167a70273bdfeb7689d1b5aa47b49f70a83a4520be83b10f746014d6b3cdf233e1c3cfbe9bb9b91151b5a848c6976997ca3b8e94b173e32ef5124c2d0b83d0d0ca607071045469cc079e9e3783991a843e7804fcd56012b042b9fc05f05820af5275d33c74bf04201183c3ff73904332ace008b28e176f18c692304b98410a05e808704fbb94e567573cb389d03b1e5df953dcfa8a7bb245b8ea19b3cac9f9f67956a7aa9f2a5cd8c38e0c8b66c02c6df012402d717012ec99badc31174cccd3f0934f92a0cff5ae4f7caec8732ab14b0b33b66a2666c816a4a15b4a2f43c495ace90fb5755ef9b1716ef996cea27e2f654eaa08594937b22bf5a65bd57b34b7bc439827c3bbb074457022ccb96a384de4b2cf5c8b9e508455b6116a3a5a8dd129149bf8a66225555dd646f0f6a1bf12164e499258f558e590754c861cccf563b1a43be96266bcb697a8b6568d0027b0bc7d9d7589b3a723fa623847bc434623cce6f16063bba536e183f5171477f14bfbf5c34706cacc9384195116182765b183353a493baa73cc47b3552de5402f834954a3cdf6dc3fdf817465354fe510117bc1268c7a20800a9d66748324ac2a1b8986fa8ccbe3926f62a0776eba78121c23fd742e387c31fc62f3fd83ffd0f10efcc45fa8452dff757c419a1055ddea0a847490b40e7420", + "credential_response": "dc21e4b8d4d6d7e72fa29858f2765693202f15f72d6f7ece3302b44460553855c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf0a9bc2884efe1b6b9c7d175ef99662b72cf93891b8f58d6b3789dbab1fb07135e6c733e0e6bb91285101d04b5fcfe0f25bfa8b402f7a40a768421e24b7eee0c05a5d6aaad32b6fb3f6a2b69bc8dbeb5af841331f55ca2e9ee8b455840e6a6f73547f0068bd301891079eace23d610bddf2ca0383a4a68cdf383a73b3da2a6f1060ff37cac3637214feff2c0a454028a78ffbf6e3397719965d42fd3f3a17714aadc4e8ff66ebe878a7cdbc9863a5385ee2774aa29118e0ed13d2e0766b50ba2e45a9df5e442359d42159ecd1eda93a517590c7740e386ebc6e673b9ab4c137ab1a6b90e3a39a4d6a4d0722f21891717c56dca82585a35fbba191f4b2efa74c78ae7c1a3768d3677d2efc4f5d4a87c815cbba26e2e8ebade34a6438f3d08cdcc51b3f6337f3eae77fcfc0bf7ec43be7c5529cc6e4d42fb0c8f14f3de7c2a799cebc535aaa57ce99d62e8ed634a26b71b11e3c7a9b8a893b3a474943c352105133cedef3f152743621f7c40f68207d68975d90491342fe8be3eb68841bbfabaca51d21798ef50389a569fb16c65af61e0f34d7d03f5daa873a56cda2c81432e101385a8695dcf2312505bd1b704bec5d9c3543580c8b5229affab327d6e36f39aa9536262f2bef0e10fe2bfda7a5513865e22d7fd7e87147eeb1cc4bcfafd2073797f66d0edae73b6192b70beae90751f1e39df1f7b05f70e3189697492ff16728828ae51c9f65727e153e3c842227f7501a1f65c3bd109ec0c67ca0a089d628bfe0d77e2c4c863c9d6e55c831459786ac5ea3b18abf9d425d83d6c04a30ec69d5640864f237f29f8c2edf15ee9a70ed029398579da3cd2fe99672ad74645d262c0ade4bdf7e56fe65cad3d693c44ea9e5cc3ff16ccafccf30f685dfdeb406445ee56529b40833987e78c9149e23260af76fe6efc932abb69af42ae4eaea079a7577f2efdfc1e83e7b910a17335cfe1f10020ecf66cec08bc3242b4e192a55bda9686c09c83f710e93a0d60e7dbdccaf6e5192e5d5d4beef621ddb5676fc4bf8df1b268b97a64fcf4e221a0155751d7c977521a5e48bb0d638678acf990a728f0cebf9715a9f63e437b081e0d0cb49098ab8d6166e6ca37063084a10a53196e12509b673f7266bc4e2b5699231cd5202c07b07ac1be0adf0e4d472e6f028b5228edee1b5f92eaceb8dde96e0f6483ddfed704b58f7f9ef133315e8b1f3bab8593b3c945fc940fd74318636e61fd3fc623e353fc6136ad80a13168acc4458523a856bf561b5857c77ccb13dbd5f3aeb0afeefc14047e0c2b98aa999473d5a678a5e7bea90ad6b4c893d4d819b659d4ec10a984e41635879a720f305c170275d2437da2f5a95636e5991e7d83725e0598bb4556e898f0383e035f06a7991365bb6f6326a260ed1602fe780082056d49534ce16430314c904db54bfbe2fb2d9ebdc7cbb3ac91b7f8a14d45e688e90e2521c54bba31160096801571eb290d700e770aa32c4afa25d3160910adb3aab4b2a71b12b3a9516e59da1d2ab681d84247358a4910f9396944e030013dd2f5b47dfeeef8f17fe6b8dde5c9b8107694a565155388ffe00eb0e7a7212da0fa1cd663030bd9c5d7c270aae4b0aa6c82f9d85c1ad493e65948c3f318c000952c0d05ee0f66c6a83f9e31f2507b019ae8cafa49766413460017f2f29b15e1f2dfb48dc5c5803c2f22b88e7dd999251cd32fb549b53b7fcbc412fe2cac33e653a1dfc7c9e0a98e358de263958fe9ea369f86126388bd5d6b09083b5831024c5fc3579a6cf61ee0d801f9d9405bc3adadcddb2b2e41f55e8576e8175407f49dc0089b46220a307eb4a691fe7b8ae22f91715f15b94111900374d535b53f77ed32dbc83b00a2967edc97cd3f0481f0b0521b1afaa1bbaf9", + "credential_finalization": "2116c2c8a25bb8cdc0636d278c85fc54b93ae4a685860382262d39657360a3d28ebbae1b5b20cb9e7b46d85a50a1304bf13a64ba7c0cb61544eab650bfb7575e", + "client_registration_state": "56d083cb1619798759c53fedf35c0230c53769bf817ca73d29b35d8b6413a80b68b6a3bd4f52fb44e68cec8d259f806f8fc676570137775ce8f61c1ca045c027", + "client_login_state": "56d083cb1619798759c53fedf35c0230c53769bf817ca73d29b35d8b6413a80b68b6a3bd4f52fb44e68cec8d259f806f8fc676570137775ce8f61c1ca045c0272488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ffae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f22999832eae8a4051e05fbeb05ef8711aaac41bc160ca0dcc1a0f7b373c31696bd917bf4272ab752d145854ca17474e2ab0795c24c8c045f7e512b985a9e6231376ca4358f28fcc475f08079dd10a882a64ab2925106daa4e1c561662977e13c77873b132094b1f6331744e87cc2d50091d38a8d2eca50dc4c2f2e148b85cbdcb0c9d4089c1c782912563688181ba64e758c4d5627bd5a4c9236b475a4fcfacc8f359c180643308fb45de06130f501dd16cc214185c29987cf92a8c938309599276324bb90b1a07dd7830fb5ab36165358845bc25852221e7bd2b98c94fab7ea75a0e687c71f700b2523b0c1f9a6fbd1aa911c274bca1af2ee45ad1f858cd83546473c625388d0470b00991c38725bbb2c9bdd395213018663aa8b6a2c515aa527f137354a08084d9691e18568e90f8a0a3b1abd4a8577851a8cb670cf5639ce96184cfa1bed338b106da639af95a1ddc0d27e06f6b783b1b9276e1e20cfb484b89546242418027824939d68090f62e06473611382118b49336c30e8da56aa51796a6d407aef634a1f168cda2ad4fd05e38891a25049a0ef560a8232946c0bf0e99051e953b3db4c5d2112e8934447d98568c647d463c34e83512b639b3d603574b7330a45b0e430386f19bb4c63ab2217313a7a07284a3994d2012aab965d8379ba5872aea773d03d74ab8b28c6c6152fef81cacb5c21bb541b2349887cc31c0c046237283dc3570caf0ae1d016dd1b67b4c83c758f58bc8ab918e4a8cd4300acfccb00aa9518fea103d8b951b2c425278585c08676635a7d3472066e54f564bab496931def8b43790598cd766726a31aff701bcd222f56cb699b4089f3872fae6a6be544c081265d4808b6743aed64a1b0db8b1be1a2346dbb52dd48023ca6cff44c4668283591a2808bc3417133a6e376ce229c1e075186cd3018b83256ada96520ac8bcd8983e097eadd0387db14556d03e4705a3d007a203167a70273bdfeb7689d1b5aa47b49f70a83a4520be83b10f746014d6b3cdf233e1c3cfbe9bb9b91151b5a848c6976997ca3b8e94b173e32ef5124c2d0b83d0d0ca607071045469cc079e9e3783991a843e7804fcd56012b042b9fc05f05820af5275d33c74bf04201183c3ff73904332ace008b28e176f18c692304b98410a05e808704fbb94e567573cb389d03b1e5df953dcfa8a7bb245b8ea19b3cac9f9f67956a7aa9f2a5cd8c38e0c8b66c02c6df012402d717012ec99badc31174cccd3f0934f92a0cff5ae4f7caec8732ab14b0b33b66a2666c816a4a15b4a2f43c495ace90fb5755ef9b1716ef996cea27e2f654eaa08594937b22bf5a65bd57b34b7bc439827c3bbb074457022ccb96a384de4b2cf5c8b9e508455b6116a3a5a8dd129149bf8a66225555dd646f0f6a1bf12164e499258f558e590754c861cccf563b1a43be96266bcb697a8b6568d0027b0bc7d9d7589b3a723fa623847bc434623cce6f16063bba536e183f5171477f14bfbf5c34706cacc9384195116182765b183353a493baa73cc47b3552de5402f834954a3cdf6dc3fdf817465354fe510117bc1268c7a20800a9d66748324ac2a1b8986fa8ccbe3926f62a0776eba78121c23fd742e387c31fc62f3fd83ffd0f10efcc45fa8452dff757c419a1055ddea0a847490b40e7420e84dd791cb2a3f5151577f1e26e3d9592efd5f91e5d6c039bc2a35eeac1fd87b2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ffcf7672f280b24c1c009b4930a8871b60abb164b59f93b094647c5e1c57a47ce0c11de93c58c322572b43c926a3b6c0b961625c7cd7c1e2f0caed53a781a8cd37842a5f7812a5f276d186821dc26540d40d4d7c99ffe4179d4b13a412653570054ce562730aacd8c3b93312c760d4b79c61c31fcc0fdaa3268f6084f3e979e1c90f335aa0b1d558b3a32b94f2a38fd9a2c530c449aaa77695461c1897a12b5a95ea4611eba76851a33f7822a209aae1230f255585733a01b5ba4d2283881e94c95ebab2e2b063016caeb71a6d0474b8e15592e175c829a246651765170b299006045a2acbf642aa3f235b9c2a39ca5a80bd6a9114764ee139b84d3b2686b542b985892d179b9c705f2a43c54ce708129323b9b450dd4602662956f925322da18a5154230722a43b95273a05a3cb8b1b69bc776d29c6afa8aa197a181efb9672f2cba9b24653349d3f88946a7c2228c68ee329763346230ba9ab5398867f22870f7697b20a3f56d8796aa8506dbb3d69295b866b2033013106f2961aba89b3dc4ab43a657146cf6517611d7226239742195b5100065bbcdb2a79127a38d20ddef447b45ca5ada9c4d5e0a19aeb32d2b4485091146e209916804886c975f47b1a99408b824c22ffc959cd5710fd8c841bfb5fe7c437ce232f345286e5cb778dd51c9fd49c724c924c951803964394d5c3b45a6bb2a23610bbb1560cb438124945c3845fbc8464d98f23d92e696b207900bc24d003f5676adacb4bfd7664060481ab8896be52738ed3a55d19206336c43993c43892955b42783c3840a989c546c421e71baf3c66a26629a21fa73e5e78093603c9c90329a54c1c3e2c4eedd08096c29b7650c214d23d7e03932f99aefe367640f238a106994e662f2aea1785045bef0075d4889da2bcc6b043168b3845574c51dfa60d2ed28900b0526511122832021ffa68b7c450a1089c3bda40ce986d492b7da2baa0bb31737d2cc0127353f6a5c85281442fcb4965f3cafef30463805a4955509ad2c63bea6487c42152442204bc2bd750a0e5f85a6ccb60af1a10c3b44700b65db2d0ad1d6601b5e9b505e7a83cc773ff354d6f87c2ce774fda4263c88b58b116857dc4821077960f9767d180c9c8f7b1e6280f5cf52fa6139428ecb2c796a498a55392c4a4a053b13534cab66973270ad0a41b42415896c4d292616b27cbc1756307c2ff38850b8929fd0a11cd4741344852ac96b325496309b3bfd9316ec81c7418a71843a8709341478f35187b38b5f4f38a5637278513c78bfc179cb4c4b0608fa0b6a5bfc0ba4777b62914848a3388c918056c2929e4c2034fc9719b8b471c341852436fed848e1df20a87b96add836a88a4ac86586b290abc560c71e8954102662e525258d7b76ceef0916bc59a56f909fb9b59a6494636a79f0d60cc7e047159d03f32987c1eebc39993c10ac43d664339a5d4601d33438ba5b31fd128ee5499caa7773c675396f46196994e5c29a5fd4941cde2bd7929690269602d5a3ed92b73766369fd526a0315acab08c97f49b461033338071e05cc3ccc704b74009755409f2479578c498112452c950375c9508c06e3478c4476371346d546744ccc908e6192efd68e8a67cd99832eae8a4051e05fbeb05ef8711aaac41bc160ca0dcc1a0f7b373c31696bd917bf4272ab752d145854ca17474e2ab0795c24c8c045f7e512b985a9e6231376ca4358f28fcc475f08079dd10a882a64ab2925106daa4e1c561662977e13c77873b132094b1f6331744e87cc2d50091d38a8d2eca50dc4c2f2e148b85cbdcb0c9d4089c1c782912563688181ba64e758c4d5627bd5a4c9236b475a4fcfacc8f359c180643308fb45de06130f501dd16cc214185c29987cf92a8c938309599276324bb90b1a07dd7830fb5ab36165358845bc25852221e7bd2b98c94fab7ea75a0e687c71f700b2523b0c1f9a6fbd1aa911c274bca1af2ee45ad1f858cd83546473c625388d0470b00991c38725bbb2c9bdd395213018663aa8b6a2c515aa527f137354a08084d9691e18568e90f8a0a3b1abd4a8577851a8cb670cf5639ce96184cfa1bed338b106da639af95a1ddc0d27e06f6b783b1b9276e1e20cfb484b89546242418027824939d68090f62e06473611382118b49336c30e8da56aa51796a6d407aef634a1f168cda2ad4fd05e38891a25049a0ef560a8232946c0bf0e99051e953b3db4c5d2112e8934447d98568c647d463c34e83512b639b3d603574b7330a45b0e430386f19bb4c63ab2217313a7a07284a3994d2012aab965d8379ba5872aea773d03d74ab8b28c6c6152fef81cacb5c21bb541b2349887cc31c0c046237283dc3570caf0ae1d016dd1b67b4c83c758f58bc8ab918e4a8cd4300acfccb00aa9518fea103d8b951b2c425278585c08676635a7d3472066e54f564bab496931def8b43790598cd766726a31aff701bcd222f56cb699b4089f3872fae6a6be544c081265d4808b6743aed64a1b0db8b1be1a2346dbb52dd48023ca6cff44c4668283591a2808bc3417133a6e376ce229c1e075186cd3018b83256ada96520ac8bcd8983e097eadd0387db14556d03e4705a3d007a203167a70273bdfeb7689d1b5aa47b49f70a83a4520be83b10f746014d6b3cdf233e1c3cfbe9bb9b91151b5a848c6976997ca3b8e94b173e32ef5124c2d0b83d0d0ca607071045469cc079e9e3783991a843e7804fcd56012b042b9fc05f05820af5275d33c74bf04201183c3ff73904332ace008b28e176f18c692304b98410a05e808704fbb94e567573cb389d03b1e5df953dcfa8a7bb245b8ea19b3cac9f9f67956a7aa9f2a5cd8c38e0c8b66c02c6df012402d717012ec99badc31174cccd3f0934f92a0cff5ae4f7caec8732ab14b0b33b66a2666c816a4a15b4a2f43c495ace90fb5755ef9b1716ef996cea27e2f654eaa08594937b22bf5a65bd57b34b7bc439827c3bbb074457022ccb96a384de4b2cf5c8b9e508455b6116a3a5a8dd129149bf8a66225555dd646f0f6a1bf12164e499258f558e590754c861cccf563b1a43be96266bcb697a8b6568d0027b0bc7d9d7589b3a723fa623847bc434623cce6f16063bba536e183f5171477f14bfbf5c34706cacc9384195116182765b183353a493baa73cc47b3552de5402f834954a3cdf6dc3fdf817465354fe510117bc1268c7a20800a9d66748324ac2a1b8986fa8ccbe3926f62a0776eba78121c23fd742e387c31fc62f3fd83ffd0f10efcc45fa8452dff757c419a1055ddea0a847490b40e7420253ceba52f73dc442f96d810d8c3e9a6689c649661627060cf9e44657aa792bfe84dd791cb2a3f5151577f1e26e3d9592efd5f91e5d6c039bc2a35eeac1fd87b", + "server_login_state": "64fd474c171d2ded7d2024416eceda3fdc600244e97715aab122a57c36d88db5542322a7e381b8075a1fe8299c22151714701870ded72013d64ac83281c950f82116c2c8a25bb8cdc0636d278c85fc54b93ae4a685860382262d39657360a3d28ebbae1b5b20cb9e7b46d85a50a1304bf13a64ba7c0cb61544eab650bfb7575e99832eae8a4051e05fbeb05ef8711aaac41bc160ca0dcc1a0f7b373c31696bd917bf4272ab752d145854ca17474e2ab0795c24c8c045f7e512b985a9e6231376ca4358f28fcc475f08079dd10a882a64ab2925106daa4e1c561662977e13c77873b132094b1f6331744e87cc2d50091d38a8d2eca50dc4c2f2e148b85cbdcb0c9d4089c1c782912563688181ba64e758c4d5627bd5a4c9236b475a4fcfacc8f359c180643308fb45de06130f501dd16cc214185c29987cf92a8c938309599276324bb90b1a07dd7830fb5ab36165358845bc25852221e7bd2b98c94fab7ea75a0e687c71f700b2523b0c1f9a6fbd1aa911c274bca1af2ee45ad1f858cd83546473c625388d0470b00991c38725bbb2c9bdd395213018663aa8b6a2c515aa527f137354a08084d9691e18568e90f8a0a3b1abd4a8577851a8cb670cf5639ce96184cfa1bed338b106da639af95a1ddc0d27e06f6b783b1b9276e1e20cfb484b89546242418027824939d68090f62e06473611382118b49336c30e8da56aa51796a6d407aef634a1f168cda2ad4fd05e38891a25049a0ef560a8232946c0bf0e99051e953b3db4c5d2112e8934447d98568c647d463c34e83512b639b3d603574b7330a45b0e430386f19bb4c63ab2217313a7a07284a3994d2012aab965d8379ba5872aea773d03d74ab8b28c6c6152fef81cacb5c21bb541b2349887cc31c0c046237283dc3570caf0ae1d016dd1b67b4c83c758f58bc8ab918e4a8cd4300acfccb00aa9518fea103d8b951b2c425278585c08676635a7d3472066e54f564bab496931def8b43790598cd766726a31aff701bcd222f56cb699b4089f3872fae6a6be544c081265d4808b6743aed64a1b0db8b1be1a2346dbb52dd48023ca6cff44c4668283591a2808bc3417133a6e376ce229c1e075186cd3018b83256ada96520ac8bcd8983e097eadd0387db14556d03e4705a3d007a203167a70273bdfeb7689d1b5aa47b49f70a83a4520be83b10f746014d6b3cdf233e1c3cfbe9bb9b91151b5a848c6976997ca3b8e94b173e32ef5124c2d0b83d0d0ca607071045469cc079e9e3783991a843e7804fcd56012b042b9fc05f05820af5275d33c74bf04201183c3ff73904332ace008b28e176f18c692304b98410a05e808704fbb94e567573cb389d03b1e5df953dcfa8a7bb245b8ea19b3cac9f9f67956a7aa9f2a5cd8c38e0c8b66c02c6df012402d717012ec99badc31174cccd3f0934f92a0cff5ae4f7caec8732ab14b0b33b66a2666c816a4a15b4a2f43c495ace90fb5755ef9b1716ef996cea27e2f654eaa08594937b22bf5a65bd57b34b7bc439827c3bbb074457022ccb96a384de4b2cf5c8b9e508455b6116a3a5a8dd129149bf8a66225555dd646f0f6a1bf12164e499258f558e590754c861cccf563b1a43be96266bcb697a8b6568d0027b0bc7d9d7589b3a723fa623847bc434623cce6f16063bba536e183f5171477f14bfbf5c34706cacc9384195116182765b183353a493baa73cc47b3552de5402f834954a3cdf6dc3fdf817465354fe510117bc1268c7a20800a9d66748324ac2a1b8986fa8ccbe3926f62a0776eba78121c23fd742e387c31fc62f3fd83ffd0f10efcc45fa8452dff757c419a1055ddea0a847490b40e7420ae7c1a3768d3677d2efc4f5d4a87c815cbba26e2e8ebade34a6438f3d08cdcc51b3f6337f3eae77fcfc0bf7ec43be7c5529cc6e4d42fb0c8f14f3de7c2a799cebc535aaa57ce99d62e8ed634a26b71b11e3c7a9b8a893b3a474943c352105133cedef3f152743621f7c40f68207d68975d90491342fe8be3eb68841bbfabaca51d21798ef50389a569fb16c65af61e0f34d7d03f5daa873a56cda2c81432e101385a8695dcf2312505bd1b704bec5d9c3543580c8b5229affab327d6e36f39aa9536262f2bef0e10fe2bfda7a5513865e22d7fd7e87147eeb1cc4bcfafd2073797f66d0edae73b6192b70beae90751f1e39df1f7b05f70e3189697492ff16728828ae51c9f65727e153e3c842227f7501a1f65c3bd109ec0c67ca0a089d628bfe0d77e2c4c863c9d6e55c831459786ac5ea3b18abf9d425d83d6c04a30ec69d5640864f237f29f8c2edf15ee9a70ed029398579da3cd2fe99672ad74645d262c0ade4bdf7e56fe65cad3d693c44ea9e5cc3ff16ccafccf30f685dfdeb406445ee56529b40833987e78c9149e23260af76fe6efc932abb69af42ae4eaea079a7577f2efdfc1e83e7b910a17335cfe1f10020ecf66cec08bc3242b4e192a55bda9686c09c83f710e93a0d60e7dbdccaf6e5192e5d5d4beef621ddb5676fc4bf8df1b268b97a64fcf4e221a0155751d7c977521a5e48bb0d638678acf990a728f0cebf9715a9f63e437b081e0d0cb49098ab8d6166e6ca37063084a10a53196e12509b673f7266bc4e2b5699231cd5202c07b07ac1be0adf0e4d472e6f028b5228edee1b5f92eaceb8dde96e0f6483ddfed704b58f7f9ef133315e8b1f3bab8593b3c945fc940fd74318636e61fd3fc623e353fc6136ad80a13168acc4458523a856bf561b5857c77ccb13dbd5f3aeb0afeefc14047e0c2b98aa999473d5a678a5e7bea90ad6b4c893d4d819b659d4ec10a984e41635879a720f305c170275d2437da2f5a95636e5991e7d83725e0598bb4556e898f0383e035f06a7991365bb6f6326a260ed1602fe780082056d49534ce16430314c904db54bfbe2fb2d9ebdc7cbb3ac91b7f8a14d45e688e90e2521c54bba31160096801571eb290d700e770aa32c4afa25d3160910adb3aab4b2a71b12b3a9516e59da1d2ab681d84247358a4910f9396944e030013dd2f5b47dfeeef8f17fe6b8dde5c9b8107694a565155388ffe00eb0e7a7212da0fa1cd663030bd9c5d7c270aae4b0aa6c82f9d85c1ad493e65948c3f318c000952c0d05ee0f66c6a83f9e31f2507b019ae8cafa49766413460017f2f29b15e1f2dfb48dc5c5803c2f22b88e7dd999251cd32fb549b53b7fcbc412fe2cac33e653a1dfc7c9e0a98e358de263958fe9ea369f86126388bd5d6b09083b5831024c5fc3579a6cf61ee0d801f9d9405bc3adadcddb2b2e41f55e8576e8175407f49dc0089b46220a307eb4a691fe7b8ae22f91715f15b94111900374d535b53f77ed32dbc83b00a2967edc97cd3f0481f0b0521b1afaa1bbaf9", + "password_file": "ea0118578326d5c0ce0ccce4c836590e85610e646acc9092252ac84aca00d71d2ddca3f4ca1ba199025c9f490d35c1f93f250110c430331fe4761df3e94532fdf5b5f91146c69501203faedbe93b04e0c4204f995eb0261ba563fb4e3ec7abf4b0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265d0e1f51f070336bcb2ff904a18092cb6542cf25a370088dcb4a0b5f2966f1ff16c507b79be408613f6320e05a30ea7470858e1020b228988386384cb46a039a2", + "export_key": "501f39334fef4a701457c59ca3c4125f5e611e762f813f45fc89abeb6e4ae23f898bbad030623669251ee2c4a6d986266abb9c64182aab549942250f5f824401", + "session_key": "64fd474c171d2ded7d2024416eceda3fdc600244e97715aab122a57c36d88db5542322a7e381b8075a1fe8299c22151714701870ded72013d64ac83281c950f8" +} +"#; +#[cfg(feature = "curve25519")] +pub static TEST_VECTOR_P256_TRIPLE_DH_KEM_CURVE25519: &str = r#" +{ + "client_s_pk": "01e73901c93e2e6ac8554da09d0fd591c3c959f307530d4352414252502bd72e", + "client_s_sk": "b0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265", + "client_e_pk": "ae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f229", + "client_e_sk": "e84dd791cb2a3f5151577f1e26e3d9592efd5f91e5d6c039bc2a35eeac1fd87b", + "server_s_pk": "09a7e20539b6a73068d8d17f58aa52698fd43a921fa8eafa0210f1404d2bac01", + "server_s_sk": "406e30dce8dd4e11d946d4d60bab8ebfcaa9b55b3c172802dfa0518762ea8144", + "server_e_pk": "031a8d91a2d0be2efe5dc99da65ccdd3622cfd208737dee5cb86be32d5191655", + "server_e_sk": "60ff37cac3637214feff2c0a454028a78ffbf6e3397719965d42fd3f3a17714a", + "dummy_client_pk": "f954fbdbc732196433e6b1e30e64884104384d0de331d5abb0028e26fec00b4f", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "oprf_seed": "519dbe4c91dc74d173a34505ea59daaf0c1426d027e21dd83425cfb1b644991f", + "dummy_masking_key": "83d121ef67bef278e93f0d1026ce1fc6f986681ea7c95b482711cd1540bcaa83", + "masking_nonce": "ad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13", + "envelope_nonce": "c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf", + "client_nonce": "ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e", + "server_nonce": "a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "server_sig_rng": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "client_sig_rng": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "context": "636f6e74657874", + "registration_request": "0389554a672d6d40ec3f70af1d02004d459f3f6b04f821ea4179b630e0c515fc65", + "registration_response": "028b9e1cc6ad67bb2142936f53f9ab0aee35db08f4316bf33ce0b1b46372adc50b09a7e20539b6a73068d8d17f58aa52698fd43a921fa8eafa0210f1404d2bac01", + "registration_upload": "f57518dfd29789ada99a4c350ed95f10361855205a3cb98ea0dfc3e829dbf53e4226853714b55d305621d2ff4ec7e8f51b9040d2b97fe6fbf524d2ebdf1f27fab0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265502af63ffb3f21e6610335d3ca3665a0ebeceed19fb2166c343f89f26e12f1d0", + "credential_request": "0389554a672d6d40ec3f70af1d02004d459f3f6b04f821ea4179b630e0c515fc65ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52eae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f229238bb13a6b8dfb578b9f90765592a8a3bc5277ac76b04c4fa1386729f18705585e79c25174f7a6f740233d484166c615e9c924f0d6200dca1a30e46f3ef1827f36be43d8c6c17145332aac92d20b11776513b241cbb181b0b6ae8e596e84c08f09aa1a5cc07c1d4bb407d157809109f9861ba8c9bf85cb5ea153a862886d9db533bde592eb439bf821cde8689fa96c718f347e84d765ed681878f2679c43ae0fea6fe7914bd3887d69d2600cbc672d957948e479eaf9738b3b7faedb23bdb437c9378e05a60cb95b172d07d07a42bec3e55dcca06d09e811c849b63401b67e2679d9145a2eb344621328552410ad625e0822118ad988354257d2d9301cd77d2769bad0455ca5ca50782b1a65ab8a6b63b98f95b11b01ba6cd56abb09cd00475b6904b3293b3ff637637d538786eb9aeba4707f000226246defcb6af4da5cc3fbb550fa041e307ae1502b5db9145cf9790a201e88774f63885a3f7593b6c591d3671776cc0fa3029e7a1b809c570e1316c5a2a37c2bc05d9f13950aca715bd62e36702e3486b6242349e1fa247dc64cb3ab7dce631af71b2eb3f30017971a38c56f7d938ae38650cde095fdac9fc63aba15373d1d91a781cac9a9eb5728f00f855398c81a9db83b7e30d4c341566421461b2ec81e2794bcfcac7182e552e1e837b9705931601b55f312f3c143b4f32b904ab720738b396b4f28b92514c74c25118a5babc5e4f087ca56cb4783cd56cc3300fc5dd62c4a1e84af3c3424a20442b2e0b91a330fbf823e141415875c79b871050af5a1082b515b986dfd4ac54d006fc76818be8c011594a582086e22475042779d96c91ac11c29160a0ece9cb40a6993b4c059646b709c28b3ccc29c942413fac319556238c5632bcd30a86af6a72eaa3e6e2b3ab34629e5a744335caeeea2b157f89fa3320552b3c8f4dc4cfa540395fb70f48c471a457e11f6116481398596b54ff76d04a3add52121415a50d0538082a1715d066ba0aa351f789ae395658dfb6f4443bd5f69106597b12fb4a58d2151f6e211df8a5beb52158ed5626fc7331c813beb492cbc811fc5c004102c23d52a07dbe62358cc8ff8a5ca63ec1b6e234bd23c9b9099ca32a3b112460e4543890cd3c29e645088590f1260b76784738d7164789c8b5ec26aaba0428a565fb2dc75cab09418f848c889261b5989e8824ce5350267a7ceda0a7912211684abaf324a727eb0bf82c58f4587314cb7a478f781369273e9c9b1aea85b3a93037c56677858cff5ec09b01259c47691a56c9af3286a8e90964385cff7096be3e34b3c474d358cb683815076e8a1269cc1ac6bb4e38bb360ea966aac7dac609f95e46a8b4b3ed4b45eed584e1cb15dbdfaaa298b707522020f4461a0f8370f8bcc40945fee5036aef645319233037abd35235aaf9126a51724ea112c57b37806aa0a919b2eec1343677597ef13a1a6a3936aec305528358b3794423c6ee9f9763c8ca8a5442cffc0877e7a23f8e3a9a429238fa65e504cc92077a8503ace3a0abc8303275749687aa08495d183f7553eb4b72fbe5a5f74a319312c7bc58c90e633b391cab8bda4afc7265d79661ec2f54d488c166eb0467d53abcf5729701422de694408ad8f984750c73bf29292879e7da91cbf2baf147cc0ac8f31f10d7d2eb96bd2", + "credential_response": "028b9e1cc6ad67bb2142936f53f9ab0aee35db08f4316bf33ce0b1b46372adc50bad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd2ba32e9a1b11e04dd500433594ea4b967d6b1bb66004af0c02d8f1b93335602e472a2922a75beffe4a9ee066548eeb57d72d90771d0c0414ff921b8f478a81d3cd0c70e0fb3cc4ce8d3bc2b0de3b675d1ee12f1ba04a4d20261da8b35e41807560ff37cac3637214feff2c0a454028a78ffbf6e3397719965d42fd3f3a17714a093a155f87a9d6566ada4d19e5052f5751de09f11c04079f4e3ba8427d00b308b25efed86e0189c6216b978e8dacf1474e13c3f5dfa742eea2d8591ac2af63bd9bc0763afa415e96ddad2b9005bd6dda57689be842ce19434e9ff47d23e5cd23b2bf35ea47341671262e96a73bd7eaa52ee208dc28428e3fef8f62364be33dd9fbd6c65e9e4170882feb9a0ebf48db239cdabc0c247b2827d68f56c3443e30b82ecef30fb33e3ce495bd6b65bdc29d3ca2df061f40b27d27c7c9be391e8fdc4e57ddc10174e2e593d9b9771c88fa7b71f475b57e62da293d3f950e11b80cbf52be703af32b071dbed03b2f432ea71c12dcf93852e6b1ce7841fe6a1e754bf57af4577a05e980269b066a78b49dc279427885e367075765e5abc8a33721b2943fe041461c3692d3da64824a52bb59a03cbf15042be35382de45d6eaf624c874268613d184d08caa3dead079d49098498aa449c13663bb900c437fcb47755f8b2c6069cbbcbc67b37402ced1d86cef06450b17e1701a8907271a77bab655e351ff0358c0a7d38f85f8d33b7f6fdd02976959f039d192f575ea1911df19adb17efbdea3b292cc81ef1bf1b3fb2b53c40cca00a0aea54e70f0f627694fa2dd9dadcd1f3aa5d3c94558e2a73b11dfa9601c3e1a40398daab2c4916447adfa1ee56ceca110c29eb14e343574e9be4dda6f857f59d19f4dbc4f79d11689c1377b5896c2503c42204fdbe5681457e614d78cfa5393d48468491bcbd01f920b88088953c269a68827f3ffd87355494b5268fdfb08065d948006bea90d116fb58a4d272294fa1c93e400f19a9870c16505eb42b5cc67cd1cc80c786b287f441cc0594b763faa1e2b1ad52df54713a095914bde3f8be40e98cc5669d2e050ff23665c305bd9cc95e2cf14145e44d4f7014619468fad1000fef399ed3a0460f5bae59550dc66f02eab4d509338a7b286cf59dd1d391b9fe12252921086854203575239f0738c0b18a20e4bdc61d9eceb7128431523d98d0120577009c4b713b903e40d9a79506403b64e47e25aff596ef1c812abf449364478d3b2be3703991f4f1fefb31c7208aff0c284ae5a235b51c9f227902effde54dc65c31d9d06b532f3e514354c4ce3828e045dd2457d9457379d654edb54def5c8ee275294b2a6be58ac6b82e950864a5be9c990c7314dc6009a13efcf91f4f01e1baf4542e6570cb25e65a18a0d9f163a028686dbb1710d0f7191d4aebf6a3d6a2a810fec156fd28b4d0d4667e74912cbae62b79721d0c1634bb98b6a50287ecab95608716afc75f5e7589010b0fefc7650e759e35faf3624dedde8150f3c730f8803a01ba4aabba2dc9de4b320aaa6a815bc4be1aa41a01ca44fd98adf2fb6e7cb266ae52c93f08b79789b1d0f0703aac04e2bef3953f7fd06cfc5ef1ec17fda547a6d59b66216c899288ca329801e46f4b81c7c74483c076367acc636bc2b204798a107ba03a108856656a09f9158fc661a3468f6e171014f7034f7bbcd446977c314da7a6eb0202d1e0d9cd92ce88a03b84f6fd4109b806f9aab4bdebec429147b81c052d39f4d5037dbd0cbd61709f146bb178fd8372b4dea12c7a3b5f95522e5ca909323ec03f3067e79ea8ed9f464f7707a7444483439eabe27c366e5cfa0fd31c4bce694f89a71208a44", + "credential_finalization": "4534573a0895f26216a718a556eb83f8e1f500b7a3ac8219b7ea4baa42b47f9b6a4882b424f6ed7719b6726cb320a142d6e49d6bf867e7a472bb2cfdd08da283", + "client_registration_state": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f212380389554a672d6d40ec3f70af1d02004d459f3f6b04f821ea4179b630e0c515fc65", + "client_login_state": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f212380389554a672d6d40ec3f70af1d02004d459f3f6b04f821ea4179b630e0c515fc65ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52eae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f229238bb13a6b8dfb578b9f90765592a8a3bc5277ac76b04c4fa1386729f18705585e79c25174f7a6f740233d484166c615e9c924f0d6200dca1a30e46f3ef1827f36be43d8c6c17145332aac92d20b11776513b241cbb181b0b6ae8e596e84c08f09aa1a5cc07c1d4bb407d157809109f9861ba8c9bf85cb5ea153a862886d9db533bde592eb439bf821cde8689fa96c718f347e84d765ed681878f2679c43ae0fea6fe7914bd3887d69d2600cbc672d957948e479eaf9738b3b7faedb23bdb437c9378e05a60cb95b172d07d07a42bec3e55dcca06d09e811c849b63401b67e2679d9145a2eb344621328552410ad625e0822118ad988354257d2d9301cd77d2769bad0455ca5ca50782b1a65ab8a6b63b98f95b11b01ba6cd56abb09cd00475b6904b3293b3ff637637d538786eb9aeba4707f000226246defcb6af4da5cc3fbb550fa041e307ae1502b5db9145cf9790a201e88774f63885a3f7593b6c591d3671776cc0fa3029e7a1b809c570e1316c5a2a37c2bc05d9f13950aca715bd62e36702e3486b6242349e1fa247dc64cb3ab7dce631af71b2eb3f30017971a38c56f7d938ae38650cde095fdac9fc63aba15373d1d91a781cac9a9eb5728f00f855398c81a9db83b7e30d4c341566421461b2ec81e2794bcfcac7182e552e1e837b9705931601b55f312f3c143b4f32b904ab720738b396b4f28b92514c74c25118a5babc5e4f087ca56cb4783cd56cc3300fc5dd62c4a1e84af3c3424a20442b2e0b91a330fbf823e141415875c79b871050af5a1082b515b986dfd4ac54d006fc76818be8c011594a582086e22475042779d96c91ac11c29160a0ece9cb40a6993b4c059646b709c28b3ccc29c942413fac319556238c5632bcd30a86af6a72eaa3e6e2b3ab34629e5a744335caeeea2b157f89fa3320552b3c8f4dc4cfa540395fb70f48c471a457e11f6116481398596b54ff76d04a3add52121415a50d0538082a1715d066ba0aa351f789ae395658dfb6f4443bd5f69106597b12fb4a58d2151f6e211df8a5beb52158ed5626fc7331c813beb492cbc811fc5c004102c23d52a07dbe62358cc8ff8a5ca63ec1b6e234bd23c9b9099ca32a3b112460e4543890cd3c29e645088590f1260b76784738d7164789c8b5ec26aaba0428a565fb2dc75cab09418f848c889261b5989e8824ce5350267a7ceda0a7912211684abaf324a727eb0bf82c58f4587314cb7a478f781369273e9c9b1aea85b3a93037c56677858cff5ec09b01259c47691a56c9af3286a8e90964385cff7096be3e34b3c474d358cb683815076e8a1269cc1ac6bb4e38bb360ea966aac7dac609f95e46a8b4b3ed4b45eed584e1cb15dbdfaaa298b707522020f4461a0f8370f8bcc40945fee5036aef645319233037abd35235aaf9126a51724ea112c57b37806aa0a919b2eec1343677597ef13a1a6a3936aec305528358b3794423c6ee9f9763c8ca8a5442cffc0877e7a23f8e3a9a429238fa65e504cc92077a8503ace3a0abc8303275749687aa08495d183f7553eb4b72fbe5a5f74a319312c7bc58c90e633b391cab8bda4afc7265d79661ec2f54d488c166eb0467d53abcf5729701422de694408ad8f984750c73bf29292879e7da91cbf2baf147cc0ac8f31f10d7d2eb96bd2e84dd791cb2a3f5151577f1e26e3d9592efd5f91e5d6c039bc2a35eeac1fd87bba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52ee3b2a983a47952f1763d43378f71882951ac98c8b2420833a070b01f38634bdab41bbbaf2cfcce824a9ee521223835796bbbbc9bd443e195396e9348da3b10ca213bbef380bad8a55cc571c6f734eaf5adb3529f76c6057d9b1a7d01956ea810e4240d57c457923b4cc72054a9898d6dd9385cd51da69104461c5ad2a65264c52e368c6d28820a91a640019714d9b5255f0755f2b80475db54d495650684cdbc544fe9083b8ec00e46197c8aca84c3db434ef5780e608a39db1b48c888868cb7824ac666c5445c264af06b63db3728d15784401a9f4053819051c145472923e9a3ace13dc31bc0922a88dca846924c0a4e1501c21a51a078b6ea1c822a982d042aa3239339eb9c2f3bd08e1e63288efc5d3b039af2dc3fecf2b343abc3bdc4bfa0cc0ec87062361457b20014e27b42968959653b4ccce7b631321047f8849208b526560aecc4acad065b3b086bd7962c7e080fd40305e2c339befbb986119e13d5218a307c4f0905b63861f40b3f9db6b4a6ac0a469aa20e804e31182abef1b530f86d89182e8a51486c507bbdfbb395f0a4e81357c1a3c5ed37c8b4aa65c7388803062eed63b19af2b89eb75d3d08b86f2914292bb888d8505d196d283b90bfa56a5cdba7cf41a815e3318f54465bc53596dc5f9874c248c266f20640421570580989713681f4c0057197b79fd51e6d5686e3d2a9d35875458a47d9059fa4ea5c0e2c5b2c0ca1f104909f41279675630ae75111f728f8260683c45bc8e5c6195b69c9d1ccccc3b9ec14aee035aee3c12dbf1cc80dd33cca3a3fe98c49c7061e887a0af5b26a69610245871a942a868c768aaa37c665a50698887f2790583c8a28fcf48d3e299d381731eefb65fee790ddf9c36ce6a61ae60b35c718c530696b3081da31b31d6575629216bf7744f5a82d7ce824df449852d84d395bb29263cef6b4a57678a5dbecc4acd6b58d30290d39ad72b63204fc6fd38cb149a2c2cf78a82a132c81cbcb16525c3a96bc2047c7c058b9144a023e8453033b1e5ec54e5516254f655326915bb60b1fd48829b5d82329a98656f8a22ec252fd7847d14073b24abdee277e2444ad8dd1a601b24ada9abeb86abda9737b5c266b73869baeb5ae28b246a7c11f1604023718cf6ccc87057168c569b130f3a65a4268b678289b404995d320f7ca4d2cb22f0a4cc5c27c709a36acd879074230c515aa98338031ad7ac920eb2cb19a0a8cd31a4f13b925a933ea1900c1f0831a3a2850b82877d742d6144c81c2ac811ac5d060790226bf2409d0a12c9276eab7553c6a0e4124b0951b6600718296126ac21f2d138c29a04ae71204bd4c66b535ac99ac3debe53159212a749b722782bf9df8139a16233d89a044875312b8ade1855fde7b5d0177204921289fbb0c0ac19cbf4ac8d4603fbbb28492c2c125e9012a2cac330c91227a72312184453b0b6680692fa80a4f553be8b8118890c616120c1d583d0fb5731cab2fb1d4abbaa8627e415ca4cb9bd1b4693e4537074c152700a85aa529675ca76eba4978a4230c525800e2785c20992dc75233d198a4aa6f0af67b22dc95c7c5460a563c204533b653876195c176a563e357640b082a63e4b7fb43ac11957b238bb13a6b8dfb578b9f90765592a8a3bc5277ac76b04c4fa1386729f18705585e79c25174f7a6f740233d484166c615e9c924f0d6200dca1a30e46f3ef1827f36be43d8c6c17145332aac92d20b11776513b241cbb181b0b6ae8e596e84c08f09aa1a5cc07c1d4bb407d157809109f9861ba8c9bf85cb5ea153a862886d9db533bde592eb439bf821cde8689fa96c718f347e84d765ed681878f2679c43ae0fea6fe7914bd3887d69d2600cbc672d957948e479eaf9738b3b7faedb23bdb437c9378e05a60cb95b172d07d07a42bec3e55dcca06d09e811c849b63401b67e2679d9145a2eb344621328552410ad625e0822118ad988354257d2d9301cd77d2769bad0455ca5ca50782b1a65ab8a6b63b98f95b11b01ba6cd56abb09cd00475b6904b3293b3ff637637d538786eb9aeba4707f000226246defcb6af4da5cc3fbb550fa041e307ae1502b5db9145cf9790a201e88774f63885a3f7593b6c591d3671776cc0fa3029e7a1b809c570e1316c5a2a37c2bc05d9f13950aca715bd62e36702e3486b6242349e1fa247dc64cb3ab7dce631af71b2eb3f30017971a38c56f7d938ae38650cde095fdac9fc63aba15373d1d91a781cac9a9eb5728f00f855398c81a9db83b7e30d4c341566421461b2ec81e2794bcfcac7182e552e1e837b9705931601b55f312f3c143b4f32b904ab720738b396b4f28b92514c74c25118a5babc5e4f087ca56cb4783cd56cc3300fc5dd62c4a1e84af3c3424a20442b2e0b91a330fbf823e141415875c79b871050af5a1082b515b986dfd4ac54d006fc76818be8c011594a582086e22475042779d96c91ac11c29160a0ece9cb40a6993b4c059646b709c28b3ccc29c942413fac319556238c5632bcd30a86af6a72eaa3e6e2b3ab34629e5a744335caeeea2b157f89fa3320552b3c8f4dc4cfa540395fb70f48c471a457e11f6116481398596b54ff76d04a3add52121415a50d0538082a1715d066ba0aa351f789ae395658dfb6f4443bd5f69106597b12fb4a58d2151f6e211df8a5beb52158ed5626fc7331c813beb492cbc811fc5c004102c23d52a07dbe62358cc8ff8a5ca63ec1b6e234bd23c9b9099ca32a3b112460e4543890cd3c29e645088590f1260b76784738d7164789c8b5ec26aaba0428a565fb2dc75cab09418f848c889261b5989e8824ce5350267a7ceda0a7912211684abaf324a727eb0bf82c58f4587314cb7a478f781369273e9c9b1aea85b3a93037c56677858cff5ec09b01259c47691a56c9af3286a8e90964385cff7096be3e34b3c474d358cb683815076e8a1269cc1ac6bb4e38bb360ea966aac7dac609f95e46a8b4b3ed4b45eed584e1cb15dbdfaaa298b707522020f4461a0f8370f8bcc40945fee5036aef645319233037abd35235aaf9126a51724ea112c57b37806aa0a919b2eec1343677597ef13a1a6a3936aec305528358b3794423c6ee9f9763c8ca8a5442cffc0877e7a23f8e3a9a429238fa65e504cc92077a8503ace3a0abc8303275749687aa08495d183f7553eb4b72fbe5a5f74a319312c7bc58c90e633b391cab8bda4afc7265d79661ec2f54d488c166eb0467d53abcf5729701422de694408ad8f984750c73bf29292879e7da91cbf2baf147cc0ac8f31f10d7d2eb96bd2da2b22bbb9275070fd5a3be2b4c4b3ce48f3ad55cbe0ce3710f8f174e4ba7273e84dd791cb2a3f5151577f1e26e3d9592efd5f91e5d6c039bc2a35eeac1fd87b", + "server_login_state": "57d1fbdc9bc09e460d7e7bfeb690f08a682510c2d89afece537ad822bb1961ac6733a508b8f4a51045b36a29b0e54c5300aecf011c62dd79e3270f7283959f244534573a0895f26216a718a556eb83f8e1f500b7a3ac8219b7ea4baa42b47f9b6a4882b424f6ed7719b6726cb320a142d6e49d6bf867e7a472bb2cfdd08da283238bb13a6b8dfb578b9f90765592a8a3bc5277ac76b04c4fa1386729f18705585e79c25174f7a6f740233d484166c615e9c924f0d6200dca1a30e46f3ef1827f36be43d8c6c17145332aac92d20b11776513b241cbb181b0b6ae8e596e84c08f09aa1a5cc07c1d4bb407d157809109f9861ba8c9bf85cb5ea153a862886d9db533bde592eb439bf821cde8689fa96c718f347e84d765ed681878f2679c43ae0fea6fe7914bd3887d69d2600cbc672d957948e479eaf9738b3b7faedb23bdb437c9378e05a60cb95b172d07d07a42bec3e55dcca06d09e811c849b63401b67e2679d9145a2eb344621328552410ad625e0822118ad988354257d2d9301cd77d2769bad0455ca5ca50782b1a65ab8a6b63b98f95b11b01ba6cd56abb09cd00475b6904b3293b3ff637637d538786eb9aeba4707f000226246defcb6af4da5cc3fbb550fa041e307ae1502b5db9145cf9790a201e88774f63885a3f7593b6c591d3671776cc0fa3029e7a1b809c570e1316c5a2a37c2bc05d9f13950aca715bd62e36702e3486b6242349e1fa247dc64cb3ab7dce631af71b2eb3f30017971a38c56f7d938ae38650cde095fdac9fc63aba15373d1d91a781cac9a9eb5728f00f855398c81a9db83b7e30d4c341566421461b2ec81e2794bcfcac7182e552e1e837b9705931601b55f312f3c143b4f32b904ab720738b396b4f28b92514c74c25118a5babc5e4f087ca56cb4783cd56cc3300fc5dd62c4a1e84af3c3424a20442b2e0b91a330fbf823e141415875c79b871050af5a1082b515b986dfd4ac54d006fc76818be8c011594a582086e22475042779d96c91ac11c29160a0ece9cb40a6993b4c059646b709c28b3ccc29c942413fac319556238c5632bcd30a86af6a72eaa3e6e2b3ab34629e5a744335caeeea2b157f89fa3320552b3c8f4dc4cfa540395fb70f48c471a457e11f6116481398596b54ff76d04a3add52121415a50d0538082a1715d066ba0aa351f789ae395658dfb6f4443bd5f69106597b12fb4a58d2151f6e211df8a5beb52158ed5626fc7331c813beb492cbc811fc5c004102c23d52a07dbe62358cc8ff8a5ca63ec1b6e234bd23c9b9099ca32a3b112460e4543890cd3c29e645088590f1260b76784738d7164789c8b5ec26aaba0428a565fb2dc75cab09418f848c889261b5989e8824ce5350267a7ceda0a7912211684abaf324a727eb0bf82c58f4587314cb7a478f781369273e9c9b1aea85b3a93037c56677858cff5ec09b01259c47691a56c9af3286a8e90964385cff7096be3e34b3c474d358cb683815076e8a1269cc1ac6bb4e38bb360ea966aac7dac609f95e46a8b4b3ed4b45eed584e1cb15dbdfaaa298b707522020f4461a0f8370f8bcc40945fee5036aef645319233037abd35235aaf9126a51724ea112c57b37806aa0a919b2eec1343677597ef13a1a6a3936aec305528358b3794423c6ee9f9763c8ca8a5442cffc0877e7a23f8e3a9a429238fa65e504cc92077a8503ace3a0abc8303275749687aa08495d183f7553eb4b72fbe5a5f74a319312c7bc58c90e633b391cab8bda4afc7265d79661ec2f54d488c166eb0467d53abcf5729701422de694408ad8f984750c73bf29292879e7da91cbf2baf147cc0ac8f31f10d7d2eb96bd2b2bf35ea47341671262e96a73bd7eaa52ee208dc28428e3fef8f62364be33dd9fbd6c65e9e4170882feb9a0ebf48db239cdabc0c247b2827d68f56c3443e30b82ecef30fb33e3ce495bd6b65bdc29d3ca2df061f40b27d27c7c9be391e8fdc4e57ddc10174e2e593d9b9771c88fa7b71f475b57e62da293d3f950e11b80cbf52be703af32b071dbed03b2f432ea71c12dcf93852e6b1ce7841fe6a1e754bf57af4577a05e980269b066a78b49dc279427885e367075765e5abc8a33721b2943fe041461c3692d3da64824a52bb59a03cbf15042be35382de45d6eaf624c874268613d184d08caa3dead079d49098498aa449c13663bb900c437fcb47755f8b2c6069cbbcbc67b37402ced1d86cef06450b17e1701a8907271a77bab655e351ff0358c0a7d38f85f8d33b7f6fdd02976959f039d192f575ea1911df19adb17efbdea3b292cc81ef1bf1b3fb2b53c40cca00a0aea54e70f0f627694fa2dd9dadcd1f3aa5d3c94558e2a73b11dfa9601c3e1a40398daab2c4916447adfa1ee56ceca110c29eb14e343574e9be4dda6f857f59d19f4dbc4f79d11689c1377b5896c2503c42204fdbe5681457e614d78cfa5393d48468491bcbd01f920b88088953c269a68827f3ffd87355494b5268fdfb08065d948006bea90d116fb58a4d272294fa1c93e400f19a9870c16505eb42b5cc67cd1cc80c786b287f441cc0594b763faa1e2b1ad52df54713a095914bde3f8be40e98cc5669d2e050ff23665c305bd9cc95e2cf14145e44d4f7014619468fad1000fef399ed3a0460f5bae59550dc66f02eab4d509338a7b286cf59dd1d391b9fe12252921086854203575239f0738c0b18a20e4bdc61d9eceb7128431523d98d0120577009c4b713b903e40d9a79506403b64e47e25aff596ef1c812abf449364478d3b2be3703991f4f1fefb31c7208aff0c284ae5a235b51c9f227902effde54dc65c31d9d06b532f3e514354c4ce3828e045dd2457d9457379d654edb54def5c8ee275294b2a6be58ac6b82e950864a5be9c990c7314dc6009a13efcf91f4f01e1baf4542e6570cb25e65a18a0d9f163a028686dbb1710d0f7191d4aebf6a3d6a2a810fec156fd28b4d0d4667e74912cbae62b79721d0c1634bb98b6a50287ecab95608716afc75f5e7589010b0fefc7650e759e35faf3624dedde8150f3c730f8803a01ba4aabba2dc9de4b320aaa6a815bc4be1aa41a01ca44fd98adf2fb6e7cb266ae52c93f08b79789b1d0f0703aac04e2bef3953f7fd06cfc5ef1ec17fda547a6d59b66216c899288ca329801e46f4b81c7c74483c076367acc636bc2b204798a107ba03a108856656a09f9158fc661a3468f6e171014f7034f7bbcd446977c314da7a6eb0202d1e0d9cd92ce88a03b84f6fd4109b806f9aab4bdebec429147b81c052d39f4d5037dbd0cbd61709f146bb178fd8372b4dea12c7a3b5f95522e5ca909323ec03f3067e79ea8ed9f464f7707a7444483439eabe27c366e5cfa0fd31c4bce694f89a71208a44", + "password_file": "f57518dfd29789ada99a4c350ed95f10361855205a3cb98ea0dfc3e829dbf53e4226853714b55d305621d2ff4ec7e8f51b9040d2b97fe6fbf524d2ebdf1f27fab0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265502af63ffb3f21e6610335d3ca3665a0ebeceed19fb2166c343f89f26e12f1d0", + "export_key": "bde7d6a20eead70c96e22b28d5e979b04c990746145e96af3c9e05c1566d1d5a", + "session_key": "57d1fbdc9bc09e460d7e7bfeb690f08a682510c2d89afece537ad822bb1961ac6733a508b8f4a51045b36a29b0e54c5300aecf011c62dd79e3270f7283959f24" +} +"#; +#[cfg(feature = "curve25519")] +pub static TEST_VECTOR_P384_TRIPLE_DH_KEM_CURVE25519: &str = r#" +{ + "client_s_pk": "01e73901c93e2e6ac8554da09d0fd591c3c959f307530d4352414252502bd72e", + "client_s_sk": "b0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265", + "client_e_pk": "ae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f229", + "client_e_sk": "e84dd791cb2a3f5151577f1e26e3d9592efd5f91e5d6c039bc2a35eeac1fd87b", + "server_s_pk": "09a7e20539b6a73068d8d17f58aa52698fd43a921fa8eafa0210f1404d2bac01", + "server_s_sk": "406e30dce8dd4e11d946d4d60bab8ebfcaa9b55b3c172802dfa0518762ea8144", + "server_e_pk": "031a8d91a2d0be2efe5dc99da65ccdd3622cfd208737dee5cb86be32d5191655", + "server_e_sk": "60ff37cac3637214feff2c0a454028a78ffbf6e3397719965d42fd3f3a17714a", + "dummy_client_pk": "f954fbdbc732196433e6b1e30e64884104384d0de331d5abb0028e26fec00b4f", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5bd198aa66d474460a0959f960309cf180", + "oprf_seed": "519dbe4c91dc74d173a34505ea59daaf0c1426d027e21dd83425cfb1b644991f83d121ef67bef278e93f0d1026ce1fc6", + "dummy_masking_key": "f986681ea7c95b482711cd1540bcaa83ad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd", + "masking_nonce": "698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf", + "envelope_nonce": "ba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e", + "client_nonce": "a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "server_nonce": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "server_sig_rng": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "client_sig_rng": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "context": "636f6e74657874", + "registration_request": "03cce770cdec2d2fe346969374bb727b93d194c261bf6d6a65bfac528ad052c6ab1f3676bb0836a6ee4fde74644c3ed7b5", + "registration_response": "021191750af08937398160e87d7904d3aff294cde6aef2e604831f11d91d9c7a51dfb040d798351e5634ee25866ba5e8d709a7e20539b6a73068d8d17f58aa52698fd43a921fa8eafa0210f1404d2bac01", + "registration_upload": "e214e4f49be85f32c071f9b24368fd564a9b8a264e9dc604906679a0cb488a014b96697838ade27288f15d808d59a2d801f84422417515512c8e097ffda9836ee243ee9da1217022028a7c0256017e8cb0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265ce46b56ef7a727d9f1702b81b61f20ff13d901cac4c6e56cd7ec15d4bc72508c86f23115e46e07731048f8ae1a2927ba", + "credential_request": "03cce770cdec2d2fe346969374bb727b93d194c261bf6d6a65bfac528ad052c6ab1f3676bb0836a6ee4fde74644c3ed7b5a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1ae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f2290df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7", + "credential_response": "021191750af08937398160e87d7904d3aff294cde6aef2e604831f11d91d9c7a51dfb040d798351e5634ee25866ba5e8d7698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d136aa7b5698ec9d636dde4ccd2e12e3c7e1916ef00d5d21d26055807c3e29750a4b7312d9633cd83795ac2c0fb1c676d82e8aeda8548155324ab361423e3ba8c1cabaa10f877414a7003ce7bcfe0a9800e23bf37abe86518a217dbab2680b404b6db547b80be2703c4545b6e6e057eccb560ff37cac3637214feff2c0a454028a78ffbf6e3397719965d42fd3f3a17714a28e80d2f5d020b9144fb37cf28926958356e798667a8f806d0b366226aa3ed62810bee57540a1590cef89a35ee9a7c7e40593d87cf94fd735a817709c05c5a5090fa7f836f912cb306d79c214645c03e87527844920a46275115cbfc2e5fa258ca1be8a4f80417d4bcfdb074079d2317641528f8bb161b563b0f4cf4c4dc9bc6a1aefaf682d59d37d0633794e60b400d37de9b5bf393e219171c4553ace32ee6a8f3a975062eae6afef5737163f994d111fc8449ccac2f9aa964c324a81a6c919a5e1a1438e6cec521d4c207a6de49d9659e8655825602a4239bf3a611f4383734bcaa7e2b6a420aef25109150d6471d7f5f4b89e6a2b082c09718d0051dfe50f9d6a5e64ff04542f24a4707e331268250a93eb207b2f64a407965da7d269fb4b8877008e17135e49fd4e3bf18a291fb3f69b8bff4b0fdc85dde65484150d760e3bf4bc558450992e175320dcaeba9389b3ed7ab96cf85475e8b1117a3eaabc5147659f333dbe57f5c46cda6ec9fd0468334398fd3e030ac8cf9a5bca07876a9d26cba648ea7f4097755d2cf7e6bd85076bc8f5b893ef960b74a226d15cbbb3d38edbdd902dc92343c0bb7aefcac6abef2cbb77f249a140ca072cd1caea80c6c0d5547e3c7096177fc1bf859c94ed363414bd13863454800523467690518308e3d96caa2744fcb22188c262b0d69489aa0f6de477a7bf90e595cb15c1b242c3c855cb8884c359a55f10f6f62763fd1a0f3c3d9c39fedf0387bcb10011bedb32f82ad075ad800ffb53f77b5cc777c928e1a3534b3d6c6a9517bfe2e336220dd9a79fcc0ffcb3fc2ed75eac5eb92210c320022ab46de39b7f72d6604a3af264df80e5a7077b8a9067c7787547d3f001592721f7c0e1d0602e41178c937e835ba6d19c9359d8a1ce1eca6bdb40b0be77c1e36da07be1382364f3e4968dfeab9da96eeaa4b4f062492e7bb2efe24852ab805c304eae081d67d24d20b09724cf4cd6e3676bd56d26fcc7290d6b13cc347ed6c92fc6b967212b5a7a22287ce373c0b6a53d88a3cb0b27e5d0fcd2e5296f31ad27ff0a3531feef8b86afc1154bb9187ebb240295cb6cad40a0277cea0213452e88330602b0c435f9f1bcc35b4b02dd96a56fb3c113cfcd4005354e892acd69d45023ed4446678c9d42245c2866321b528e69bf0bec44bd2a4f67ce306d01ad49a3078166460c06f517592acc1712823ef0600a878a01d55aeaf57d1ff422f3a356621dd3e28df017d2c24cc7f1f65c1f56a3267b84c9652eb4c043c9e838f1ff97be7d8c57713bae0299c2e34b6e6522a88a5d4c39e9cc62fdffcc44a810834e04e237dbf9a5f714280da1e2b4b7aeaf9885b73bdf4432d445be949adaa05744244a1ad9ef900d6e54d1b24f2659b99a7ae354d64dbc052ce9ac1b9242bf8920f9fa3e11a026305245641c6a3050ab13bc4795de889661aa57c4aafa95776133e7bf270fdf694bf7f3f187069966dfb21637e6468a8e927baec83a07a5da4e3cab265d882df68c57060c0aacbdddb9b466aad8a255033d07e8c3de43256c2e334d6926cde7d4bb3aca5e58647582bd2da168a6555b546b5cb18308a7e9944e9c1cc5264f0d7484590e04bb7c57f2b635ea5a79f4c6ed89b90b9bf87e18eb53d4743383c5c24709aa4b8dc4423e10c7b0d", + "credential_finalization": "14bbadc7d21eb3399a10bae9c50ca09b2e11317426328ede767f207614d572f50bffe7555fbed4357ca96f1146d7b648d86fe3a32f306717c268920b57b99455", + "client_registration_state": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5bd198aa66d474460a0959f960309cf18003cce770cdec2d2fe346969374bb727b93d194c261bf6d6a65bfac528ad052c6ab1f3676bb0836a6ee4fde74644c3ed7b5", + "client_login_state": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5bd198aa66d474460a0959f960309cf18003cce770cdec2d2fe346969374bb727b93d194c261bf6d6a65bfac528ad052c6ab1f3676bb0836a6ee4fde74644c3ed7b5a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1ae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f2290df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7e84dd791cb2a3f5151577f1e26e3d9592efd5f91e5d6c039bc2a35eeac1fd87ba4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1e234b6047353e07437a54b0b4ce1784896bfa3a52fabca52c7222f3414623f9a4fbbf7447c04aaea852adeb839539560148ca4a89a8f8c2b8582ac29f4867a6bc9135aba83027a61189b3581a18184b1802a88463ea8cd41c40f2e344707314ba01c4e320292ce440c8081cb0960832cd03800dbcf333563218084a042b0f05c2f09936847d4bd391962b6860808a1a262bc7af6f11de67b98a7a1104cf6b434b86a23f15ceb019e197790c8f0116a551f04664f72286ff4c437288ab9b5b27366c8ab7d15327b85cba340713c67baab684edeb251fcd70a000c15b90cbf41b36259f37a7f743e47c525e5436e19815d91d452cd4c8e0cc70e069b491176adcf8ac58a349f98d669a1e511aa59bdaf34a0aea104ce6ca27a2347de406ea5a26bf4924fb5a27132113768f40573016867e5161251a09e1513a79b98907864c7b3b14fd350b6d5c6dda6025b4c6a5c7841bf4407fc3c780ff7866ca89715ab18317cb67ba78198312ca3ac7218b44d45b593948a6585d2836927b27418cf38a3cf5091579279c514356b43b0014ad53f20377de1dc32c89031e8ac94cc4c3caf4513edfb6e8a634866e78a86c8c0296275c873858e985dbb505c279145741807f0c419a10345825b7a3394cda9512920f49a8cf37709b0bddc10bd1f96587843b5be795ab8642c34506b285c70788a660fc73f96198ebb16c67ad11316124aa5457c972cc8192553ea450704cb0730ba9814326b083c14a23962ced1bcdbb790985bbfe9f323e4b463a386866b546a24d06d9b7704cba29eaf437016180d2b1b406e2a4eafd87b6b4a5e811734e47bbc2be6cefeda8c9ef09b37ec9df84086e21b352e7293eb508143fbb09f142cea7515e99baa730a12c7b916c21941eddc5a6a8c32312c3a7e2c5dfec934ba33cced8206b54a1785442c11044805699f991153880628d0032acb84bc62ca2e256c4ad44459bdbb0baf5b62ce1c37561c517765947c195656ccce8fb5269981b70f0c79c44c8ebcf5c46a007177e9c62df67531ba8f23253539371466215745181c25c3c74147861190c833ecbecf02d0552cc5265a395f892a191a76c861bdf5c2966c5ba0f5f8c414555ca1c7a95f264cd56ba40a454522885e57e2b7e03428d75ba7edb44c9d183a2a94bc48f6c7bba360ac242475da225c42c1430ac5da6b3a518ba0e378700699a3cef48744589295092623647110e461a8aa39b2919fc1f257e4d49cb69a8f4933109770bf9ab7a1e54c89ed1387aee61cbef99b1348834d2c7d33837767512b4ec3c38dfc89d0129f29f171f9fac246aa7537150f62a60c6f4945360823c95c585c4a09451029baf86e1f25b6189266338c862648a746f4590022bf70d59dbe67b1a9f14362e08181d4183b3a48c867147eb453124488f94173f8e78495302290874b305659084a4cc983ce51372895e054117082914ca9fc4040d6c66ac50164e813314ac4284339031ef27c217c843022260b462e7c92204f72a5b3a48bdee23e080b7a6eab7fc92a3d34a952b209c0a671257c051249137154060c1605034d10c3004a42302715010184de80cca2d2819dbc5caed72888d38ae6eb043b663b3de1c8e6955deb8b900df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7c43e8ded31c09c3034e2803679bcb56541de9c8492c916517cc1a84a7bba3e3cd198aa66d474460a0959f960309cf180e84dd791cb2a3f5151577f1e26e3d959", + "server_login_state": "b5e8dcf90123a10f690e6fbdd45575aaf0687effc94d1679c10d4857cd04a1ddaab72830be4199687b064d7a322cb149a3a9c56b14c12b2e5e07d03bedfc71ad14bbadc7d21eb3399a10bae9c50ca09b2e11317426328ede767f207614d572f50bffe7555fbed4357ca96f1146d7b648d86fe3a32f306717c268920b57b994550df81f84e90dece4786ed29dbfe5254a32230515269cd368ba8c04c6b0a9a0f2c567e5634fb21cf50b9a13a2575e16aeb099b91d630ed25453ee08087173b6f11424ee394d6a2b08df69645fd58142e21056a64d7e011451a1b14ecc5e0f237e70fc94785cae8682563ec4a813403d702b2152373bb2579eb0ca52f8ab33a1185f630781ab53c5fd192de1a30e1e957c6ae3c843b2c5cab674afc4a458b7adfb1bc4716c1bbb489c60a86e15525d7c68a486d2244c91398ed4aeddd29892722ebbe97d7e9115ed50bf00a4148948a15bc1051cc69d62725103c9bf302b961c53b7dcb759f484256d169bc3e8b6e55a489efabb508ba9c7e11195103345699f444553b13896f5fa316292285693132e29b30f66a9a32614bbc61ab6e87679655ba6c62a6f3a3d05117b61862960b702669908a0947d57e58a426aa0deb39d8df5ab00cb6153016ba8b12e35c9a719d97ab1fa0cc7b6aca7c6a06efc8f30e67bdaa64f0cc61bfad50da463ae8e976af517615c015700ebbf016675ce5775e6667352c15eb916a22d174a6481683274a86813007bcb2ceda7b0dd983570cb7f5156794f438abac042b6e1b9312663cbf832d537b8884c63ed8c0124079d60a329487c595b2aa74f16bdb8050826110708895c6f7bcdbc8cc92a5cc4b4b61b4faba13af780466832c10430a1b801a7224e87fb0c15d5063688662017aa47832bb07a47f308bfda8b63a386ab23dac07d87711df72e6594c5c3d021ef541e77637c5e06c005db3093eaa86f978221a531984ca0d8439d0ec62404d23025cb6cb1f326afa193cb7076d27a13ed02b77b48aa183037f5d100e7eab8e67393c76262e2fb38270cac827359d5bab6399586aba69b4205567a6c81be83b654992c9b610b9330659ca66a3323463d70c1f3bb3efb61357922014fcc219f88ab3c0c8d9f5a1f7a5a76c8d38e3c349c95fa2c1df622c073cdeec9a9505a67f15ba2976695bf5acd63ab804aa3ada8d37428324678c71fa74410f8389fb5a9a591910c38d6bcaedb283d269227d36b4fa4c1a4aab86ef7ad58d66b01686790fa16ca5049e93751c3715458138019208ecdd46c7ae5a9826b61320c69b9dc88d5fb8b8999171aa79bc51a48faa44389192c2a15129b7a2be1c0b81f0574f89b51be80195e223fa6787c7b25207b017061b360c8927dcae773e0ca8088d33515aaa6a2fcbf0a530463a752a0ecb7d853acefa189481869d68995b97c2d75760914351c5a0319c945c5b085a665aa631dd08dca3648138c95a27319e732a60ef439001734b468c4234b8cc2198d88f48a57ab914f1a22159970c5251684e07ab4f0191549a26e553ac6c754f50944d1db2ec09954478487a6c5b721e23792e7704ea1844671a0ea43bfb7520e91103e6011646db5a9a3f113fffb012adab301239ab1b390a1401379104546b519b4f0a7bb90899fe816c815632ee122e2d920bfe4a2dbc8bb439ac3456a0843288f817701c7d5ba49b57f57ea97220b84f198b330fc6c345a7d29a13f32067ed1136240b0513bb600b4b9a619451474c9403a6404bf2a59654061ba8882ec0a39f103189e184681fa9ebb37832a5c4dfb1798b8f24581da5b359b8d9f8e86a79b0f8bab7052f06fb535d8372350f4a0c47fc0339849fb0b5a679ab7ca1be8a4f80417d4bcfdb074079d2317641528f8bb161b563b0f4cf4c4dc9bc6a1aefaf682d59d37d0633794e60b400d37de9b5bf393e219171c4553ace32ee6a8f3a975062eae6afef5737163f994d111fc8449ccac2f9aa964c324a81a6c919a5e1a1438e6cec521d4c207a6de49d9659e8655825602a4239bf3a611f4383734bcaa7e2b6a420aef25109150d6471d7f5f4b89e6a2b082c09718d0051dfe50f9d6a5e64ff04542f24a4707e331268250a93eb207b2f64a407965da7d269fb4b8877008e17135e49fd4e3bf18a291fb3f69b8bff4b0fdc85dde65484150d760e3bf4bc558450992e175320dcaeba9389b3ed7ab96cf85475e8b1117a3eaabc5147659f333dbe57f5c46cda6ec9fd0468334398fd3e030ac8cf9a5bca07876a9d26cba648ea7f4097755d2cf7e6bd85076bc8f5b893ef960b74a226d15cbbb3d38edbdd902dc92343c0bb7aefcac6abef2cbb77f249a140ca072cd1caea80c6c0d5547e3c7096177fc1bf859c94ed363414bd13863454800523467690518308e3d96caa2744fcb22188c262b0d69489aa0f6de477a7bf90e595cb15c1b242c3c855cb8884c359a55f10f6f62763fd1a0f3c3d9c39fedf0387bcb10011bedb32f82ad075ad800ffb53f77b5cc777c928e1a3534b3d6c6a9517bfe2e336220dd9a79fcc0ffcb3fc2ed75eac5eb92210c320022ab46de39b7f72d6604a3af264df80e5a7077b8a9067c7787547d3f001592721f7c0e1d0602e41178c937e835ba6d19c9359d8a1ce1eca6bdb40b0be77c1e36da07be1382364f3e4968dfeab9da96eeaa4b4f062492e7bb2efe24852ab805c304eae081d67d24d20b09724cf4cd6e3676bd56d26fcc7290d6b13cc347ed6c92fc6b967212b5a7a22287ce373c0b6a53d88a3cb0b27e5d0fcd2e5296f31ad27ff0a3531feef8b86afc1154bb9187ebb240295cb6cad40a0277cea0213452e88330602b0c435f9f1bcc35b4b02dd96a56fb3c113cfcd4005354e892acd69d45023ed4446678c9d42245c2866321b528e69bf0bec44bd2a4f67ce306d01ad49a3078166460c06f517592acc1712823ef0600a878a01d55aeaf57d1ff422f3a356621dd3e28df017d2c24cc7f1f65c1f56a3267b84c9652eb4c043c9e838f1ff97be7d8c57713bae0299c2e34b6e6522a88a5d4c39e9cc62fdffcc44a810834e04e237dbf9a5f714280da1e2b4b7aeaf9885b73bdf4432d445be949adaa05744244a1ad9ef900d6e54d1b24f2659b99a7ae354d64dbc052ce9ac1b9242bf8920f9fa3e11a026305245641c6a3050ab13bc4795de889661aa57c4aafa95776133e7bf270fdf694bf7f3f187069966dfb21637e6468a8e927baec83a07a5da4e3cab265d882df68c57060c0aacbdddb9b466aad8a255033d07e8c3de43256c2e334d6926cde7d4bb3aca5e58647582bd2da168a6555b546b5cb18308a7e9944e9c1cc5264f0d7484590e04bb7c57f2b635ea5a79f4c6ed89b90b9bf87e18eb53d4743383c5c24709aa4b8dc4423e10c7b0d", + "password_file": "e214e4f49be85f32c071f9b24368fd564a9b8a264e9dc604906679a0cb488a014b96697838ade27288f15d808d59a2d801f84422417515512c8e097ffda9836ee243ee9da1217022028a7c0256017e8cb0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265ce46b56ef7a727d9f1702b81b61f20ff13d901cac4c6e56cd7ec15d4bc72508c86f23115e46e07731048f8ae1a2927ba", + "export_key": "817e99936783cb333e726f759681ffe9781d976d8ba90f269356807e7d01c8017f98ff65314efac6a30dc40b08f84392", + "session_key": "b5e8dcf90123a10f690e6fbdd45575aaf0687effc94d1679c10d4857cd04a1ddaab72830be4199687b064d7a322cb149a3a9c56b14c12b2e5e07d03bedfc71ad" +} +"#; +#[cfg(feature = "curve25519")] +pub static TEST_VECTOR_P521_TRIPLE_DH_KEM_CURVE25519: &str = r#" +{ + "client_s_pk": "01e73901c93e2e6ac8554da09d0fd591c3c959f307530d4352414252502bd72e", + "client_s_sk": "b0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265", + "client_e_pk": "ae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f229", + "client_e_sk": "e84dd791cb2a3f5151577f1e26e3d9592efd5f91e5d6c039bc2a35eeac1fd87b", + "server_s_pk": "09a7e20539b6a73068d8d17f58aa52698fd43a921fa8eafa0210f1404d2bac01", + "server_s_sk": "406e30dce8dd4e11d946d4d60bab8ebfcaa9b55b3c172802dfa0518762ea8144", + "server_e_pk": "031a8d91a2d0be2efe5dc99da65ccdd3622cfd208737dee5cb86be32d5191655", + "server_e_sk": "60ff37cac3637214feff2c0a454028a78ffbf6e3397719965d42fd3f3a17714a", + "dummy_client_pk": "f954fbdbc732196433e6b1e30e64884104384d0de331d5abb0028e26fec00b4f", + "credential_identifier": "637265644964656e746966696572", + "id_u": "696455", + "id_s": "696453", + "password": "70617373776f7264", + "blinding_factor": "0116f8f7d26a7c58739c92a79677b755283627f15538286319a03c6829c8695a77bed7570cd4597aa2fd45925e558acb346cb3f097e42bea46042547f576e07639fc", + "oprf_seed": "519dbe4c91dc74d173a34505ea59daaf0c1426d027e21dd83425cfb1b644991f83d121ef67bef278e93f0d1026ce1fc6f986681ea7c95b482711cd1540bcaa83", + "dummy_masking_key": "ad3739f1839da9e267c8ff89e58b166a98e3f3e430864ade512adbabf1f1a0dd698eafefb9d5bd2144108894409784469f9f0d8056cd77b7e68bbfdadf240d13", + "masking_nonce": "c8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedfba20f7169fbdb36c5c93461c192e5a9cf5762fae1859a5f2873131ca4e1fb52e", + "envelope_nonce": "a4a4f65a42b4181ffb2b1f907b68b1fdfa3effbdef9513c06e6f215a5cd525d1", + "client_nonce": "2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff", + "server_nonce": "d24b9eafc0924c0f66523516c74f60425295a857618fdd85d35f62a1b482e182", + "server_sig_rng": "b3128efa21e976075260a2c2da2dd98e0cf8505dcb05f4e44c87ca6858f21238", + "client_sig_rng": "16a8c3715be95c6635e1035848bb190f27736bcbe9b69fbde386e0271708da5b", + "context": "636f6e74657874", + "registration_request": "0301f864fc13c07b2c9b2e0c8ba30d47a68debd95630d317b3f3eb527ccd8eb10c3a3b142ef7e9b739152ffb4a69173001c9a0ef90631e5760eb1ac38ca5d19a255188", + "registration_response": "02003693a3d92a391990b42a68cd3fafa123901ce943b68ddbede6ca46d5b12db0038e471611f23ae06c397d5e504c4e66df19c09ac75fba23318e6265954264851e4d09a7e20539b6a73068d8d17f58aa52698fd43a921fa8eafa0210f1404d2bac01", + "registration_upload": "f82087d45d44875f2469129118714c1811028b0b2e173970fd130ae12a258a6a5cfa314a3ee3ee21b972444761a82c945b3e731f32ecdcd4bea59587acaddf4456877b601131e205b5997243b58ebfb11aaa3a512d9eb402dffd1091059b7240b0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265107c246317b40bd8e4c19336b9caee0d1f79fc2428907e5adf6c62ec188072b196bd570c5a06777c1103b3a64d3e19c16bdfa37c93a70bad7da1d1a6b4bffa4c", + "credential_request": "0301f864fc13c07b2c9b2e0c8ba30d47a68debd95630d317b3f3eb527ccd8eb10c3a3b142ef7e9b739152ffb4a69173001c9a0ef90631e5760eb1ac38ca5d19a2551882488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ffae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f2290d124317a31e57bc357cc6914d890b588548c91864fd224047a9c7b5f768919035ee8662eee85cb0d8745756a44df788f2a08f2c5058f6d8140b9a7ff2936345b39b543b069b58a927142e1e91289e41c056912965450a8f837a4e05362c0309fcf31469f5c32247147cf02d4a945eec467b24f8145312c26d941b6ed48a49c5b5c4967db2273d15999895d1bad62a8439cabc48b56f17e1ab7cd303d984ac26072326f81978b2ba2aba979436c35c10ad0f470ee46832a4a16b07e06b141584c2a7257a72cb2db0735e56bb4af146248770b546aa102b1da1305e4b28369100bbd90b7b48a37af00259bfca3091c9b7aec782f94474d8c41e2f87bc15f3350ca93b64847fefc8ab9f9a3a886c67658a3becb07548b4c8abb1cab357bdc15615a325c8a1da073264293098995ef0ae444654fa42342ebb8bc704860cb25bfa70aa8800a67242a17d106df20a1b9f763f6c2617f094c48cb025a1151ed94c649bf466590b13cd4b87e688423ac3143a62c2e1b509487c09da48bc79960ccc13133388ba88e75898a7c96e3837465256b3131c48a3827bd594efa6ac58a514c0b4a70d3536dc862c362a22b98316b45779a4497f260407ae6c5b3cf21a4e8042b8826ae3ab61b0e7279fc1a1cfdc8a2d786f16088c61d894a747143899b218aa011d4113c52a9ed6237798da44b1f2771a2067e8eb763d664eced59a563b8c17b7431958a5b235666b2003e5e39f3b108dc86587dfd5b57ed283d8b9a726fc85ab067385e5a23350340e977e82ac2c306a4dfbe95a12b0a959239c28c533e04ac023953817d9a201802ca6e94922146f9a2554d0038575ba7bc6600c472a4a54c248c2fc1d69c0b81caab086041f95a96358e9bcaad144ead50e8f9982375a30a13c5679d2bafb72912a6013d831ac1e4acff27aca46b27949d521042999f3518f79c506ab41a3b803cb3b31a8a0b06b293a45b1285f34906290f01f570394d9a6b0b475b40c579560498855fc175a14bd23ba6972f138ac6a2e4c5711fa4a213c8936c23063430b456ca3b2b05c5b3bc32f13790a02627500039ee67c3feb68c97fb7c4b8827fd8c89de3d18615488f8bac7e365755213268c31804d34c6be672a34d8045605c2c819ca684285c9d08cc49bcbadd0b3eedaac6cc854afd735512a406a7b97cba14a49e2b7ef37c2f6c54a7fef902b066cea1a2488ae66fd87c56eb2351ac3293d2330b861937fbf42225540259d1ab4a722b7a273f2490c97525949cf8c8504c751467ccbb5102d6fb4d89faad6890187c008770c2524ba0645c8c387b2925af5629e0b6ba9cb55c0c6918a90975bcf854c56c9b94e18bae3545a69449be3509c033c436279611c13ba91c10010bc71a040663c23265a8376ca1b251e05d866268761aba32851b7ef2b490449eb12c72fa1190edb4125e6c4978bb7fc65911f8c446d056a14a6283d6f75036128c0227049e807580357af805bd0713032e73016b87840edcc29bdbb20c61687f1653668544b43381517336a9d77213b5b3d11996e8dcb70872089244c73166b8955982f172c00c6129434b0587927e92fc9ddee8c33fc433ec66134b01816446249fd046c3b1c647f97df2a95b19d642c3d4dc01ff4c8c3a9734a8fb62e7c8f216a81a8af239461054fe89e6c3", + "credential_response": "02003693a3d92a391990b42a68cd3fafa123901ce943b68ddbede6ca46d5b12db0038e471611f23ae06c397d5e504c4e66df19c09ac75fba23318e6265954264851e4dc8d9932a0a851f23ac477302256daa9745a55e695ae3047db1d1c901ae30bedf2c8c5d7fabd24911a6a1981d545996185ce2acdaa01a8e7cffe29a3adbf8a74444242af34950e58bb0573dc0ce9931691b80c738d5f19ced469dbf5777502af94ef32e719b56b4925ffa716d2b2704e61877f18f8c9d95412bde691e5ff5f39b0060293c5c4831f244a60d0167cc00c5ea3164b8e438eb03edc9752db7cdebf760ff37cac3637214feff2c0a454028a78ffbf6e3397719965d42fd3f3a17714aadc4e8ff66ebe878a7cdbc9863a5385ee2774aa29118e0ed13d2e0766b50ba2e8fcc0eb6e5565269ca71eae9542c894e78d1d4903d4252f4d30676ebfcb09e7b06dabbd103bba4b642a87f27d7b5ba92909e08806af1bb52e566c50c8d903778914cdc5a2a4e246f796d132148213c6d8f7b564ebdef20809c4d0fb109e4115be464f24d0f342dfea83b38f01444760066227cbf83bc02d2587c0a94f1d9bee3eba3e09d08252f7cd9911470b7dd2dcd6c9bbe32fcb4628a1777617f628c33539eb7365a93c9dd0d37d1f5dea544518a978af987144f5c69fc12087f44519106dc1c0f2433c2bcfbcd5eddc7aa87a01c67438c7d1505f5ca2b84bfbbda6705bfec8d9152d58b3b15be3ece14925746469439feeb88adf52883b006a67f29adb32b2dd89b77f390a2d32a488c740df692f5c5f4d199eeee1410096ed01d514ad9d38a311765b38a776ba55817ddf4230073f0165e04e7560a57c2a61f590e1cc94dfd213f39c23e35a0393e439a68d6a0fc274afb67b8f0ca26f94a45b264c824d83816c7242800f26615f1aef081d94062b7609c4078ba5b4fc5e32cc48fe84fd1de285723199bfb16a852cf1b67e20fbb64b8e0aa3fd425b8f7ed93c7b304dd7b8884ce3fd3783386a740a0c4331f941eaa32d4536f6d7cb91e9279e24c2a66189dc144d88396efe63ad3d96c1f5bf3422de40096ab8eb8e7b466ceb14356c9aca487718357bf740fa0f614c1062a6bf9e41c019dbdcc7f877eb8514be2a1cc93ea381e0262235e47d412e17cc28b248106b9f7c86a52842298868802b295f3f0581852fb99746cda24541f0c4b64a19a35aa6452b68a5d040188ba457b274f5fa20325fbe0f60ff5eb10e30eb845ab4d84aa5a2454afe6e6f9edb285e4aee9cf6301c1f36ef553b61e360b22f9c3aa597fae5ee7d6959684bef0e085ac2703f50610ef01e1ba0fadcc3118c8f1d663fb3f7e4269df8b3c36a4232dc0471dafc05993e1dd6c1176250c9849d7b237fdb7e241113ed88964c50524449f673ed29b534109b3ca4dc1be201383a787d9c6334a5447fde4d35d880094678c8e371eadf92f14e4612f1939443e29bcc777d6dc92b392ba2860f877d195201ff3ea338a3204bc70566350202b0629df31a4a4b7ba9286b4494fe01e84f0ed9e94515114dd5664e6657152094f6fc08ac90c1d586a3dc76654c311347755fb952d668adc4e4b9dbff21defc2140638fb62a19d83850b7d40e976667be16b1030c0926a362d4437ec630193b1ce010b4c07c470710b22ec1c3452944179e9a01065966aab29627e9731abc97b1b6a1874dbf89adb2cb6b5517fb047997d63f9482ee4f35ac2537fedca355ebbba7b36a4a5be1ebe3eb68f10212501545f1f339205562b15eeafc551a6616423a9903245baeeb1326fe9d6b89421210267d99ffc6f23ed5ef28c772bd177017b92f1af6d0c4db7d58e22571e05d9dd5a69136dcfc4689d0aa2bb6a1210bb0ae8806c79d892758ae0372f3ad5f1a016fef3f67f030cbe8a1a28473035c428f13dac7b4d044bd9b9c54e0fd88be9b60867e183f718913b6e9d657dc41e0c47ffd8856e143d2451fb139865790d9d2bf7db493b58f2b0ac94c1a1d2456909d3526ce10870bc63298ac5b908d2043618a9841e06d953c76d4f", + "credential_finalization": "f396e1fb0f3249daa7b5f1d868b7ca6b37c29ed08f4dc21320d38ddc4996a38a83d9703953036bf49bd9ee8f9202bc160b80139fb85a3b6230de9edbc91861df", + "client_registration_state": "0116f8f7d26a7c58739c92a79677b755283627f15538286319a03c6829c8695a77bed7570cd4597aa2fd45925e558acb346cb3f097e42bea46042547f576e07639fc0301f864fc13c07b2c9b2e0c8ba30d47a68debd95630d317b3f3eb527ccd8eb10c3a3b142ef7e9b739152ffb4a69173001c9a0ef90631e5760eb1ac38ca5d19a255188", + "client_login_state": "0116f8f7d26a7c58739c92a79677b755283627f15538286319a03c6829c8695a77bed7570cd4597aa2fd45925e558acb346cb3f097e42bea46042547f576e07639fc0301f864fc13c07b2c9b2e0c8ba30d47a68debd95630d317b3f3eb527ccd8eb10c3a3b142ef7e9b739152ffb4a69173001c9a0ef90631e5760eb1ac38ca5d19a2551882488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ffae7d9883673c35d5ea525d87c80cc01cbdf88f09bbc3badb49fad9d171a7f2290d124317a31e57bc357cc6914d890b588548c91864fd224047a9c7b5f768919035ee8662eee85cb0d8745756a44df788f2a08f2c5058f6d8140b9a7ff2936345b39b543b069b58a927142e1e91289e41c056912965450a8f837a4e05362c0309fcf31469f5c32247147cf02d4a945eec467b24f8145312c26d941b6ed48a49c5b5c4967db2273d15999895d1bad62a8439cabc48b56f17e1ab7cd303d984ac26072326f81978b2ba2aba979436c35c10ad0f470ee46832a4a16b07e06b141584c2a7257a72cb2db0735e56bb4af146248770b546aa102b1da1305e4b28369100bbd90b7b48a37af00259bfca3091c9b7aec782f94474d8c41e2f87bc15f3350ca93b64847fefc8ab9f9a3a886c67658a3becb07548b4c8abb1cab357bdc15615a325c8a1da073264293098995ef0ae444654fa42342ebb8bc704860cb25bfa70aa8800a67242a17d106df20a1b9f763f6c2617f094c48cb025a1151ed94c649bf466590b13cd4b87e688423ac3143a62c2e1b509487c09da48bc79960ccc13133388ba88e75898a7c96e3837465256b3131c48a3827bd594efa6ac58a514c0b4a70d3536dc862c362a22b98316b45779a4497f260407ae6c5b3cf21a4e8042b8826ae3ab61b0e7279fc1a1cfdc8a2d786f16088c61d894a747143899b218aa011d4113c52a9ed6237798da44b1f2771a2067e8eb763d664eced59a563b8c17b7431958a5b235666b2003e5e39f3b108dc86587dfd5b57ed283d8b9a726fc85ab067385e5a23350340e977e82ac2c306a4dfbe95a12b0a959239c28c533e04ac023953817d9a201802ca6e94922146f9a2554d0038575ba7bc6600c472a4a54c248c2fc1d69c0b81caab086041f95a96358e9bcaad144ead50e8f9982375a30a13c5679d2bafb72912a6013d831ac1e4acff27aca46b27949d521042999f3518f79c506ab41a3b803cb3b31a8a0b06b293a45b1285f34906290f01f570394d9a6b0b475b40c579560498855fc175a14bd23ba6972f138ac6a2e4c5711fa4a213c8936c23063430b456ca3b2b05c5b3bc32f13790a02627500039ee67c3feb68c97fb7c4b8827fd8c89de3d18615488f8bac7e365755213268c31804d34c6be672a34d8045605c2c819ca684285c9d08cc49bcbadd0b3eedaac6cc854afd735512a406a7b97cba14a49e2b7ef37c2f6c54a7fef902b066cea1a2488ae66fd87c56eb2351ac3293d2330b861937fbf42225540259d1ab4a722b7a273f2490c97525949cf8c8504c751467ccbb5102d6fb4d89faad6890187c008770c2524ba0645c8c387b2925af5629e0b6ba9cb55c0c6918a90975bcf854c56c9b94e18bae3545a69449be3509c033c436279611c13ba91c10010bc71a040663c23265a8376ca1b251e05d866268761aba32851b7ef2b490449eb12c72fa1190edb4125e6c4978bb7fc65911f8c446d056a14a6283d6f75036128c0227049e807580357af805bd0713032e73016b87840edcc29bdbb20c61687f1653668544b43381517336a9d77213b5b3d11996e8dcb70872089244c73166b8955982f172c00c6129434b0587927e92fc9ddee8c33fc433ec66134b01816446249fd046c3b1c647f97df2a95b19d642c3d4dc01ff4c8c3a9734a8fb62e7c8f216a81a8af239461054fe89e6c3e84dd791cb2a3f5151577f1e26e3d9592efd5f91e5d6c039bc2a35eeac1fd87b2488cae978cfafe2d8f8804d73dc870915ef1a944a13fdc17c61eb72825d91ff67a85f7348281ee627c11419c80c218a028d4a1a5fceba07fceaa7fcab748bc504ffe39e6f77084c00b0c606aa23a2b31de083e0e105b39a2d605248a2973ab5694f7c4833b8bc319bf71b8aba425de972b75706a1a52078ec12e38c60b9405b3d853bc1994b19bbb69bf7481fecc07b7a697a7513724c3c60f19a8e500a5672ce92f01b07315907d05890d69c85b2288355baad3a34edab60b1356e9ba47d34110fa9667b869a68c85a0e8b785169f2c9dc17c858a07c62304368e21517435939165f45162424591489c01881284858e4067bfaa146998521a22bcf120abcb3b3f2615c135358058cbbfc7a634fe06d062c137579ba3739592f018cd3c99ef0cb92d1566bc00b23883148119450fe0a9cb75525583199bb01125b584a192a4ea93a1f7c48be5f32cb2c1957de98237bc68804a27d06989388a92facc94b1239245cdcce57bb34da622381c358e7c01428b94297775fae2c8374931975025e714899a3a2ad3c614a9bd28ac74aa1e6d84bf0006a7dd322c260b9fd823967314baf27b14ee6af7e3450caf481d07238a91a1f1334c4130414e820b2df586418d603cac8782dbcb6f1d7c6c41b3b0e7b9c0386376a86c6a2f93bf096690f58c67194130266bf9c24786df97f3e169aca9a4bb56016b3283606d3a2ff5983b6c7533a388effd37b9c113242a55cccb11bc618c16ca64a55422e56bbca8f767c8e63b321b97228636a77a4202c364e8eec82af9569512723a3953918423e9162b89b234f808a107127b9d5da55a022402cb957b62c0d1f147971b311a3817913207cf6c4c8ae5c4f6d316505ec1d8714055535abfa41014a554049f540dce357b3027dd827af763bc0b3778bbd939514145b34d30f864500d716360cb34188b0889c77736c34a964701e09b6876d9740d6504e0bf4127513392f6cab9de98ed4e05f8e48356b90790eda565ebcadf32218a2f6aa64e56cc4d230fda2ab6b294211691e68ac2bea0b5a0e830d10875bcae4511fa25b21c5162ab68b9219c9df174ce20cce707276cb24c58ef90b8ea03fc661396fa9b3fcc688f2b83c289112ad93cb1a671e4e846769b3b28ff8267436324efc07d8b831782076831630a9a199bce50a26792972d9a77fd04f4df9c349fa4d6ab510e0237ec455408c01cce58560e7e931f986705795a1fcb91750cc2a9fe79ff77cb74d0c5998509705319978ac7a0fc7c2ad28793d622afea5b740c6a2f901d0576734f9934427977b85cc9924a487b28cc0c1cba64a6436f9150b7f872cda1a79e6576d42a655ae2a74a3898e6a999b185200cbc7566773c6028b2c61e47b5ee53a40f99297a9a2c2e7b71db935b1e0a76e57a2ab07416db633f2272c7f5c7b59164c17c424693585b45611104100f1e577dae178e45794e8204cecbaa3caa84d72520db9928e12b622c7243ca65271dcf326cad46ca5e48cc386b0c989b19fb9a2ed01a15dd6b391f6b629b4b788c86741a61b137c637a71cc1740addbe55ea78b1e2f3c55980c36074846a1ac089a2189e9fc23cc138ce672c70e514f8a46ca69244f5fd10c01877ec19b54a262c3f57500f2769134c7a3ff6511fc242aca8688c6747e0f5b6c5b133420e9010d124317a31e57bc357cc6914d890b588548c91864fd224047a9c7b5f768919035ee8662eee85cb0d8745756a44df788f2a08f2c5058f6d8140b9a7ff2936345b39b543b069b58a927142e1e91289e41c056912965450a8f837a4e05362c0309fcf31469f5c32247147cf02d4a945eec467b24f8145312c26d941b6ed48a49c5b5c4967db2273d15999895d1bad62a8439cabc48b56f17e1ab7cd303d984ac26072326f81978b2ba2aba979436c35c10ad0f470ee46832a4a16b07e06b141584c2a7257a72cb2db0735e56bb4af146248770b546aa102b1da1305e4b28369100bbd90b7b48a37af00259bfca3091c9b7aec782f94474d8c41e2f87bc15f3350ca93b64847fefc8ab9f9a3a886c67658a3becb07548b4c8abb1cab357bdc15615a325c8a1da073264293098995ef0ae444654fa42342ebb8bc704860cb25bfa70aa8800a67242a17d106df20a1b9f763f6c2617f094c48cb025a1151ed94c649bf466590b13cd4b87e688423ac3143a62c2e1b509487c09da48bc79960ccc13133388ba88e75898a7c96e3837465256b3131c48a3827bd594efa6ac58a514c0b4a70d3536dc862c362a22b98316b45779a4497f260407ae6c5b3cf21a4e8042b8826ae3ab61b0e7279fc1a1cfdc8a2d786f16088c61d894a747143899b218aa011d4113c52a9ed6237798da44b1f2771a2067e8eb763d664eced59a563b8c17b7431958a5b235666b2003e5e39f3b108dc86587dfd5b57ed283d8b9a726fc85ab067385e5a23350340e977e82ac2c306a4dfbe95a12b0a959239c28c533e04ac023953817d9a201802ca6e94922146f9a2554d0038575ba7bc6600c472a4a54c248c2fc1d69c0b81caab086041f95a96358e9bcaad144ead50e8f9982375a30a13c5679d2bafb72912a6013d831ac1e4acff27aca46b27949d521042999f3518f79c506ab41a3b803cb3b31a8a0b06b293a45b1285f34906290f01f570394d9a6b0b475b40c579560498855fc175a14bd23ba6972f138ac6a2e4c5711fa4a213c8936c23063430b456ca3b2b05c5b3bc32f13790a02627500039ee67c3feb68c97fb7c4b8827fd8c89de3d18615488f8bac7e365755213268c31804d34c6be672a34d8045605c2c819ca684285c9d08cc49bcbadd0b3eedaac6cc854afd735512a406a7b97cba14a49e2b7ef37c2f6c54a7fef902b066cea1a2488ae66fd87c56eb2351ac3293d2330b861937fbf42225540259d1ab4a722b7a273f2490c97525949cf8c8504c751467ccbb5102d6fb4d89faad6890187c008770c2524ba0645c8c387b2925af5629e0b6ba9cb55c0c6918a90975bcf854c56c9b94e18bae3545a69449be3509c033c436279611c13ba91c10010bc71a040663c23265a8376ca1b251e05d866268761aba32851b7ef2b490449eb12c72fa1190edb4125e6c4978bb7fc65911f8c446d056a14a6283d6f75036128c0227049e807580357af805bd0713032e73016b87840edcc29bdbb20c61687f1653668544b43381517336a9d77213b5b3d11996e8dcb70872089244c73166b8955982f172c00c6129434b0587927e92fc9ddee8c33fc433ec66134b01816446249fd046c3b1c647f97df2a95b19d642c3d4dc01ff4c8c3a9734a8fb62e7c8f216a81a8af239461054fe89e6c327303bbdb9f2f6d263a15cd1f85cc8ddf1f7aa098c4db7408cf6355fdd2af70877bed7570cd4597aa2fd45925e558acb346cb3f097e42bea46042547f576e076", + "server_login_state": "4da473675189e99303ded9136c2401adbe4737c52d60468e9283c28819327a809b20ffbb21dcdf17a217a8e06b860bc8963ed31efb3d26be31a5c5578a807cb6f396e1fb0f3249daa7b5f1d868b7ca6b37c29ed08f4dc21320d38ddc4996a38a83d9703953036bf49bd9ee8f9202bc160b80139fb85a3b6230de9edbc91861df0d124317a31e57bc357cc6914d890b588548c91864fd224047a9c7b5f768919035ee8662eee85cb0d8745756a44df788f2a08f2c5058f6d8140b9a7ff2936345b39b543b069b58a927142e1e91289e41c056912965450a8f837a4e05362c0309fcf31469f5c32247147cf02d4a945eec467b24f8145312c26d941b6ed48a49c5b5c4967db2273d15999895d1bad62a8439cabc48b56f17e1ab7cd303d984ac26072326f81978b2ba2aba979436c35c10ad0f470ee46832a4a16b07e06b141584c2a7257a72cb2db0735e56bb4af146248770b546aa102b1da1305e4b28369100bbd90b7b48a37af00259bfca3091c9b7aec782f94474d8c41e2f87bc15f3350ca93b64847fefc8ab9f9a3a886c67658a3becb07548b4c8abb1cab357bdc15615a325c8a1da073264293098995ef0ae444654fa42342ebb8bc704860cb25bfa70aa8800a67242a17d106df20a1b9f763f6c2617f094c48cb025a1151ed94c649bf466590b13cd4b87e688423ac3143a62c2e1b509487c09da48bc79960ccc13133388ba88e75898a7c96e3837465256b3131c48a3827bd594efa6ac58a514c0b4a70d3536dc862c362a22b98316b45779a4497f260407ae6c5b3cf21a4e8042b8826ae3ab61b0e7279fc1a1cfdc8a2d786f16088c61d894a747143899b218aa011d4113c52a9ed6237798da44b1f2771a2067e8eb763d664eced59a563b8c17b7431958a5b235666b2003e5e39f3b108dc86587dfd5b57ed283d8b9a726fc85ab067385e5a23350340e977e82ac2c306a4dfbe95a12b0a959239c28c533e04ac023953817d9a201802ca6e94922146f9a2554d0038575ba7bc6600c472a4a54c248c2fc1d69c0b81caab086041f95a96358e9bcaad144ead50e8f9982375a30a13c5679d2bafb72912a6013d831ac1e4acff27aca46b27949d521042999f3518f79c506ab41a3b803cb3b31a8a0b06b293a45b1285f34906290f01f570394d9a6b0b475b40c579560498855fc175a14bd23ba6972f138ac6a2e4c5711fa4a213c8936c23063430b456ca3b2b05c5b3bc32f13790a02627500039ee67c3feb68c97fb7c4b8827fd8c89de3d18615488f8bac7e365755213268c31804d34c6be672a34d8045605c2c819ca684285c9d08cc49bcbadd0b3eedaac6cc854afd735512a406a7b97cba14a49e2b7ef37c2f6c54a7fef902b066cea1a2488ae66fd87c56eb2351ac3293d2330b861937fbf42225540259d1ab4a722b7a273f2490c97525949cf8c8504c751467ccbb5102d6fb4d89faad6890187c008770c2524ba0645c8c387b2925af5629e0b6ba9cb55c0c6918a90975bcf854c56c9b94e18bae3545a69449be3509c033c436279611c13ba91c10010bc71a040663c23265a8376ca1b251e05d866268761aba32851b7ef2b490449eb12c72fa1190edb4125e6c4978bb7fc65911f8c446d056a14a6283d6f75036128c0227049e807580357af805bd0713032e73016b87840edcc29bdbb20c61687f1653668544b43381517336a9d77213b5b3d11996e8dcb70872089244c73166b8955982f172c00c6129434b0587927e92fc9ddee8c33fc433ec66134b01816446249fd046c3b1c647f97df2a95b19d642c3d4dc01ff4c8c3a9734a8fb62e7c8f216a81a8af239461054fe89e6c3914cdc5a2a4e246f796d132148213c6d8f7b564ebdef20809c4d0fb109e4115be464f24d0f342dfea83b38f01444760066227cbf83bc02d2587c0a94f1d9bee3eba3e09d08252f7cd9911470b7dd2dcd6c9bbe32fcb4628a1777617f628c33539eb7365a93c9dd0d37d1f5dea544518a978af987144f5c69fc12087f44519106dc1c0f2433c2bcfbcd5eddc7aa87a01c67438c7d1505f5ca2b84bfbbda6705bfec8d9152d58b3b15be3ece14925746469439feeb88adf52883b006a67f29adb32b2dd89b77f390a2d32a488c740df692f5c5f4d199eeee1410096ed01d514ad9d38a311765b38a776ba55817ddf4230073f0165e04e7560a57c2a61f590e1cc94dfd213f39c23e35a0393e439a68d6a0fc274afb67b8f0ca26f94a45b264c824d83816c7242800f26615f1aef081d94062b7609c4078ba5b4fc5e32cc48fe84fd1de285723199bfb16a852cf1b67e20fbb64b8e0aa3fd425b8f7ed93c7b304dd7b8884ce3fd3783386a740a0c4331f941eaa32d4536f6d7cb91e9279e24c2a66189dc144d88396efe63ad3d96c1f5bf3422de40096ab8eb8e7b466ceb14356c9aca487718357bf740fa0f614c1062a6bf9e41c019dbdcc7f877eb8514be2a1cc93ea381e0262235e47d412e17cc28b248106b9f7c86a52842298868802b295f3f0581852fb99746cda24541f0c4b64a19a35aa6452b68a5d040188ba457b274f5fa20325fbe0f60ff5eb10e30eb845ab4d84aa5a2454afe6e6f9edb285e4aee9cf6301c1f36ef553b61e360b22f9c3aa597fae5ee7d6959684bef0e085ac2703f50610ef01e1ba0fadcc3118c8f1d663fb3f7e4269df8b3c36a4232dc0471dafc05993e1dd6c1176250c9849d7b237fdb7e241113ed88964c50524449f673ed29b534109b3ca4dc1be201383a787d9c6334a5447fde4d35d880094678c8e371eadf92f14e4612f1939443e29bcc777d6dc92b392ba2860f877d195201ff3ea338a3204bc70566350202b0629df31a4a4b7ba9286b4494fe01e84f0ed9e94515114dd5664e6657152094f6fc08ac90c1d586a3dc76654c311347755fb952d668adc4e4b9dbff21defc2140638fb62a19d83850b7d40e976667be16b1030c0926a362d4437ec630193b1ce010b4c07c470710b22ec1c3452944179e9a01065966aab29627e9731abc97b1b6a1874dbf89adb2cb6b5517fb047997d63f9482ee4f35ac2537fedca355ebbba7b36a4a5be1ebe3eb68f10212501545f1f339205562b15eeafc551a6616423a9903245baeeb1326fe9d6b89421210267d99ffc6f23ed5ef28c772bd177017b92f1af6d0c4db7d58e22571e05d9dd5a69136dcfc4689d0aa2bb6a1210bb0ae8806c79d892758ae0372f3ad5f1a016fef3f67f030cbe8a1a28473035c428f13dac7b4d044bd9b9c54e0fd88be9b60867e183f718913b6e9d657dc41e0c47ffd8856e143d2451fb139865790d9d2bf7db493b58f2b0ac94c1a1d2456909d3526ce10870bc63298ac5b908d2043618a9841e06d953c76d4f", + "password_file": "f82087d45d44875f2469129118714c1811028b0b2e173970fd130ae12a258a6a5cfa314a3ee3ee21b972444761a82c945b3e731f32ecdcd4bea59587acaddf4456877b601131e205b5997243b58ebfb11aaa3a512d9eb402dffd1091059b7240b0272807f804342507ede38a92a491723ababd74e8005d79f5adc1263ddf0265107c246317b40bd8e4c19336b9caee0d1f79fc2428907e5adf6c62ec188072b196bd570c5a06777c1103b3a64d3e19c16bdfa37c93a70bad7da1d1a6b4bffa4c", + "export_key": "beee088578f1b48e4729fc54e12f03898281a25dde1a4d6bcc879a5e99cb1ccf976dfc63f9ce2d4f7e839f7d29f8e1b99dc4d0df99d4a32970981ad1a98344fd", + "session_key": "4da473675189e99303ded9136c2401adbe4737c52d60468e9283c28819327a809b20ffbb21dcdf17a217a8e06b860bc8963ed31efb3d26be31a5c5578a807cb6" +} +"#; #[cfg(feature = "ecdsa")] #[cfg(feature = "ristretto255")] #[cfg(feature = "ristretto255")] diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 9708c9e..df0d17e 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -8,6 +8,7 @@ mod full_test; #[rustfmt::skip] +#[allow(dead_code)] mod full_test_vectors; pub mod mock_rng; mod parser;