Skip to content

Commit f66c850

Browse files
committed
Rename discoverable_credential back to resident_key
1 parent 5990e71 commit f66c850

File tree

8 files changed

+38
-41
lines changed

8 files changed

+38
-41
lines changed

libwebauthn/examples/webauthn_cable.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ use tokio::time::sleep;
1818
use tracing_subscriber::{self, EnvFilter};
1919

2020
use libwebauthn::ops::webauthn::{
21-
DiscoverableCredentialRequirement, GetAssertionRequest, MakeCredentialRequest,
22-
UserVerificationRequirement,
21+
GetAssertionRequest, MakeCredentialRequest, ResidentKeyRequirement, UserVerificationRequirement,
2322
};
2423
use libwebauthn::proto::ctap2::{
2524
Ctap2CredentialType, Ctap2PublicKeyCredentialDescriptor, Ctap2PublicKeyCredentialRpEntity,
@@ -113,7 +112,7 @@ pub async fn main() -> Result<(), Box<dyn Error>> {
113112
hash: Vec::from(challenge),
114113
relying_party: Ctap2PublicKeyCredentialRpEntity::new("example.org", "example.org"),
115114
user: Ctap2PublicKeyCredentialUserEntity::new(&user_id, "mario.rossi", "Mario Rossi"),
116-
discoverable_credential: Some(DiscoverableCredentialRequirement::Discouraged),
115+
resident_key: Some(ResidentKeyRequirement::Discouraged),
117116
user_verification: UserVerificationRequirement::Preferred,
118117
algorithms: vec![Ctap2CredentialType::default()],
119118
exclude: None,

libwebauthn/examples/webauthn_extensions_hid.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ use tokio::sync::mpsc::Receiver;
1010
use tracing_subscriber::{self, EnvFilter};
1111

1212
use libwebauthn::ops::webauthn::{
13-
CredentialProtectionExtension, CredentialProtectionPolicy, DiscoverableCredentialRequirement,
14-
GetAssertionHmacOrPrfInput, GetAssertionRequest, GetAssertionRequestExtensions,
15-
HMACGetSecretInput, MakeCredentialHmacOrPrfInput, MakeCredentialLargeBlobExtension,
16-
MakeCredentialRequest, MakeCredentialsRequestExtensions, UserVerificationRequirement,
13+
CredentialProtectionExtension, CredentialProtectionPolicy, GetAssertionHmacOrPrfInput,
14+
GetAssertionRequest, GetAssertionRequestExtensions, HMACGetSecretInput,
15+
MakeCredentialHmacOrPrfInput, MakeCredentialLargeBlobExtension, MakeCredentialRequest,
16+
MakeCredentialsRequestExtensions, ResidentKeyRequirement, UserVerificationRequirement,
1717
};
1818
use libwebauthn::pin::PinRequestReason;
1919
use libwebauthn::proto::ctap2::{
@@ -108,7 +108,7 @@ pub async fn main() -> Result<(), Box<dyn Error>> {
108108
hash: Vec::from(challenge),
109109
relying_party: Ctap2PublicKeyCredentialRpEntity::new("example.org", "example.org"),
110110
user: Ctap2PublicKeyCredentialUserEntity::new(&user_id, "mario.rossi", "Mario Rossi"),
111-
discoverable_credential: Some(DiscoverableCredentialRequirement::Required),
111+
resident_key: Some(ResidentKeyRequirement::Required),
112112
user_verification: UserVerificationRequirement::Preferred,
113113
algorithms: vec![Ctap2CredentialType::default()],
114114
exclude: None,

libwebauthn/examples/webauthn_hid.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ use tokio::sync::mpsc::Receiver;
1010
use tracing_subscriber::{self, EnvFilter};
1111

1212
use libwebauthn::ops::webauthn::{
13-
DiscoverableCredentialRequirement, GetAssertionRequest, MakeCredentialRequest,
14-
UserVerificationRequirement,
13+
GetAssertionRequest, MakeCredentialRequest, ResidentKeyRequirement, UserVerificationRequirement,
1514
};
1615
use libwebauthn::pin::PinRequestReason;
1716
use libwebauthn::proto::ctap2::{
@@ -92,7 +91,7 @@ pub async fn main() -> Result<(), Box<dyn Error>> {
9291
hash: Vec::from(challenge),
9392
relying_party: Ctap2PublicKeyCredentialRpEntity::new("example.org", "example.org"),
9493
user: Ctap2PublicKeyCredentialUserEntity::new(&user_id, "mario.rossi", "Mario Rossi"),
95-
discoverable_credential: Some(DiscoverableCredentialRequirement::Discouraged),
94+
resident_key: Some(ResidentKeyRequirement::Discouraged),
9695
user_verification: UserVerificationRequirement::Preferred,
9796
algorithms: vec![Ctap2CredentialType::default()],
9897
exclude: None,

libwebauthn/examples/webauthn_preflight_hid.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ use tokio::sync::mpsc::Receiver;
1212
use tracing_subscriber::{self, EnvFilter};
1313

1414
use libwebauthn::ops::webauthn::{
15-
DiscoverableCredentialRequirement, GetAssertionRequest, GetAssertionResponse,
16-
MakeCredentialRequest, UserVerificationRequirement,
15+
GetAssertionRequest, GetAssertionResponse, MakeCredentialRequest, ResidentKeyRequirement,
16+
UserVerificationRequirement,
1717
};
1818
use libwebauthn::pin::PinRequestReason;
1919
use libwebauthn::proto::ctap2::{
@@ -165,7 +165,7 @@ async fn make_credential_call(
165165
hash: Vec::from(challenge),
166166
relying_party: Ctap2PublicKeyCredentialRpEntity::new("example.org", "example.org"),
167167
user: Ctap2PublicKeyCredentialUserEntity::new(&user_id, "mario.rossi", "Mario Rossi"),
168-
discoverable_credential: Some(DiscoverableCredentialRequirement::Discouraged),
168+
resident_key: Some(ResidentKeyRequirement::Discouraged),
169169
user_verification: UserVerificationRequirement::Preferred,
170170
algorithms: vec![Ctap2CredentialType::default()],
171171
exclude: exclude_list,

libwebauthn/examples/webauthn_prf_hid.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ use tokio::sync::mpsc::Receiver;
1212
use tracing_subscriber::{self, EnvFilter};
1313

1414
use libwebauthn::ops::webauthn::{
15-
DiscoverableCredentialRequirement, GetAssertionHmacOrPrfInput, GetAssertionRequest,
16-
GetAssertionRequestExtensions, MakeCredentialHmacOrPrfInput, MakeCredentialRequest,
17-
MakeCredentialsRequestExtensions, PRFValue, UserVerificationRequirement,
15+
GetAssertionHmacOrPrfInput, GetAssertionRequest, GetAssertionRequestExtensions,
16+
MakeCredentialHmacOrPrfInput, MakeCredentialRequest, MakeCredentialsRequestExtensions,
17+
PRFValue, ResidentKeyRequirement, UserVerificationRequirement,
1818
};
1919
use libwebauthn::pin::PinRequestReason;
2020
use libwebauthn::proto::ctap2::{
@@ -102,7 +102,7 @@ pub async fn main() -> Result<(), Box<dyn Error>> {
102102
hash: Vec::from(challenge),
103103
relying_party: Ctap2PublicKeyCredentialRpEntity::new("example.org", "example.org"),
104104
user: Ctap2PublicKeyCredentialUserEntity::new(&user_id, "mario.rossi", "Mario Rossi"),
105-
discoverable_credential: Some(DiscoverableCredentialRequirement::Required),
105+
resident_key: Some(ResidentKeyRequirement::Required),
106106
user_verification: UserVerificationRequirement::Preferred,
107107
algorithms: vec![Ctap2CredentialType::default()],
108108
exclude: None,

libwebauthn/src/ops/webauthn.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@ pub use get_assertion::{
1212
};
1313
pub use make_credential::{
1414
CredentialPropsExtension, CredentialProtectionExtension, CredentialProtectionPolicy,
15-
DiscoverableCredentialRequirement, MakeCredentialHmacOrPrfInput,
16-
MakeCredentialLargeBlobExtension, MakeCredentialLargeBlobExtensionOutput,
17-
MakeCredentialPrfOutput, MakeCredentialRequest, MakeCredentialResponse,
18-
MakeCredentialsRequestExtensions, MakeCredentialsResponseExtensions,
19-
MakeCredentialsResponseUnsignedExtensions,
15+
MakeCredentialHmacOrPrfInput, MakeCredentialLargeBlobExtension,
16+
MakeCredentialLargeBlobExtensionOutput, MakeCredentialPrfOutput, MakeCredentialRequest,
17+
MakeCredentialResponse, MakeCredentialsRequestExtensions, MakeCredentialsResponseExtensions,
18+
MakeCredentialsResponseUnsignedExtensions, ResidentKeyRequirement,
2019
};
2120

2221
#[derive(Debug, Clone, Copy)]
@@ -51,9 +50,9 @@ pub trait DowngradableRequest<T> {
5150

5251
#[cfg(test)]
5352
mod tests {
53+
use crate::ops::webauthn::make_credential::ResidentKeyRequirement;
5454
use crate::ops::webauthn::{
55-
DiscoverableCredentialRequirement, DowngradableRequest, MakeCredentialRequest,
56-
UserVerificationRequirement,
55+
DowngradableRequest, MakeCredentialRequest, UserVerificationRequirement,
5756
};
5857
use crate::proto::ctap2::{
5958
Ctap2COSEAlgorithmIdentifier, Ctap2CredentialType, Ctap2PublicKeyCredentialType,
@@ -63,15 +62,15 @@ mod tests {
6362
fn ctap2_make_credential_downgradable() {
6463
let mut request = MakeCredentialRequest::dummy();
6564
request.algorithms = vec![Ctap2CredentialType::default()];
66-
request.discoverable_credential = Some(DiscoverableCredentialRequirement::Discouraged);
65+
request.resident_key = Some(ResidentKeyRequirement::Discouraged);
6766
assert!(request.is_downgradable());
6867
}
6968

7069
#[test]
7170
fn ctap2_make_credential_downgradable_unsupported_rk() {
7271
let mut request = MakeCredentialRequest::dummy();
7372
request.algorithms = vec![Ctap2CredentialType::default()];
74-
request.discoverable_credential = Some(DiscoverableCredentialRequirement::Required);
73+
request.resident_key = Some(ResidentKeyRequirement::Required);
7574
assert!(!request.is_downgradable());
7675
}
7776

libwebauthn/src/ops/webauthn/make_credential.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,11 @@ impl MakeCredentialsResponseUnsignedExtensions {
9898
// https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#op-makecred-step-rk
9999
// if the "rk" option is false: the authenticator MUST create a non-discoverable credential.
100100
// Note: This step is a change from CTAP2.0 where if the "rk" option is false the authenticator could optionally create a discoverable credential.
101-
match request.discoverable_credential {
102-
Some(DiscoverableCredentialRequirement::Discouraged) | None => {
101+
match request.resident_key {
102+
Some(ResidentKeyRequirement::Discouraged) | None => {
103103
Some(CredentialPropsExtension { rk: Some(false) })
104104
}
105-
Some(DiscoverableCredentialRequirement::Preferred) => {
105+
Some(ResidentKeyRequirement::Preferred) => {
106106
if info.map(|i| i.option_enabled("rk")).unwrap_or_default() {
107107
Some(CredentialPropsExtension { rk: Some(true) })
108108
} else {
@@ -111,7 +111,7 @@ impl MakeCredentialsResponseUnsignedExtensions {
111111
Some(CredentialPropsExtension { rk: Some(false) })
112112
}
113113
}
114-
Some(DiscoverableCredentialRequirement::Required) => {
114+
Some(ResidentKeyRequirement::Required) => {
115115
Some(CredentialPropsExtension { rk: Some(true) })
116116
}
117117
}
@@ -150,7 +150,7 @@ impl MakeCredentialsResponseUnsignedExtensions {
150150
}
151151

152152
#[derive(Debug, Clone, Copy)]
153-
pub enum DiscoverableCredentialRequirement {
153+
pub enum ResidentKeyRequirement {
154154
Required,
155155
Preferred,
156156
Discouraged,
@@ -164,7 +164,7 @@ pub struct MakeCredentialRequest {
164164
pub relying_party: Ctap2PublicKeyCredentialRpEntity,
165165
/// userEntity
166166
pub user: Ctap2PublicKeyCredentialUserEntity,
167-
pub discoverable_credential: Option<DiscoverableCredentialRequirement>,
167+
pub resident_key: Option<ResidentKeyRequirement>,
168168
pub user_verification: UserVerificationRequirement,
169169
/// credTypesAndPubKeyAlgs
170170
pub algorithms: Vec<Ctap2CredentialType>,
@@ -291,7 +291,7 @@ impl MakeCredentialRequest {
291291
exclude: None,
292292
extensions: None,
293293
origin: "example.org".to_owned(),
294-
discoverable_credential: None,
294+
resident_key: None,
295295
user_verification: UserVerificationRequirement::Discouraged,
296296
timeout: Duration::from_secs(10),
297297
}
@@ -316,8 +316,8 @@ impl DowngradableRequest<RegisterRequest> for MakeCredentialRequest {
316316

317317
// Options must not include "rk" set to true.
318318
if matches!(
319-
self.discoverable_credential,
320-
Some(DiscoverableCredentialRequirement::Required)
319+
self.resident_key,
320+
Some(ResidentKeyRequirement::Required)
321321
) {
322322
debug!("Not downgradable: request requires resident key");
323323
return false;

libwebauthn/src/proto/ctap2/model/make_credential.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use super::{
77
use crate::{
88
fido::AuthenticatorData,
99
ops::webauthn::{
10-
CredentialProtectionPolicy, DiscoverableCredentialRequirement,
10+
CredentialProtectionPolicy, ResidentKeyRequirement,
1111
MakeCredentialHmacOrPrfInput, MakeCredentialLargeBlobExtension, MakeCredentialRequest,
1212
MakeCredentialResponse, MakeCredentialsRequestExtensions,
1313
MakeCredentialsResponseUnsignedExtensions,
@@ -134,9 +134,9 @@ impl Ctap2MakeCredentialRequest {
134134
};
135135

136136
// Discoverable credential / resident key requirements
137-
let require_resident_key = match req.discoverable_credential {
138-
Some(DiscoverableCredentialRequirement::Discouraged) => Some(false),
139-
Some(DiscoverableCredentialRequirement::Preferred) => {
137+
let require_resident_key = match req.resident_key {
138+
Some(ResidentKeyRequirement::Discouraged) => Some(false),
139+
Some(ResidentKeyRequirement::Preferred) => {
140140
if info.option_enabled("rk") {
141141
Some(true)
142142
} else {
@@ -147,7 +147,7 @@ impl Ctap2MakeCredentialRequest {
147147
None
148148
}
149149
}
150-
Some(DiscoverableCredentialRequirement::Required) => {
150+
Some(ResidentKeyRequirement::Required) => {
151151
if !info.option_enabled("rk") {
152152
warn!("This request will potentially fail. Discoverable credential required, but device does not support it.");
153153
}

0 commit comments

Comments
 (0)