mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 10:49:06 +01:00
Add methods for deriving static master and root keys.
This commit is contained in:
@@ -3,12 +3,28 @@ package org.briarproject.bramble.api.crypto;
|
||||
import org.briarproject.bramble.api.plugin.TransportId;
|
||||
import org.briarproject.bramble.api.transport.TransportKeys;
|
||||
|
||||
import java.security.GeneralSecurityException;
|
||||
|
||||
/**
|
||||
* Crypto operations for the transport security protocol - see
|
||||
* https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BTP.md
|
||||
*/
|
||||
public interface TransportCrypto {
|
||||
|
||||
/**
|
||||
* Derives the static master key shared with a contact or pending contact.
|
||||
*/
|
||||
SecretKey deriveStaticMasterKey(PublicKey theirHandshakePublicKey,
|
||||
KeyPair ourHandshakeKeyPair) throws GeneralSecurityException;
|
||||
|
||||
/**
|
||||
* Derives the handshake mode root key from the static master key.
|
||||
* @param pendingContact Whether the static master key is shared with a
|
||||
* pending contact or a contact
|
||||
*/
|
||||
SecretKey deriveHandshakeRootKey(SecretKey staticMasterKey,
|
||||
boolean pendingContact);
|
||||
|
||||
/**
|
||||
* Derives initial rotation mode transport keys for the given transport in
|
||||
* the given time period from the given root key.
|
||||
|
||||
@@ -63,14 +63,6 @@ public interface TransportConstants {
|
||||
int MAX_PAYLOAD_LENGTH = MAX_FRAME_LENGTH - FRAME_HEADER_LENGTH
|
||||
- MAC_LENGTH;
|
||||
|
||||
/**
|
||||
* The minimum stream length in bytes that all transport plugins must
|
||||
* support. Streams may be shorter than this length, but all transport
|
||||
* plugins must support streams of at least this length.
|
||||
*/
|
||||
int MIN_STREAM_LENGTH = STREAM_HEADER_LENGTH + FRAME_HEADER_LENGTH
|
||||
+ MAC_LENGTH;
|
||||
|
||||
/**
|
||||
* The maximum difference in milliseconds between two peers' clocks.
|
||||
*/
|
||||
@@ -81,6 +73,26 @@ public interface TransportConstants {
|
||||
*/
|
||||
int REORDERING_WINDOW_SIZE = 32;
|
||||
|
||||
/**
|
||||
* Label for deriving the static master key from handshake key pairs.
|
||||
*/
|
||||
String STATIC_MASTER_KEY_LABEL =
|
||||
"org.briarproject.bramble.transport/STATIC_MASTER_KEY";
|
||||
|
||||
/**
|
||||
* Label for deriving the handshake mode root key for a pending contact
|
||||
* from the static master key.
|
||||
*/
|
||||
String PENDING_CONTACT_ROOT_KEY_LABEL =
|
||||
"org.briarproject.bramble.transport/PENDING_CONTACT_ROOT_KEY";
|
||||
|
||||
/**
|
||||
* Label for deriving the handshake mode root key for a contact from the
|
||||
* static master key.
|
||||
*/
|
||||
String CONTACT_ROOT_KEY_LABEL =
|
||||
"org.briarproject.bramble.transport/CONTACT_ROOT_KEY";
|
||||
|
||||
/**
|
||||
* Label for deriving Alice's initial tag key from the root key in
|
||||
* rotation mode.
|
||||
|
||||
Reference in New Issue
Block a user