Mavryk_client_base.Client_keys_v1
Module to use keys over Mavryk_crypto.Signature.V1
include module type of struct include Client_keys end
module Pk_uri_hashtbl = Client_keys.Pk_uri_hashtbl
val pk_uri_parameter : unit -> (pk_uri, 'a) Mavryk_clic.parameter
val pk_uri_param :
?name:string ->
?desc:string ->
('a, 'b) Mavryk_clic.params ->
(pk_uri -> 'a, 'b) Mavryk_clic.params
val sk_uri_parameter : unit -> (sk_uri, 'a) Mavryk_clic.parameter
val sk_uri_param :
?name:string ->
?desc:string ->
('a, 'b) Mavryk_clic.params ->
(sk_uri -> 'a, 'b) Mavryk_clic.params
val aggregate_sk_uri_parameter :
unit ->
(aggregate_sk_uri, 'a) Mavryk_clic.parameter
val aggregate_sk_uri_param :
?name:string ->
?desc:string ->
('a, 'b) Mavryk_clic.params ->
(aggregate_sk_uri -> 'a, 'b) Mavryk_clic.params
type sapling_key = Client_keys.sapling_key = {
sk : sapling_uri;
path : int32 list;
address_index : Mavryk_sapling.Core.Client.Viewing_key.index;
}
module Sapling_key = Client_keys.Sapling_key
module Aggregate_alias = Client_keys.Aggregate_alias
Aggregate_alias
contains the implementation needed for the wallet to have the correspondence between aliases and keys. It has three sub-module Public_key
Public_key_hash
Secret_key
. The reason of a sub-module inside a sub-module is not confuse them with the alias module for the standard signature (i.e. Public_key
, Public_key_hash
, and Secret_key
).
module Aggregate_type = Client_keys.Aggregate_type
module Logging = Client_keys.Logging
module type COMMON_SIGNER = Client_keys.COMMON_SIGNER
module type AGGREGATE_SIGNER = Client_keys.AGGREGATE_SIGNER
module type SIGNER = Client_keys.SIGNER
type signer = Client_keys.signer =
| Simple of (module SIGNER)
| Aggregate of (module AGGREGATE_SIGNER)
val register_signer : (module SIGNER) -> unit
register_signer signer
registers first-class module signer
as signer for keys with scheme (val signer : SIGNER).scheme
.
val registered_signers : unit -> (string * signer) list
val register_aggregate_signer : (module AGGREGATE_SIGNER) -> unit
register_aggregate_signer signer
registers first-class module signer
as signer for keys with scheme (val signer : AGGREGATE_SIGNER).scheme
.
val aggregate_neuterize :
aggregate_sk_uri ->
aggregate_pk_uri Mavryk_base.TzPervasives.tzresult Lwt.t
val register_aggregate_key :
Client_context.wallet ->
?force:bool ->
(Mavryk_crypto.Aggregate_signature.Public_key_hash.t
* aggregate_pk_uri
* aggregate_sk_uri) ->
?public_key:Mavryk_crypto.Aggregate_signature.Public_key.t ->
string ->
unit Mavryk_base.TzPervasives.tzresult Lwt.t
val list_aggregate_keys :
Client_context.wallet ->
(string
* Mavryk_crypto.Aggregate_signature.Public_key_hash.t
* Mavryk_crypto.Aggregate_signature.Public_key.t option
* aggregate_sk_uri option)
list
Mavryk_base.TzPervasives.tzresult
Lwt.t
val import_aggregate_secret_key :
io:Client_context.io_wallet ->
aggregate_pk_uri ->
(Mavryk_crypto.Aggregate_signature.Public_key_hash.t
* Mavryk_crypto.Aggregate_signature.Public_key.t option)
Mavryk_base.TzPervasives.tzresult
Lwt.t
val alias_aggregate_keys :
Client_context.wallet ->
string ->
(Mavryk_crypto.Aggregate_signature.Public_key_hash.t
* Mavryk_crypto.Aggregate_signature.Public_key.t option
* aggregate_sk_uri option)
option
Mavryk_base.TzPervasives.tzresult
Lwt.t
val aggregate_sign :
Client_context.wallet ->
aggregate_sk_uri ->
Mavryk_base.TzPervasives.Bytes.t ->
Mavryk_crypto.Aggregate_signature.t Mavryk_base.TzPervasives.tzresult Lwt.t
module type S = Client_keys.S
module V0 = Client_keys.V0
module V1 = Client_keys.V1
module V_latest = Client_keys.V_latest
include module type of V_latest
include module type of struct include Client_keys.V1 end
module Signature_type = Client_keys.V1.Signature_type
Signature_type
is a small module to be included in signer to conform to the module type SIGNER
instead of rewriting all type.
module Public_key_hash = Client_keys.V1.Public_key_hash
module Public_key = Client_keys.V1.Public_key
module Secret_key = Client_keys.V1.Secret_key
val import_secret_key :
io:Client_context.io_wallet ->
Client_keys.pk_uri ->
(Mavryk_crypto.Signature.V1.Public_key_hash.t
* Mavryk_crypto.Signature.V1.Public_key.t option)
Mavryk_base.TzPervasives.tzresult
Lwt.t
val public_key :
Client_keys.pk_uri ->
Mavryk_crypto.Signature.V1.Public_key.t Mavryk_base.TzPervasives.tzresult
Lwt.t
val public_key_hash :
Client_keys.pk_uri ->
(Mavryk_crypto.Signature.V1.Public_key_hash.t
* Mavryk_crypto.Signature.V1.Public_key.t option)
Mavryk_base.TzPervasives.tzresult
Lwt.t
val neuterize :
Client_keys.sk_uri ->
Client_keys.pk_uri Mavryk_base.TzPervasives.tzresult Lwt.t
val sign :
Client_context.wallet ->
?watermark:Mavryk_crypto.Signature.V1.watermark ->
Client_keys.sk_uri ->
Mavryk_base.TzPervasives.Bytes.t ->
Mavryk_crypto.Signature.V1.t Mavryk_base.TzPervasives.tzresult Lwt.t
val append :
Client_context.wallet ->
?watermark:Mavryk_crypto.Signature.V1.watermark ->
Client_keys.sk_uri ->
Mavryk_base.TzPervasives.Bytes.t ->
Mavryk_base.TzPervasives.Bytes.t Mavryk_base.TzPervasives.tzresult Lwt.t
val check :
?watermark:Mavryk_crypto.Signature.V1.watermark ->
Client_keys.pk_uri ->
Mavryk_crypto.Signature.V1.t ->
Mavryk_base.TzPervasives.Bytes.t ->
bool Mavryk_base.TzPervasives.tzresult Lwt.t
val deterministic_nonce :
Client_keys.sk_uri ->
Mavryk_base.TzPervasives.Bytes.t ->
Mavryk_base.TzPervasives.Bytes.t Mavryk_base.TzPervasives.tzresult Lwt.t
val deterministic_nonce_hash :
Client_keys.sk_uri ->
Mavryk_base.TzPervasives.Bytes.t ->
Mavryk_base.TzPervasives.Bytes.t Mavryk_base.TzPervasives.tzresult Lwt.t
val supports_deterministic_nonces :
Client_keys.sk_uri ->
bool Mavryk_base.TzPervasives.tzresult Lwt.t
val register_key :
Client_context.wallet ->
?force:bool ->
(Mavryk_crypto.Signature.V1.Public_key_hash.t
* Client_keys.pk_uri
* Client_keys.sk_uri) ->
?public_key:Mavryk_crypto.Signature.V1.Public_key.t ->
string ->
unit Mavryk_base.TzPervasives.tzresult Lwt.t
val register_keys :
Client_context.wallet ->
(string
* Mavryk_crypto.Signature.V1.Public_key_hash.t
* Mavryk_crypto.Signature.V1.Public_key.t
* Client_keys.pk_uri
* Client_keys.sk_uri)
list ->
unit Mavryk_base.TzPervasives.tzresult Lwt.t
Similar to repeated calls to register_key
, but is more efficient. Always forces addition of new elements.
val list_keys :
Client_context.wallet ->
(string
* Mavryk_crypto.Signature.V1.Public_key_hash.t
* Mavryk_crypto.Signature.V1.Public_key.t option
* Client_keys.sk_uri option)
list
Mavryk_base.TzPervasives.tzresult
Lwt.t
val alias_keys :
Client_context.wallet ->
string ->
(Mavryk_crypto.Signature.V1.Public_key_hash.t
* Mavryk_crypto.Signature.V1.Public_key.t option
* Client_keys.sk_uri option)
option
Mavryk_base.TzPervasives.tzresult
Lwt.t
val get_key :
Client_context.wallet ->
Mavryk_crypto.Signature.V1.Public_key_hash.t ->
(string * Mavryk_crypto.Signature.V1.Public_key.t * Client_keys.sk_uri)
Mavryk_base.TzPervasives.tzresult
Lwt.t
val get_public_key :
Client_context.wallet ->
Mavryk_crypto.Signature.V1.Public_key_hash.t ->
(string * Mavryk_crypto.Signature.V1.Public_key.t)
Mavryk_base.TzPervasives.tzresult
Lwt.t
val get_keys :
Client_context.wallet ->
(string
* Mavryk_crypto.Signature.V1.Public_key_hash.t
* Mavryk_crypto.Signature.V1.Public_key.t
* Client_keys.sk_uri)
list
Mavryk_base.TzPervasives.tzresult
Lwt.t
val force_switch : unit -> (bool, 'ctx) Mavryk_clic.arg