Off the record implementation purely in OCaml
Module type
Class type
Library otr
Module Otr . State

Type definitions and predicates

type ret = [
| `Warning of string
| `Received_error of string
| `Received of string
| `Established_encrypted_session of string
| `Received_encrypted of string
| `SMP_awaiting_secret
| `SMP_received_question of string
| `SMP_success
| `SMP_failure

Return values of functions in the Engine module.

type policy = [

OTR policies, as defined in the protocol.

val sexp_of_policy : policy -> Sexplib0.Sexp.t
val policy_of_sexp : Sexplib0.Sexp.t -> policy
val policy_to_string : policy -> string

policy_to_string policy is string, the string representation of the given policy.

val string_to_policy : string -> policy option

string_to_policy string is policy, the policy matching the string (None if none matches).

val all_policies : policy list

all_policies returns a list of all defined policies.

type version = [
| `V2
| `V3

OTR protocol versions supported by this library

val sexp_of_version : version -> Sexplib0.Sexp.t
val version_of_sexp : Sexplib0.Sexp.t -> version
val version_to_string : version -> string

version_to_string version is string, the string representation of the version.

val string_to_version : string -> version option

string_to_version string is version, the version matching the string (None if none matches).

val all_versions : version list

all_versions returns a list of all supported versions.

type config = {
policies : policy list;
versions : version list;

OTR configuration consisting of a set of policies and versions.

val sexp_of_config : config -> Sexplib0.Sexp.t
val config_of_sexp : Sexplib0.Sexp.t -> config
val config : version list -> policy list -> config

config versions policies is config, the configuration with the given versions and policies.

type session

An abstract OTR session

val session_to_string : session -> string

session_to_string session is string, the string representation of the session.

val version : session -> version

version session is version, the current active protocol version of this session.

val is_encrypted : session -> bool

is_encrypted session is true if the session is established.

val their_dsa : session -> Mirage_crypto_pk.Dsa.pub option

their_dsa session is dsa, the public DSA key used by the communication partner (if the session is established).

val new_session : config -> Mirage_crypto_pk.Dsa.priv -> unit -> session

new_session configuration dsa () is session, a fresh session given the configuration and dsa private key.

val update_config : config -> session -> session

update_config config session is session, the session adjusted to the config. Note: the session might not conform to the config anymore!