Mavryk_crypto.Base58
module Prefix : sig ... end
An extensible sum-type for decoded data: one case per known "prefix". See for instance Hash.Block_hash.Hash
or Environment.Ed25519.Public_key_hash
.
type 'a encoding = private {
prefix : string;
length : int;
encoded_prefix : string;
encoded_length : int;
to_raw : 'a -> string;
of_raw : string -> 'a option;
wrap : 'a -> data;
}
Abstract representation of registered encodings. The type parameter is the type of the encoded data, for instance Hash.Block_hash.t
.
val register_encoding :
prefix:string ->
length:int ->
to_raw:('a -> string) ->
of_raw:(string -> 'a option) ->
wrap:('a -> data) ->
'a encoding
Register a new encoding. The function might raise Invalid_arg
if the provided prefix
overlaps with a previously registered prefix. The to_raw
and of_raw
are the ad-hoc serialisation/deserialisation for the data. The wrap
should wrap the deserialised value into the extensible sum-type data
(see the generic function decode
).
val check_encoded_prefix : 'a encoding -> string -> int -> unit
Checks that an encoding has a certain prefix and length.
module Alphabet : sig ... end
val simple_encode : ?alphabet:Alphabet.t -> 'a encoding -> 'a -> string
Encoder for a given kind of data.
val simple_decode : ?alphabet:Alphabet.t -> 'a encoding -> string -> 'a option
Decoder for a given kind of data. It returns None
when the decoded data does not start with the expected prefix.
val decode : ?alphabet:Alphabet.t -> string -> data option
Generic decoder. It returns None
when the decoded data does not start with a registered prefix.
val register_resolver : 'a encoding -> (string -> 'a list Lwt.t) -> unit
Register a (global) resolver for a previously registered kind of data.
val complete : ?alphabet:Alphabet.t -> string -> string list Lwt.t
Try to complete a prefix of a Base58Check encoded data, by using the previously registered resolver associated to this kind of data. Note that a prefix of n
characters of a Base58-encoded value provides at least n/2
bytes of a prefix of the original value.
See src/environment/v1/base58.mli
for an inlined documentation.
val safe_encode : ?alphabet:Alphabet.t -> string -> string
Base58Check-encoding/decoding functions (with error detections).
val safe_decode : ?alphabet:Alphabet.t -> string -> string option
val raw_encode : ?alphabet:Alphabet.t -> string -> string
Base58-encoding/decoding functions (without error detections).
val raw_decode : ?alphabet:Alphabet.t -> string -> string option