Updating to version 08 (#271)

This commit is contained in:
Kevin Lewi
2022-04-17 16:23:31 -07:00
committed by GitHub
parent 384207acbb
commit 3fe6bbb80f
13 changed files with 609 additions and 543 deletions
+21 -23
View File
@@ -93,7 +93,7 @@ pub struct ServerSetup<
#[derive_where(Clone, ZeroizeOnDrop)]
#[derive_where(
Debug, Eq, Hash, PartialEq;
voprf::NonVerifiableClient<CS::OprfCs>,
voprf::OprfClient<CS::OprfCs>,
voprf::BlindedElement<CS::OprfCs>,
)]
pub struct ClientRegistration<CS: CipherSuite>
@@ -105,7 +105,7 @@ where
<<OprfHash<CS> as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<OprfHash<CS> as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
{
pub(crate) oprf_client: voprf::NonVerifiableClient<CS::OprfCs>,
pub(crate) oprf_client: voprf::OprfClient<CS::OprfCs>,
pub(crate) blinded_element: voprf::BlindedElement<CS::OprfCs>,
}
@@ -146,7 +146,7 @@ where
#[derive_where(Clone, ZeroizeOnDrop)]
#[derive_where(
Debug, Eq, Hash, PartialEq;
voprf::NonVerifiableClient<CS::OprfCs>,
voprf::OprfClient<CS::OprfCs>,
<CS::KeyExchange as KeyExchange<OprfHash<CS>, CS::KeGroup>>::KE1State,
CredentialRequest<CS>,
)]
@@ -159,7 +159,7 @@ where
<<OprfHash<CS> as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<OprfHash<CS> as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
{
pub(crate) oprf_client: voprf::NonVerifiableClient<CS::OprfCs>,
pub(crate) oprf_client: voprf::OprfClient<CS::OprfCs>,
pub(crate) ke1_state: <CS::KeyExchange as KeyExchange<OprfHash<CS>, CS::KeGroup>>::KE1State,
pub(crate) credential_request: CredentialRequest<CS>,
}
@@ -317,7 +317,7 @@ where
check_slice_size(input, client_len + element_len, "client_registration")?;
Ok(Self {
oprf_client: voprf::NonVerifiableClient::deserialize(&checked_slice[..client_len])?,
oprf_client: voprf::OprfClient::deserialize(&checked_slice[..client_len])?,
blinded_element: voprf::BlindedElement::deserialize(&checked_slice[client_len..])?,
})
}
@@ -452,8 +452,8 @@ where
let oprf_key =
oprf_key_from_seed::<CS::OprfCs>(&server_setup.oprf_seed, credential_identifier)?;
let server = voprf::NonVerifiableServer::new_with_key(&oprf_key)?;
let evaluation_element = server.evaluate(&message.blinded_element, None)?;
let server = voprf::OprfServer::new_with_key(&oprf_key)?;
let evaluation_element = server.evaluate(&message.blinded_element);
Ok(ServerRegistrationStartResult {
message: RegistrationResponse {
@@ -526,7 +526,7 @@ where
&checked_slice[client_len + request_len..],
)?;
Ok(Self {
oprf_client: voprf::NonVerifiableClient::deserialize(&checked_slice[..client_len])?,
oprf_client: voprf::OprfClient::deserialize(&checked_slice[..client_len])?,
credential_request: CredentialRequest::deserialize(
&checked_slice[client_len..client_len + request_len],
)?,
@@ -758,11 +758,9 @@ where
let oprf_key =
oprf_key_from_seed::<CS::OprfCs>(&server_setup.oprf_seed, credential_identifier)
.map_err(ProtocolError::into_custom)?;
let server = voprf::NonVerifiableServer::new_with_key(&oprf_key)
.map_err(|e| ProtocolError::into_custom(e.into()))?;
let evaluation_element = server
.evaluate(&credential_request.blinded_element, None)
let server = voprf::OprfServer::new_with_key(&oprf_key)
.map_err(|e| ProtocolError::into_custom(e.into()))?;
let evaluation_element = server.evaluate(&credential_request.blinded_element);
let beta = OprfGroup::<CS>::serialize_elem(evaluation_element.value());
let credential_response_component =
@@ -1094,7 +1092,7 @@ where
#[allow(clippy::type_complexity)]
fn get_password_derived_key<CS: CipherSuite>(
input: &[u8],
oprf_client: voprf::NonVerifiableClient<CS::OprfCs>,
oprf_client: voprf::OprfClient<CS::OprfCs>,
evaluation_element: voprf::EvaluationElement<CS::OprfCs>,
ksf: Option<&CS::Ksf>,
) -> Result<(Output<OprfHash<CS>>, Hkdf<OprfHash<CS>>), ProtocolError>
@@ -1106,7 +1104,7 @@ where
<<OprfHash<CS> as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<OprfHash<CS> as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
{
let oprf_output = oprf_client.finalize(input, &evaluation_element, None)?;
let oprf_output = oprf_client.finalize(input, &evaluation_element)?;
let hardened_output = if let Some(ksf) = ksf {
ksf.hash(oprf_output.clone())
@@ -1141,12 +1139,12 @@ where
.ok()
})
.ok_or(InternalError::HkdfError)?;
Ok(CS::Group::serialize_scalar(
CS::Group::hash_to_scalar::<CS>(
&[ikm.as_slice()],
&GenericArray::from(*STR_OPAQUE_DERIVE_KEY_PAIR),
)?,
))
Ok(CS::Group::serialize_scalar(voprf::derive_key::<CS>(
ikm.as_slice(),
&GenericArray::from(*STR_OPAQUE_DERIVE_KEY_PAIR),
voprf::Mode::Oprf,
)?))
}
#[cfg_attr(
@@ -1310,7 +1308,7 @@ pub(crate) fn bytestrings_from_identifiers<KG: KeGroup>(
fn blind<CS: CipherSuite, R: RngCore + CryptoRng>(
rng: &mut R,
password: &[u8],
) -> Result<voprf::NonVerifiableClientBlindResult<CS::OprfCs>, voprf::Error>
) -> Result<voprf::OprfClientBlindResult<CS::OprfCs>, voprf::Error>
where
<OprfHash<CS> as OutputSizeUser>::OutputSize:
IsLess<U256> + IsLessOrEqual<<OprfHash<CS> as BlockSizeUser>::BlockSize>,
@@ -1320,7 +1318,7 @@ where
Le<<<OprfHash<CS> as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
{
#[cfg(not(test))]
let result = voprf::NonVerifiableClient::blind(password, rng)?;
let result = voprf::OprfClient::blind(password, rng)?;
#[cfg(test)]
let result = {
@@ -1331,7 +1329,7 @@ where
break scalar;
}
};
voprf::NonVerifiableClient::deterministic_blind_unchecked(password, blind)?
voprf::OprfClient::deterministic_blind_unchecked(password, blind)?
};
Ok(result)