Module Psa.Alg

Algorithms.

Algorithms

type t

The type for psa_algorithm_t.

val none : t

Algorithm categories

val is_hash : t -> bool
val is_mac : t -> bool
val is_cipher : t -> bool
val is_aead : t -> bool
val is_key_derivation : t -> bool
val is_sign : t -> bool
val is_asymmetric_encryption : t -> bool
val is_key_agreement : t -> bool
val is_wildcard : t -> bool
val get_hash : t -> t

Message digests (Hashes)

val md2 : t

PSA_ALG_MD2 WARNING Only use for legacy applications.

val md4 : t

PSA_ALG_MD4 WARNING Only use for legacy applications.

val md5 : t

PSA_ALG_MD5 WARNING Only use for legacy applications.

val ripemd160 : t
val aes_mmo_zigbee : t
val sha_1 : t

PSA_ALG_SHA_1 WARNING Only use for legacy applications.

val sha_224 : t
val sha_256 : t
val sha_384 : t
val sha_512 : t
val sha_512_224 : t
val sha_512_256 : t
val sha3_224 : t
val sha3_256 : t
val sha3_384 : t
val sha3_512 : t
val shake256_512 : t
val sm3 : t

Message authentication codes (MAC)

val hmac : t -> t
val cbc_mac : t

PSA_ALG_CBC_MAC WARNING Not recommended.

val cbc : t
val truncated_mac : t -> length:int -> t
val full_length_mac : t -> t
val at_least_this_length_mac : t -> length:int -> t
val is_hmac : t -> bool
val is_block_cipher_mac : t -> bool

Unauthenticated ciphers

val stream_cipher : t
val ctr : t
val ccm_star_no_tag : t
val ccm_star_any_tag : t
val cfb : t
val ofb : t
val xts : t
val ecb_no_padding : t
val cbc_no_padding : t
val cbc_pkcs7 : t
val is_stream_cipher : t -> bool

Authenticated encryption with associcated data (AEAD)

val ccm : t
val gcm : t
val chacha20_poly1305 : t
val xchacha20_poly1305 : t
val aead_with_shortened_tag : t -> length:int -> t
val aead_with_default_length_tag : t -> t
val aead_with_at_least_this_length_tag : t -> length:int -> t
val is_aead_on_block_cipher : t -> bool

Key derivation

val hkdf : t -> t
val hkdf_extract : t -> t
val hkdf_expand : t -> t
val tls12_prf : t -> t
val tls12_psk_to_ms : t -> t
val pbkdf2_hmac : t -> t
val is_key_derivation_stretching : t -> bool
val is_hkdf : t -> bool
val is_hkdf_extract : t -> bool
val is_hkdf_expand : t -> bool
val is_tls12_prf : t -> bool
val is_pbkdf2_hmac : t -> bool

Asymmetric signature

val rsa_pkcs1v15_sign : t -> t
val rsa_pkcs1v15_sign_raw : t
val rsa_pss : t -> t
val rsa_pss_any_salt : t -> t
val ecdsa : t -> t
val ecdsa_any : t
val deterministic_ecdsa : t -> t
val pure_eddsa : t
val ed25519ph : t
val ed448ph : t
val is_sign_message : t -> bool
val is_sign_hash : t -> bool
val is_rsa_pkcs1v15_sign : t -> bool
val is_rsa_pss : t -> bool
val is_rsa_pss_any_salt : t -> bool
val is_rsa_pss_standard_salt : t -> bool
val is_ecdsa : t -> bool
val is_deterministic_ecdsa : t -> bool
val is_randomized_ecdsa : t -> bool
val is_hash_eddsa : t -> bool
val is_hash_and_sign : t -> bool
val any_hash : t

Asymmetric encryption

val rsa_pkcs1v15_crypt : t
val rsa_oaep : t -> t
val is_rsa_oaep : t -> bool

Key agreement

val ffdh : t
val ecdh : t
val key_agreement : ka:t -> kdf:t -> t
val key_agreement_get_base : t -> t
val key_agreement_get_kdf : t -> t
val is_standalone_key_agreement : t -> bool
val is_ffdh : t -> bool
val is_ecdh : t -> bool

Predicates and comparisons

val equal : t -> t -> bool

equal a0 a1 is true iff a0 and a1 are equal.

val compare : t -> t -> int

compare is a total order compatible with equal.

Converting

val to_uint32 : t -> uint32

to_uint32 a is a as an unsigned 32-bit integer.

val of_uint32 : uint32 -> t

of_uint32 i is i as an algorithm.

Formatting

val pp : Stdlib.Format.formatter -> t -> unit

pp formats algorithms for inspection.