Top Inners Fields Constructors Methods
org.bouncycastle.mls.protocol

public Class Group

extends Object
Class Inheritance
Imports
java.io.IOException, java.security.SecureRandom, java.util.ArrayList, .Arrays, .HashMap, .HashSet, .List, .Map, .Set, org.bouncycastle.crypto.AsymmetricCipherKeyPair, org.bouncycastle.mls.GroupKeySet, .KeyScheduleEpoch, .TranscriptHash, org.bouncycastle.mls.TreeKEM.LeafIndex, .LeafNode, .LeafNodeSource, .NodeIndex, .TreeKEMPrivateKey, .TreeKEMPublicKey, org.bouncycastle.mls.codec.AuthenticatedContent, .Capabilities, .Commit, .ContentType, .Credential, .Extension, .ExtensionType, .ExternalSender, .FramedContent, .GroupContext, .GroupInfo, .GroupSecrets, .KeyPackage, .MLSInputStream, .MLSMessage, .MLSOutputStream, .PSKType, .PreSharedKeyID, .PrivateMessage, .Proposal, .ProposalOrRef, .ProposalType, .ProtocolVersion, .PublicMessage, .ResumptionPSKUsage, .Sender, .SenderType, .UpdatePath, .Welcome, .WireFormat, org.bouncycastle.mls.crypto.MlsCipherSuite, .Secret

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class
public static class
public class
public class
pack-priv class
public static class
public static class
public class
public class

Field Summary

Modifier and TypeField and Description
private CachedUpdate
private long
private ArrayList<Extension>
public static final short
pack-priv Map<Secret, byte[]>
private byte[]
private byte[]
private LeafIndex
private GroupKeySet
private KeyScheduleEpoch
public static final short
private ArrayList<CachedProposal>
public static final short
public static final short
private Map<Group.EpochRef, byte[]>
private MlsCipherSuite
private TranscriptHash
private TreeKEMPublicKey
private TreeKEMPrivateKey

Constructor Summary

AccessConstructor and Description
public
public
public
Group(byte[] groupID, MlsCipherSuite suite, AsymmetricCipherKeyPair encSk, byte[] sigSk, LeafNode leafNode, List<Extension> extensions)

public
Group(byte[]
HPKE private key
initSk
,
AsymmetricCipherKeyPair
HPKE private key for leaf node
leafSk
,
byte[]
signature private key
sigSk
,
KeyPackage
key package
keyPackage
,
Welcome
welcome
welcome
,
TreeKEMPublicKey
public kem tree (optional)
treeIn
,
Map<Secret, byte[]>
map of external psks
externalPsks
,
Map<Group.EpochRef, byte[]>
map of resumptions psks
resumptionPsks
)

Method Summary

Modifier and TypeMethod and Description
public MLSMessage
add(KeyPackage keyPackage, Group.MessageOptions msgOptions)

private Proposal
addProposal(KeyPackage keyPackage)

private Group.JoinersWithPSKS
private List<LeafIndex>
private void
private List<KeyScheduleEpoch.PSKWithSecret>
private void
private void
private void
public Group.GroupWithMessage
commit(Secret leafSecret, Group.CommitOptions commitOptions, Group.MessageOptions msgOptions, Group.CommitParameters params)

public Group.GroupWithMessage
createBranch(byte[] groupID, AsymmetricCipherKeyPair encryptionKeyPair, AsymmetricCipherKeyPair signatureKeyPair, LeafNode leafNode, List<Extension> extList, List<KeyPackage> keyPackages, byte[] leafSecret, Group.CommitOptions commitOptions)

private boolean
public static Group.GroupWithMessage
externalJoin(Secret leafSecret, AsymmetricCipherKeyPair sigSk, KeyPackage keyPackage, GroupInfo groupInfo, TreeKEMPublicKey tree, Group.MessageOptions msgOptions, LeafIndex removePrior, Map<Secret, byte[]> psks)

public long
public byte[]
public ArrayList<Extension>
private GroupContext
public byte[]
public MLSMessage
getGroupInfo(boolean inlineTree)

public LeafIndex
public KeyScheduleEpoch
public MlsCipherSuite
public TreeKEMPublicKey
public MLSMessage
public Group
handle(byte[] mlsMessageBytes, Group cachedGroup)

public Group
handle(byte[] mlsMessageBytes, Group cachedGroup, Group.CommitParameters expectedParams)

public Group
handle(AuthenticatedContent auth, Group cachedGroup, Group.CommitParameters expectedParams)

public Group
public Group.Tombstone
private TreeKEMPublicKey
importTree(byte[] treeHash, TreeKEMPublicKey external, List<Extension> extensions)

private Group.CommitParameters
inferCommitType(LeafIndex sender, List<CachedProposal> proposals, Group.CommitParameters expectedParams)

public void
insertExternalPsk(Secret pskID, byte[] pskSecret)

private LeafIndex
private List<CachedProposal>
public static MLSMessage
newMemberAdd(byte[] groupID, long epoch, KeyPackage newMember, AsymmetricCipherKeyPair sigSk)

private boolean
public MLSMessage
preSharedKey(byte[] externalPskId, Group.MessageOptions msgOptions)

public MLSMessage
preSharedKey(byte[] groupID, long epoch, Group.MessageOptions msgOptions)

private Proposal
public MLSMessage
protect(byte[] applicationData, byte[] pt, int paddingSize)

private MLSMessage
protect(AuthenticatedContent contentAuth, int paddingSize)

public MLSMessage
reinit(byte[] groupID, ProtocolVersion version, MlsCipherSuite suite, List<Extension> extList, Group.MessageOptions msgOptions)

public Group.TombstoneWithMessage
reinitCommit(byte[] leafSecret, Group.CommitOptions commitOptions, Group.MessageOptions messageOptions)

public MLSMessage
remove(LeafIndex removeIndex, Group.MessageOptions msgOptions)

private Proposal
private List<KeyScheduleEpoch.PSKWithSecret>
private AuthenticatedContent
sign(Sender sender, Commit innerContent, byte[] authenticatedData, boolean encrypt)

private AuthenticatedContent
sign(Sender sender, Proposal innerContent, byte[] authenticatedData, boolean encrypt)

private AuthenticatedContent
sign(Sender sender, byte[] innerContent, byte[] authenticatedData, boolean encrypt)

private Group
public byte[][]
private AuthenticatedContent
public MLSMessage
update(Proposal update, Group.MessageOptions msgOptions)

private void
updateEpochSecrets(byte[] commitSecret, List<KeyScheduleEpoch.PSKWithSecret> psks, byte[] forceInitSecret)

public Proposal
private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
validateLeafNode(LeafNode leafNode, LeafNodeSource requiredSource, LeafIndex index)

private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait