From 938e788fb404e9e270975d36db5e27d7e136ef09 Mon Sep 17 00:00:00 2001
From: Hans Nilsson
Date: Tue, 30 Apr 2019 16:47:42 +0200
Subject: crypto: Document supports/1
---
lib/crypto/doc/src/crypto.xml | 40 ++++++++++++++++++++++++++++------------
lib/crypto/doc/src/new_api.xml | 10 +++++++++-
lib/crypto/src/crypto.erl | 21 +++++++++++++++++++++
3 files changed, 58 insertions(+), 13 deletions(-)
diff --git a/lib/crypto/doc/src/crypto.xml b/lib/crypto/doc/src/crypto.xml
index 641738247e..751cf9d1fc 100644
--- a/lib/crypto/doc/src/crypto.xml
+++ b/lib/crypto/doc/src/crypto.xml
@@ -772,6 +772,19 @@
+
+
+
+ Provide a list of available crypto algorithms.
+
+ Can be used to determine which crypto algorithms that are supported
+ by the underlying libcrypto library
+ See hash_info/1 and cipher_info/1
+ for information about the hash and cipher algorithms.
+
+
+
+
@@ -1425,18 +1438,6 @@ FloatValue = rand:uniform(). % again
-
-
- Provide a list of available crypto algorithms.
-
- Can be used to determine which crypto algorithms that are supported
- by the underlying libcrypto library
- See hash_info/1 and cipher_info/1
- for information about the hash and cipher algorithms.
-
-
-
-
Provide a list of available named elliptic curves.
@@ -1947,6 +1948,21 @@ FloatValue = rand:uniform(). % again
+
+
+ Provide a list of available crypto algorithms.
+
+ Don't use this function for new programs! Use
+ supports/1 in
+ the new api.
+ Can be used to determine which crypto algorithms that are supported
+ by the underlying libcrypto library
+ See hash_info/1 and cipher_info/1
+ for information about the hash and cipher algorithms.
+
+
+
+
diff --git a/lib/crypto/doc/src/new_api.xml b/lib/crypto/doc/src/new_api.xml
index 79096b55e8..58ace97554 100644
--- a/lib/crypto/doc/src/new_api.xml
+++ b/lib/crypto/doc/src/new_api.xml
@@ -59,6 +59,7 @@
- stream_init/3
- stream_encrypt/2
- stream_decrypt/2
+ - suppports/0
They are not deprecated for now, but may be in a future.
@@ -94,7 +95,7 @@
crypto_update does the acual encryption or decryption. Note that AEAD ciphers
can't be handled this way due to their nature.
- Finally, for repeated encryption or decryption of a text divided in parts where the
+
For repeated encryption or decryption of a text divided in parts where the
same cipher and same key is used, but a new initialization vector (nounce) should be applied
for each part, the functions are:
@@ -103,6 +104,13 @@
- crypto_dyn_iv_update/3
An example of where those functions are needed, is when handling the TLS protocol.
+ For information about available algorithms, use:
+
+
+ - supports/1
+ - hash_info/1
+ - cipher_info/1
+
Examples of crypto_init/4 and crypto_update/2
diff --git a/lib/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl
index 98378412d4..8ffdde2b90 100644
--- a/lib/crypto/src/crypto.erl
+++ b/lib/crypto/src/crypto.erl
@@ -509,6 +509,27 @@ supports() ->
{rsa_opts, rsa_opts_algorithms()}
].
+
+-spec supports(Type) -> Support
+ when Type :: hashs
+ | ciphers
+ | public_keys
+ | macs
+ | curves
+ | rsa_opts,
+ Support :: Hashs
+ | Ciphers
+ | PKs
+ | Macs
+ | Curves
+ | RSAopts,
+ Hashs :: [sha1() | sha2() | sha3() | blake2() | ripemd160 | compatibility_only_hash()],
+ Ciphers :: [cipher()],
+ PKs :: [rsa | dss | ecdsa | dh | ecdh | ec_gf2m],
+ Macs :: [hmac | cmac | poly1305],
+ Curves :: [ec_named_curve() | edwards_curve_dh() | edwards_curve_ed()],
+ RSAopts :: [rsa_sign_verify_opt() | rsa_opt()] .
+
supports(hashs) -> hash_algorithms();
supports(public_keys) -> pubkey_algorithms();
supports(ciphers) -> cipher_algorithms();
--
cgit v1.2.3