/* 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_WebAuthnUtil_h #define mozilla_dom_WebAuthnUtil_h #include "ipc/IPCMessageUtils.h" #include "mozilla/dom/WebAuthenticationBinding.h" namespace mozilla::dom { static const size_t kWebAuthnMaxAllowedCredentials = 20; class WindowGlobalParent; bool IsValidAppId(const nsCOMPtr& aPrincipal, const nsCString& aAppId); bool IsWebAuthnAllowedInDocument(const nsCOMPtr& aDoc); bool IsWebAuthnAllowedInContext(WindowGlobalParent* aContext); bool IsWebAuthnAllowedForTransportSecurityInfo( nsITransportSecurityInfo* aSecurityInfo); nsresult DefaultRpId(const nsCOMPtr& aPrincipal, /* out */ nsACString& aRpId); bool IsValidRpId(const nsCOMPtr& aPrincipal, const nsACString& aRpId); nsresult GetWebAuthnClientDataOrigin(nsIPrincipal* aPrincipal, /* out */ nsACString& aOrigin); nsresult HashCString(const nsACString& aIn, /* out */ nsTArray& aOut); uint32_t WebAuthnTimeout(const Optional& aTimeout); nsresult SerializeWebAuthnCreationOptions( JSContext* aCx, const nsString& aRpId, const PublicKeyCredentialCreationOptions& aOptions, /* out */ nsString& aOut); nsresult SerializeWebAuthnRequestOptions( JSContext* aCx, const nsString& aRpId, const PublicKeyCredentialRequestOptions& aOptions, /* out */ nsString& aOut); } // namespace mozilla::dom #endif // mozilla_dom_WebAuthnUtil_h