mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-01-27 15:55:16 +00:00
c3180f09e1
Summary: Add support for PublicKeyCredentialRequestOptions.userVerification. For now this basically means that we'll abort the operation with NotAllowed, as we don't support user verification yet. Pass PublicKeyCredentialDescriptor.transports through to the token manager implementations. The softoken will ignore those and pretend to support all transports defined by the spec. The USB HID token will check for the "usb" transport and either ignore credentials accordingly, or abort the operation. Note: The `UserVerificationRequirement` in WebIDL is defined at https://w3c.github.io/webauthn/#assertion-options Reviewers: jcj, smaug Reviewed By: jcj, smaug Bug #: 1406467 Differential Revision: https://phabricator.services.mozilla.com/D338 --HG-- extra : amend_source : 314cadb3bc40bbbee2a414bc5f13caed55f9d720
70 lines
2.1 KiB
C++
70 lines
2.1 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef mozilla_dom_U2FSoftTokenManager_h
|
|
#define mozilla_dom_U2FSoftTokenManager_h
|
|
|
|
#include "mozilla/dom/U2FTokenTransport.h"
|
|
#include "ScopedNSSTypes.h"
|
|
#include "nsNSSShutDown.h"
|
|
|
|
/*
|
|
* U2FSoftTokenManager is a software implementation of a secure token manager
|
|
* for the U2F and WebAuthn APIs.
|
|
*/
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
class U2FSoftTokenManager final : public U2FTokenTransport,
|
|
public nsNSSShutDownObject
|
|
{
|
|
public:
|
|
explicit U2FSoftTokenManager(uint32_t aCounter);
|
|
|
|
virtual RefPtr<U2FRegisterPromise>
|
|
Register(const nsTArray<WebAuthnScopedCredential>& aCredentials,
|
|
const WebAuthnAuthenticatorSelection &aAuthenticatorSelection,
|
|
const nsTArray<uint8_t>& aApplication,
|
|
const nsTArray<uint8_t>& aChallenge,
|
|
uint32_t aTimeoutMS) override;
|
|
|
|
virtual RefPtr<U2FSignPromise>
|
|
Sign(const nsTArray<WebAuthnScopedCredential>& aCredentials,
|
|
const nsTArray<uint8_t>& aApplication,
|
|
const nsTArray<uint8_t>& aChallenge,
|
|
bool aRequireUserVerification,
|
|
uint32_t aTimeoutMS) override;
|
|
|
|
virtual void Cancel() override;
|
|
|
|
// For nsNSSShutDownObject
|
|
virtual void virtualDestroyNSSReference() override;
|
|
void destructorSafeDestroyNSSReference();
|
|
|
|
private:
|
|
~U2FSoftTokenManager();
|
|
nsresult Init();
|
|
|
|
nsresult IsRegistered(const nsTArray<uint8_t>& aKeyHandle,
|
|
const nsTArray<uint8_t>& aAppParam,
|
|
bool& aResult);
|
|
|
|
bool mInitialized;
|
|
mozilla::UniquePK11SymKey mWrappingKey;
|
|
|
|
static const nsCString mSecretNickname;
|
|
|
|
nsresult GetOrCreateWrappingKey(const mozilla::UniquePK11SlotInfo& aSlot,
|
|
const nsNSSShutDownPreventionLock&);
|
|
uint32_t mCounter;
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_dom_U2FSoftTokenManager_h
|