diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /dom/webauthn/PWebAuthnTransaction.ipdl | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/webauthn/PWebAuthnTransaction.ipdl')
-rw-r--r-- | dom/webauthn/PWebAuthnTransaction.ipdl | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/dom/webauthn/PWebAuthnTransaction.ipdl b/dom/webauthn/PWebAuthnTransaction.ipdl new file mode 100644 index 0000000000..229fb7899d --- /dev/null +++ b/dom/webauthn/PWebAuthnTransaction.ipdl @@ -0,0 +1,157 @@ +/* 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/. */ + +/* + * IPC Transaction protocol for the WebAuthn DOM API. This IPC protocol allows + * the content process to call to the parent to access hardware for + * authentication registration and challenges. All transactions start in the + * child process, and the parent replies with a "Confirm*" message, or a + * "Cancel" message if there was an error (no hardware available, no registered + * keys, etc) or interruption (another transaction was started in another + * content process). Similarly, the content process can also request a cancel, + * either triggered explicitly by the user/script or due to UI events like + * selecting a different tab. + */ + +include protocol PBackground; + +using mozilla::dom::MaybeDiscardedBrowsingContext from "mozilla/dom/BrowsingContext.h"; + +namespace mozilla { +namespace dom { + +struct WebAuthnAuthenticatorSelection { + nsString residentKey; + nsString userVerificationRequirement; + nsString? authenticatorAttachment; +}; + +struct WebAuthnScopedCredential { + uint8_t[] id; + uint8_t transports; +}; + +struct WebAuthnExtensionAppId { + nsString appIdentifier; +}; + +struct WebAuthnExtensionCredProps { + bool credProps; +}; + +struct WebAuthnExtensionHmacSecret { + bool hmacCreateSecret; +}; + +struct WebAuthnExtensionMinPinLength { + bool minPinLength; +}; + +union WebAuthnExtension { + WebAuthnExtensionAppId; + WebAuthnExtensionCredProps; + WebAuthnExtensionHmacSecret; + WebAuthnExtensionMinPinLength; +}; + +struct WebAuthnExtensionResultAppId { + bool AppId; +}; + +struct WebAuthnExtensionResultCredProps { + bool rk; +}; + +struct WebAuthnExtensionResultHmacSecret { + bool hmacCreateSecret; +}; + +union WebAuthnExtensionResult { + WebAuthnExtensionResultAppId; + WebAuthnExtensionResultCredProps; + WebAuthnExtensionResultHmacSecret; +}; + +struct WebAuthnMakeCredentialRpInfo { + nsString Name; +}; + +struct WebAuthnMakeCredentialUserInfo { + uint8_t[] Id; + nsString Name; + nsString DisplayName; +}; + +struct CoseAlg { + long alg; +}; + +struct WebAuthnMakeCredentialInfo { + nsString Origin; + nsString RpId; + uint8_t[] Challenge; + nsCString ClientDataJSON; + uint32_t TimeoutMS; + WebAuthnScopedCredential[] ExcludeList; + WebAuthnMakeCredentialRpInfo Rp; + WebAuthnMakeCredentialUserInfo User; + CoseAlg[] coseAlgs; + WebAuthnExtension[] Extensions; + WebAuthnAuthenticatorSelection AuthenticatorSelection; + nsString attestationConveyancePreference; + uint64_t BrowsingContextId; +}; + +struct WebAuthnMakeCredentialResult { + nsCString ClientDataJSON; + uint8_t[] AttestationObject; + uint8_t[] KeyHandle; + nsString[] Transports; + WebAuthnExtensionResult[] Extensions; + nsString? AuthenticatorAttachment; +}; + +struct WebAuthnGetAssertionInfo { + nsString Origin; + nsString RpId; + uint8_t[] Challenge; + nsCString ClientDataJSON; + uint32_t TimeoutMS; + WebAuthnScopedCredential[] AllowList; + WebAuthnExtension[] Extensions; + nsString userVerificationRequirement; + bool ConditionallyMediated; + uint64_t BrowsingContextId; +}; + +struct WebAuthnGetAssertionResult { + nsCString ClientDataJSON; + uint8_t[] KeyHandle; + uint8_t[] Signature; + uint8_t[] AuthenticatorData; + WebAuthnExtensionResult[] Extensions; + uint8_t[] UserHandle; + nsString? AuthenticatorAttachment; +}; + +[ManualDealloc] +async protocol PWebAuthnTransaction { + manager PBackground; + + parent: + async RequestRegister(uint64_t aTransactionId, WebAuthnMakeCredentialInfo aTransactionInfo); + async RequestSign(uint64_t aTransactionId, WebAuthnGetAssertionInfo aTransactionInfo); + async RequestIsUVPAA() returns (bool available); + [Tainted] async RequestCancel(uint64_t aTransactionId); + async DestroyMe(); + + child: + async __delete__(); + async ConfirmRegister(uint64_t aTransactionId, WebAuthnMakeCredentialResult aResult); + async ConfirmSign(uint64_t aTransactionId, WebAuthnGetAssertionResult aResult); + async Abort(uint64_t aTransactionId, nsresult Error); +}; + +} +} |