corda / net.corda.core.crypto / CompositeKey

# CompositeKey

`sealed class CompositeKey`

A tree data structure that enables the representation of composite public keys.

In the simplest case it may just contain a single node encapsulating a PublicKey – a Leaf.

For more complex scenarios, such as "Both Alice and Bob need to sign to consume a state S", we can represent the requirement by creating a tree with a root Node, and Alice and Bob as children – Leafs. The root node would specify weights for each of its children and a threshold – the minimum total weight required (e.g. the minimum number of child signatures required) to satisfy the tree signature requirement.

Using these constructs we can express e.g. 1 of N (OR) or N of N (AND) signature requirements. By nesting we can create multi-level requirements such as "either the CEO or 3 of 5 of his assistants need to sign".

### Types

Builder | `class Builder` A helper class for building a CompositeKey.Node.
Leaf | `class Leaf : CompositeKey` The leaf node of the tree – a wrapper around a PublicKey primitive
Node | `class Node : CompositeKey` Represents a node in the key tree. It maintains a list of child nodes – sub-trees, and associated weights carried by child node signatures.

### Properties

keys | `abstract val keys: Set<PublicKey>` Returns all PublicKeys contained within the tree leaves
singleKey | `val singleKey: PublicKey` Returns the enclosed PublicKey for a CompositeKey with a single leaf node

### Functions

containsAny | `fun containsAny(otherKeys: Iterable<PublicKey>): Boolean` Checks whether any of the given keys matches a leaf on the tree
isFulfilledBy | `abstract fun isFulfilledBy(keys: Iterable<PublicKey>): Boolean` Checks whether keys match a sufficient amount of leaf nodes `fun isFulfilledBy(key: PublicKey): Boolean`
toBase58String | `fun toBase58String(): String` This is generated by serializing the composite key with Kryo, and encoding the resulting bytes in base58. A custom serialization format is being used.

### Companion Object Functions

parseFromBase58 | `fun parseFromBase58(encoded: String): CompositeKey`

### Inheritors

Leaf | `class Leaf : CompositeKey` The leaf node of the tree – a wrapper around a PublicKey primitive
Node | `class Node : CompositeKey` Represents a node in the key tree. It maintains a list of child nodes – sub-trees, and associated weights carried by child node signatures.