use builder pattern to expose all possible options

This commit is contained in:
2020-03-30 00:00:55 +02:00
parent ec932913e1
commit d93b86b9f0
8 changed files with 364 additions and 300 deletions

View File

@@ -700,15 +700,16 @@ impl PublicKeyCredentialDescriptor {
pub struct AuthenticatorOptions {
pub rk: bool,
pub uv: bool,
pub up: bool,
}
impl AuthenticatorOptions {
pub fn encoded(&self) -> bool {
self.rk || self.uv
self.rk || self.uv || self.up
}
pub fn encode<W: WriteBytesExt>(&self, encoder: &mut Encoder<W>) -> FidoResult<()> {
let length = (self.rk as usize) + (self.uv as usize);
let length = (self.rk as usize) + (self.uv as usize) + (self.up as usize);
encoder.object(length)?;
if self.rk {
encoder.text("rk")?;
@@ -718,6 +719,10 @@ impl AuthenticatorOptions {
encoder.text("uv")?;
encoder.bool(true)?;
}
if self.up {
encoder.text("up")?;
encoder.bool(true)?;
}
Ok(())
}
}