ADDED: ed25519_new_keypair/1 to dynamically create a new Ed25519 key pair

This commit is contained in:
Markus Triska
2020-05-20 23:06:09 +02:00
parent 56b04f8df8
commit 0ef7b5488d
3 changed files with 35 additions and 13 deletions

View File

@@ -21,6 +21,7 @@
crypto_password_hash/3, % +Password, -Hash, +Options
crypto_data_encrypt/6, % +PlainText, +Algorithm, +Key, +IV, -CipherText, +Options
crypto_data_decrypt/6, % +CipherText, +Algorithm, +Key, +IV, -PlainText, +Options
ed25519_new_keypair/1, % -KeyPair
ed25519_sign/4, % +PrivateKey, +Data, -Signature, +Options
ed25519_verify/4, % +PublicKey, +Data, -Signature, +Options
crypto_name_curve/2, % +Name, -Curve
@@ -630,28 +631,37 @@ encoding_bytes(utf8, Cs, Bs) :-
Digital signatures with Ed25519
===============================
ed25519_sign(+Key, +Data, -Signature, +Options)
- ed25519_new_keypair(-Pair)
Yields a new Ed25519 key pair Pair, a list of characters. The
pair contains the private key and must be kept absolutely secret.
Pair can be used for signing. Its public key can be obtained
with ed25519_keypair_public_key/2.
Key and Data must be lists of characters. Key is a private key in
PKCS#8 (v1 or v2) DER format. Sign Data with Key, yielding
Signature as a list of hexadecimal characters.
- ed25519_keypair_public_key(+Pair, -PublicKey)
PublicKey is the public key of the given key pair. The public key
can be used for signature verification, and can be shared freely.
- ed25519_sign(+Key, +Data, -Signature, +Options)
Key and Data must be lists of characters. Key is a private key or
key pair in PKCS#8 (v1 or v2) DER format. Sign Data with Key,
yielding Signature as a list of hexadecimal characters.
ed25519_verify(+Key, +Data, +Signature, +Options)
- ed25519_verify(+Key, +Data, +Signature, +Options)
Key and Data must be lists of characters. Key is a public key.
Succeeds if Data was signed with the private key corresponding to
Key, where Signature is a list of hexadecimal characters as
generated by ed25519_sign/4. Fails otherwise.
Key and Data must be lists of characters. Key is a public key in
PKCS#8 DER format. Succeeds if Data was signed with the private key
corresponding to Key, where Signature is a list of hexadecimal
characters as generated by ed25519_sign/4. Fails otherwise.
Currently, the only option for both predicates is:
Currently, the only option for signing and verifying is:
- encoding(+Encoding)
The default encoding of Data is utf8. The alternative is octet,
which treats Data as a list of raw bytes.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
ed25519_new_keypair(Pair) :-
'$ed25519_new_keypair'(Pair).
ed25519_sign(Key0, Data0, Signature, Options) :-
options_data_bytes(Options, Data0, Data),
encoding_bytes(octet, Key0, Key),