Files
tubestation/dom/mls/PMLSTransaction.ipdl
Benjamin Beurdouche 4e1e4fe2c9 Bug 1900537 - Part 3: Web API for MLS. r=webidl,ipc-reviewers,smaug,nika
This patch contains an experimental Web API for the Messaging Layer Security (RFC 9420) protocol.
The API allows to securely generate cryptographic material and build large dynamic groups with state-of-the-art security.

The state (both public and secret) is stored in the profile and isolated by origin within dedicated databases.
No secret can be exfiltrated through the API, and privacy risks are minimized due to the selected isolation.

Differential Revision: https://phabricator.services.mozilla.com/D210568
2024-12-18 14:04:20 +00:00

46 lines
2.9 KiB
Plaintext

/* 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/. */
include protocol PBackground;
using struct mozilla::security::mls::GkGroupIdEpoch from "mozilla/dom/MLSTransactionMessage.h";
using struct mozilla::security::mls::GkMlsCommitOutput from "mozilla/dom/MLSTransactionMessage.h";
using struct mozilla::security::mls::GkGroupMembers from "mozilla/dom/MLSTransactionMessage.h";
using struct mozilla::security::mls::GkExporterOutput from "mozilla/dom/MLSTransactionMessage.h";
using struct mozilla::security::mls::GkReceived from "mozilla/dom/MLSTransactionMessage.h";
namespace mozilla {
namespace dom {
/* This type exists because we cannot write uint8_t[]? */
struct RawBytes {
uint8_t[] data;
};
[ChildProc=anydom]
async protocol PMLSTransaction
{
parent:
async RequestStateDelete() returns (bool result);
async RequestGroupStateDelete(uint8_t[] groupIdentifier, uint8_t[] identifier) returns (GkGroupIdEpoch? result);
async RequestGenerateIdentityKeypair() returns (RawBytes? result);
async RequestGenerateCredentialBasic(uint8_t[] credName) returns (RawBytes? result);
async RequestGenerateKeyPackage(uint8_t[] identity, uint8_t[] credential) returns (RawBytes? result);
async RequestGroupCreate(uint8_t[] identifier, uint8_t[] credential, uint8_t[] inOptGroupIdentifier) returns (GkGroupIdEpoch? result);
async RequestGroupJoin(uint8_t[] identifier, uint8_t[] welcome) returns (GkGroupIdEpoch? result);
async RequestGroupAdd(uint8_t[] groupIdentifier, uint8_t[] identifier, uint8_t[] keyPackage) returns (GkMlsCommitOutput? result);
async RequestGroupProposeAdd(uint8_t[] groupIdentifier, uint8_t[] identifier, uint8_t[] keyPackage) returns (RawBytes? result);
async RequestGroupRemove(uint8_t[] groupIdentifier, uint8_t[] identifier, uint8_t[] remIdentifier) returns (GkMlsCommitOutput? result);
async RequestGroupProposeRemove(uint8_t[] groupIdentifier, uint8_t[] identifier, uint8_t[] remIdentifier) returns (RawBytes? result);
async RequestGroupClose(uint8_t[] groupIdentifier, uint8_t[] identifier) returns (GkMlsCommitOutput? result);
async RequestGroupDetails(uint8_t[] groupIdentifier, uint8_t[] identifier) returns (GkGroupMembers? result);
async RequestReceive(uint8_t[] identifier, uint8_t[] message) returns (GkReceived result);
async RequestApplyPendingCommit(uint8_t[] groupIdentifier, uint8_t[] identifier) returns (GkReceived result);
async RequestSend(uint8_t[] groupIdentifier, uint8_t[] identifier, uint8_t[] message) returns (RawBytes? result);
async RequestExportSecret(uint8_t[] groupIdentifier, uint8_t[] identifier, uint8_t[] label, uint8_t[] content, uint64_t len) returns (GkExporterOutput? result);
async RequestGetGroupIdentifier(uint8_t[] message) returns (RawBytes? result);
};
} // namespace dom
} // namespace mozilla