diff options
Diffstat (limited to 'chromium/device/fido/pin.h')
-rw-r--r-- | chromium/device/fido/pin.h | 37 |
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 |