summaryrefslogtreecommitdiff
path: root/chromium/device/fido/pin.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/device/fido/pin.h')
-rw-r--r--chromium/device/fido/pin.h37
1 files changed, 35 insertions, 2 deletions
diff --git a/chromium/device/fido/pin.h b/chromium/device/fido/pin.h
index da7a00faa1d..88d16f09205 100644
--- a/chromium/device/fido/pin.h
+++ b/chromium/device/fido/pin.h
@@ -24,6 +24,16 @@
namespace device {
namespace pin {
+// Permission list flags. See
+// https://drafts.fidoalliance.org/fido-2/stable-links-to-latest/fido-client-to-authenticator-protocol.html#permissions
+enum class Permissions : uint8_t {
+ kMakeCredential = 0x01,
+ kGetAssertion = 0x02,
+ kCredentialManagement = 0x04,
+ kBioEnrollment = 0x08,
+ kPlatformConfiguration = 0x10,
+};
+
// kProtocolVersion is the version of the PIN protocol that this code
// implements.
constexpr int kProtocolVersion = 1;
@@ -166,19 +176,42 @@ class PinTokenRequest : public TokenRequest {
friend std::pair<CtapRequestCommand, base::Optional<cbor::Value>>
AsCTAPRequestValuePair(const PinTokenRequest&);
- private:
+ protected:
uint8_t pin_hash_[16];
};
+class PinTokenWithPermissionsRequest : public PinTokenRequest {
+ public:
+ PinTokenWithPermissionsRequest(const std::string& pin,
+ const KeyAgreementResponse& peer_key,
+ const uint8_t permissions,
+ const base::Optional<std::string> rp_id);
+ PinTokenWithPermissionsRequest(PinTokenWithPermissionsRequest&&);
+ PinTokenWithPermissionsRequest(const PinTokenWithPermissionsRequest&) =
+ delete;
+ ~PinTokenWithPermissionsRequest() override;
+
+ friend std::pair<CtapRequestCommand, base::Optional<cbor::Value>>
+ AsCTAPRequestValuePair(const PinTokenWithPermissionsRequest&);
+
+ private:
+ uint8_t permissions_;
+ base::Optional<std::string> rp_id_;
+};
+
class UvTokenRequest : public TokenRequest {
public:
- explicit UvTokenRequest(const KeyAgreementResponse& peer_key);
+ UvTokenRequest(const KeyAgreementResponse& peer_key,
+ base::Optional<std::string> rp_id);
UvTokenRequest(UvTokenRequest&&);
UvTokenRequest(const UvTokenRequest&) = delete;
virtual ~UvTokenRequest();
friend std::pair<CtapRequestCommand, base::Optional<cbor::Value>>
AsCTAPRequestValuePair(const UvTokenRequest&);
+
+ private:
+ base::Optional<std::string> rp_id_;
};
// TokenResponse represents the response to a pin-token request. In order to