CRPGP
This module based on threefold/crpgp repo, which is a wrapper for rpgp
Install
All needed libs can be installed from install.sh
High Level API
- List of supported functions with a description for each method
| Function | Description | Input | Output |
|---|---|---|---|
| generate_key | generate a signed secret key using name, email, comment, key_type and key_length | KeyParams | SignedSecretKey |
| SignedSecretKey.get_signed_public_key | get a signed public key from signed secret key | SignedPublicKey | |
| import_publickey | import signed public key in armored format | string | SignedPublicKey |
| import_publickey_from_file | like import_publickey but from a file | string | SignedPublicKey |
| import_secretkey | import signed secret key in armored format | string | SignedSecretKey |
| import_secretkey_from_file | like import_secretkey but from a file | string | SignedSecretKey |
| SignedPublicKey.sign_message | sign message with your signed public key | string | Signature |
| SignedSecretKey.verify_signature | verify signature for message with your signed secret key | Signature, string | bool |
| SignedPublicKey.encrypt_from_text | encrypt message from text using your signed public key | string | []byte |
| SignedSecretKey.decrypt_to_text | decrypt encrypted messages to text using your signed secret key | []byte | string |
| Signature.to_bytes | convert signature to bytes | []byte | |
| Signature.to_hex | convert signature to hex | string | |
| signature_from_hex | convert hex string to signature | string | Signature |
Notes:
- key_type is enum of [
cv25519,rsa], by default key_type will becv25519 - key_length used if key_type is
rsaand3072is a default value
How to use !
-
We will go together step by step to illustrate how to use this module.
-
Import crpgp module
import crpgp
- We have two options here, generate a new key, or import
- Generate:
- CV25519 key:
ssk := crpgp.generate_key(name: <YOUR_NAME>, email: <YOUR_EMAIL>) !
- RSA key
// key_length 3072 if not passed
ssk := crpgp.generate_key(name: <YOUR_NAME>, email: <YOUR_EMAIL>, key_type: .rsa) !
or
ssk := crpgp.generate_key(name: <YOUR_NAME>, email: <YOUR_EMAIL>, key_type: .rsa, key_length: <LENGTH>) !
- Import signed secret key from file
ssk := crpgp.import_secretkey_from_file(<FILE_PATH>) !
- Now we have a signed secret key, let us get a signed public key, also we have two options, get from secret key or import
- Get signed public key from signed secret key
spk := ssk.get_signed_public_key() !
- import signed public key from file
spk := crpgp.import_publickey_from_file(<FILE_PATH>) !
- Now we have a signed public and secret key, let us try to sign and verify a message
message := "these are my secrets\n12345"
mut sig := ssk.sign_message(message) !
println(sig.to_hex() !) // In case we want to convert it to hex, here just to display it
if spk.verify_signature(sig, message) {
println('✅ message signed and verified!')
}
- let us try encrypt and decrypt message.
encrypted := spk.encrypt_from_text(message) !
decrypted := ssk.decrypt_to_text(encrypted) !
if message == decrypted {
println('✅ message encrypted and decrypted!')
}
- Done !