Module Dirsp_exchange_kbb2017__.Kobeissi_bhargavan_blanchet_intf

type 't record_msg = {
valid : bool;
mutable ephemeralKey : 't;
mutable initEphemeralKey : 't;
ciphertext : 't;
mutable iv : 't;
tag : 't;
preKeyId : int;
}
val record_msg_from_protobuf : (Protobuf.Decoder.t -> 'a) -> Protobuf.Decoder.t -> 'a record_msg
val record_msg_to_protobuf : ('a -> Protobuf.Encoder.t -> unit) -> 'a record_msg -> Protobuf.Encoder.t -> unit
type 't record_keypair = {
mutable priv : 't;
mutable pub : 't;
}
val record_keypair_from_protobuf : (Protobuf.Decoder.t -> 'a) -> Protobuf.Decoder.t -> 'a record_keypair
val record_keypair_to_protobuf : ('a -> Protobuf.Encoder.t -> unit) -> 'a record_keypair -> Protobuf.Encoder.t -> unit
type 't record_them = {
mutable signedPreKey : 't;
mutable signedPreKeySignature : 't;
mutable identityKey : 't;
mutable identityDHKey : 't;
mutable myEphemeralKeyP0 : 't record_keypair;
mutable myEphemeralKeyP1 : 't record_keypair;
mutable ephemeralKey : 't;
mutable myPreKey : 't record_keypair;
mutable preKey : 't;
preKeyId : int;
recvKeys : 't array;
sendKeys : 't array;
mutable shared : 't;
established : bool;
}
val record_them_from_protobuf : (Protobuf.Decoder.t -> 'a) -> Protobuf.Decoder.t -> 'a record_them
val record_them_to_protobuf : ('a -> Protobuf.Encoder.t -> unit) -> 'a record_them -> Protobuf.Encoder.t -> unit
type 't record_sendoutput = {
mutable them : 't record_them;
mutable output : 't record_msg;
}
val record_sendoutput_from_protobuf : (Protobuf.Decoder.t -> 'a) -> Protobuf.Decoder.t -> 'a record_sendoutput
val record_sendoutput_to_protobuf : ('a -> Protobuf.Encoder.t -> unit) -> 'a record_sendoutput -> Protobuf.Encoder.t -> unit
type 't record_recvoutput = {
mutable them : 't record_them;
mutable output : 't record_msg;
plaintext : 't;
}
val record_recvoutput_from_protobuf : (Protobuf.Decoder.t -> 'a) -> Protobuf.Decoder.t -> 'a record_recvoutput
val record_recvoutput_to_protobuf : ('a -> Protobuf.Encoder.t -> unit) -> 'a record_recvoutput -> Protobuf.Encoder.t -> unit
type 't record_ratchetsendkeys = {
sendKeys : 't array;
kENC : 't;
}
val record_ratchetsendkeys_from_protobuf : (Protobuf.Decoder.t -> 'a) -> Protobuf.Decoder.t -> 'a record_ratchetsendkeys
val record_ratchetsendkeys_to_protobuf : ('a -> Protobuf.Encoder.t -> unit) -> 'a record_ratchetsendkeys -> Protobuf.Encoder.t -> unit
type 't record_ratchetrecvkeys = {
recvKeys : 't array;
kENC : 't;
}
val record_ratchetrecvkeys_from_protobuf : (Protobuf.Decoder.t -> 'a) -> Protobuf.Decoder.t -> 'a record_ratchetrecvkeys
val record_ratchetrecvkeys_to_protobuf : ('a -> Protobuf.Encoder.t -> unit) -> 'a record_ratchetrecvkeys -> Protobuf.Encoder.t -> unit
module type PROTOCOL = sig ... end

The KBB2017 protocol

module type PROTOCOLFUNCTOR = functor (ProScript : Dirsp_proscript.S) -> PROTOCOL with type t = ProScript.t
module type PROTOCOLMODULE = sig ... end