CryptoDataEncrypt,
CryptoDataDecrypt,
Ed25519Sign,
- Ed25519Verify
+ Ed25519Verify,
+ Ed25519NewKeyPair
}
impl SystemClauseType {
&SystemClauseType::CryptoDataDecrypt => clause_name!("$crypto_data_decrypt"),
&SystemClauseType::Ed25519Sign => clause_name!("$ed25519_sign"),
&SystemClauseType::Ed25519Verify => clause_name!("$ed25519_verify"),
+ &SystemClauseType::Ed25519NewKeyPair => clause_name!("$ed25519_new_keypair")
}
}
("$crypto_data_decrypt", 5) => Some(SystemClauseType::CryptoDataDecrypt),
("$ed25519_sign", 3) => Some(SystemClauseType::Ed25519Sign),
("$ed25519_verify", 3) => Some(SystemClauseType::Ed25519Verify),
+ ("$ed25519_new_keypair", 1) => Some(SystemClauseType::Ed25519NewKeyPair),
_ => None,
}
}
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
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),