PGP
pgp generate_keyspgp generate_keyspgp encryptpgp encryptpgp decryptpgp decryptpgp signpgp signpgp verifypgp encrypt_textpgp decrypt_text

pgp generate_keys <user_id> <passphrase>


Description

    Generate an OpenPGP key pair (RSA, 3072 bits by default): a signing master key and an encryption subkey. Returns the armored public key (to give to the partners), the armored private key (protected by the passphrase), the key id and the fingerprint

Parameters

    user_id:   The owner, ex: "Atelier Payet " - String - required
    passphrase:   The passphrase of the private key (empty = not protected, not recommended) - String - required
admin
json load "tuto_k" (pgp generate_keys "Atelier Payet <compta@payet.example>" "my passphrase"); -> "[res]" (concat (json select "tuto_k" "/algorithm") ", key id of " (string length (json select "tuto_k" "/key_id")) " hex digits, fingerprint of " (string length (json select "tuto_k" "/fingerprint")) ", protected " (json select "tuto_k" "/protected") ", public key: " (string left (json select "tuto_k" "/public_key") 36)); json unload "tuto_k"; [res]
mentdb
RSA 3072, key id of 16 hex digits, fingerprint of 40, protected true, public key: -----BEGIN PGP PUBLIC KEY BLOCK-----

pgp generate_keys <user_id> <passphrase> <json_params>


Description

    Generate a key pair with parameters: bits (2048, 3072 or 4096), expires_days (0 = never)

Parameters

    user_id:   The owner - String - required
    passphrase:   The passphrase - String - required
    json_params:   The parameters - String - required
admin
json load "tuto_k" (pgp generate_keys "SFTP partner <edi@partner.example>" "my passphrase" "{\"bits\": 2048, \"expires_days\": 365}"); -> "[res]" (concat (json select "tuto_k" "/algorithm") ", expires: " (string length (json select "tuto_k" "/expires")) " characters (ISO date)"); json unload "tuto_k"; [res]
mentdb
RSA 2048, expires: 20 characters (ISO date)
Used in use cases (1 recipe)

    File transfer & remote systems engineer › Exchange files with a bank in PGP: encrypt and sign, decrypt and verify, check the fingerprint
Often used with

    csv write  ·  equal  ·  file create  ·  file delete  ·  file exist  ·  file hash  ·  file mkdir  ·  pgp decrypt

pgp encrypt <in_path> <out_path> <public_keys>


Description

    Encrypt a file for one or several recipients (AES-256, integrity check, zip compression): returns the file, its size and the key ids of the recipients The key of each recipient is its valid encryption subkey (key flags, not revoked nor expired); an armored block with several public keys gives several recipients.

Parameters

    in_path:   The file to encrypt - String - required
    out_path:   The encrypted file (.pgp or .gpg) - String - required
    public_keys:   The public key of the recipient (armored text or file path), or a JSON array of keys for several recipients - String - required
admin
if (equal (file exist "tmp/tuto_etl") "0") {file mkdir "tmp/tuto_etl";}; json load "tuto_a" (pgp generate_keys "Atelier Payet <compta@payet.example>" "alice-pass" "{\"bits\": 2048}"); json load "tuto_b" (pgp generate_keys "Banque Example <edi@bank.example>" "bank-pass" "{\"bits\": 2048}"); #The keys are kept in files, as in production; file create "tmp/tuto_etl/alice_priv.asc" (json select "tuto_a" "/private_key"); file create "tmp/tuto_etl/alice_pub.asc" (json select "tuto_a" "/public_key"); file create "tmp/tuto_etl/bank_priv.asc" (json select "tuto_b" "/private_key"); file create "tmp/tuto_etl/bank_pub.asc" (json select "tuto_b" "/public_key"); file create "tmp/tuto_etl/report.txt" "Monthly report"; json load "tuto_e" (pgp encrypt "tmp/tuto_etl/report.txt" "tmp/tuto_etl/report.txt.pgp" (concat "[\"tmp/tuto_etl/bank_pub.asc\", \"tmp/tuto_etl/alice_pub.asc\"]")); json load "tuto_da" (pgp decrypt "tmp/tuto_etl/report.txt.pgp" "tmp/tuto_etl/a.txt" "tmp/tuto_etl/alice_priv.asc" "alice-pass"); json load "tuto_db" (pgp decrypt "tmp/tuto_etl/report.txt.pgp" "tmp/tuto_etl/b.txt" "tmp/tuto_etl/bank_priv.asc" "bank-pass"); -> "[res]" (concat "recipients: " (json count "tuto_e" "/recipients") " | read by Alice: " (json select "tuto_da" "/bytes") " bytes, by the bank: " (json select "tuto_db" "/bytes") " bytes"); json unload "tuto_e"; json unload "tuto_da"; json unload "tuto_db"; file delete "tmp/tuto_etl/report.txt"; file delete "tmp/tuto_etl/report.txt.pgp"; file delete "tmp/tuto_etl/a.txt"; file delete "tmp/tuto_etl/b.txt"; json unload "tuto_a"; json unload "tuto_b"; file delete "tmp/tuto_etl/alice_priv.asc"; file delete "tmp/tuto_etl/alice_pub.asc"; file delete "tmp/tuto_etl/bank_priv.asc"; file delete "tmp/tuto_etl/bank_pub.asc"; [res]
mentdb
recipients: 2 | read by Alice: 14 bytes, by the bank: 14 bytes

pgp encrypt <in_path> <out_path> <public_keys> <json_params>


Description

    Encrypt with parameters: armor (false: binary; true: text -----BEGIN PGP MESSAGE-----), compress (zip, zlib, bzip2 or none), sign_with ({"private_key": "...", "passphrase": "..."}: the file is also signed by the sender)

Parameters

    in_path:   The file to encrypt - String - required
    out_path:   The encrypted file - String - required
    public_keys:   The public key(s) - String - required
    json_params:   The parameters - String - required
admin
if (equal (file exist "tmp/tuto_etl") "0") {file mkdir "tmp/tuto_etl";}; json load "tuto_a" (pgp generate_keys "Atelier Payet <compta@payet.example>" "alice-pass" "{\"bits\": 2048}"); json load "tuto_b" (pgp generate_keys "Banque Example <edi@bank.example>" "bank-pass" "{\"bits\": 2048}"); #The keys are kept in files, as in production; file create "tmp/tuto_etl/alice_priv.asc" (json select "tuto_a" "/private_key"); file create "tmp/tuto_etl/alice_pub.asc" (json select "tuto_a" "/public_key"); file create "tmp/tuto_etl/bank_priv.asc" (json select "tuto_b" "/private_key"); file create "tmp/tuto_etl/bank_pub.asc" (json select "tuto_b" "/public_key"); file create "tmp/tuto_etl/payments.csv" "iban;amount FR7630004000031234567890143;1250.50 "; json load "tuto_e" (pgp encrypt "tmp/tuto_etl/payments.csv" "tmp/tuto_etl/payments.csv.pgp" "tmp/tuto_etl/bank_pub.asc" "{\"sign_with\": {\"private_key\": \"tmp/tuto_etl/alice_priv.asc\", \"passphrase\": \"alice-pass\"}}"); #On the bank side; json load "tuto_d" (pgp decrypt "tmp/tuto_etl/payments.csv.pgp" "tmp/tuto_etl/received.csv" "tmp/tuto_etl/bank_priv.asc" "bank-pass" "{\"verify_with\": \"tmp/tuto_etl/alice_pub.asc\"}"); -> "[res]" (concat "recipients " (json count "tuto_e" "/recipients") ", signed " (json select "tuto_d" "/signed") ", signature valid " (json select "tuto_d" "/signature_valid") ", integrity " (json select "tuto_d" "/integrity_protected") ", original name " (json select "tuto_d" "/original_name") ", same content " (equal (file load "tmp/tuto_etl/received.csv") (file load "tmp/tuto_etl/payments.csv"))); json unload "tuto_e"; json unload "tuto_d"; file delete "tmp/tuto_etl/payments.csv"; file delete "tmp/tuto_etl/payments.csv.pgp"; file delete "tmp/tuto_etl/received.csv"; json unload "tuto_a"; json unload "tuto_b"; file delete "tmp/tuto_etl/alice_priv.asc"; file delete "tmp/tuto_etl/alice_pub.asc"; file delete "tmp/tuto_etl/bank_priv.asc"; file delete "tmp/tuto_etl/bank_pub.asc"; [res]
mentdb
recipients 1, signed true, signature valid true, integrity true, original name payments.csv, same content 1
Used in use cases (1 recipe)

    File transfer & remote systems engineer › Exchange files with a bank in PGP: encrypt and sign, decrypt and verify, check the fingerprint
Often used with

    csv write  ·  equal  ·  file create  ·  file delete  ·  file exist  ·  file hash  ·  file mkdir  ·  pgp decrypt

pgp decrypt <in_path> <out_path> <private_key> <passphrase>


Description

    Decrypt a file with your private key: returns the file, its size, the original name, whether it was signed and whether its integrity is protected. A modified file is refused (integrity check) and no output is left A message without integrity protection (old SED format) is refused unless {"allow_no_integrity": true}; a hidden recipient (gpg --throw-keyids) is found by trying every key of the private key.

Parameters

    in_path:   The encrypted file - String - required
    out_path:   The decrypted file - String - required
    private_key:   Your private key (armored text or file path) - String - required
    passphrase:   Its passphrase - String - required
admin
if (equal (file exist "tmp/tuto_etl") "0") {file mkdir "tmp/tuto_etl";}; json load "tuto_a" (pgp generate_keys "Atelier Payet <compta@payet.example>" "alice-pass" "{\"bits\": 2048}"); json load "tuto_b" (pgp generate_keys "Banque Example <edi@bank.example>" "bank-pass" "{\"bits\": 2048}"); #The keys are kept in files, as in production; file create "tmp/tuto_etl/alice_priv.asc" (json select "tuto_a" "/private_key"); file create "tmp/tuto_etl/alice_pub.asc" (json select "tuto_a" "/public_key"); file create "tmp/tuto_etl/bank_priv.asc" (json select "tuto_b" "/private_key"); file create "tmp/tuto_etl/bank_pub.asc" (json select "tuto_b" "/public_key"); file create "tmp/tuto_etl/data.txt" "amount=100"; pgp encrypt "tmp/tuto_etl/data.txt" "tmp/tuto_etl/data.asc" "tmp/tuto_etl/bank_pub.asc" "{\"armor\": true}"; #Change the armored message (every letter a becomes b); file create "tmp/tuto_etl/data.asc" (string replace (file load "tmp/tuto_etl/data.asc") "a" "b"); try {pgp decrypt "tmp/tuto_etl/data.asc" "tmp/tuto_etl/out.txt" "tmp/tuto_etl/bank_priv.asc" "bank-pass"; -> "[res]" "decrypted";} {-> "[res]" "refused";} "[err]"; -> "[res]" (concat [res] ", output file left: " (file exist "tmp/tuto_etl/out.txt")); file delete "tmp/tuto_etl/data.txt"; file delete "tmp/tuto_etl/data.asc"; json unload "tuto_a"; json unload "tuto_b"; file delete "tmp/tuto_etl/alice_priv.asc"; file delete "tmp/tuto_etl/alice_pub.asc"; file delete "tmp/tuto_etl/bank_priv.asc"; file delete "tmp/tuto_etl/bank_pub.asc"; [res]
mentdb
refused, output file left: 0

pgp decrypt <in_path> <out_path> <private_key> <passphrase> <json_params>


Description

    Decrypt with parameters: verify_with (the public key of the sender: signature_valid true or false; null when not checked) With several signers, signature_valid is true when the signature of the verify_with key is valid, and signers gives each signer with its result; a revoked signer key, a key expired when the file was signed or a key not allowed to sign gives signature_valid false with signature_error. Parameter allow_no_integrity (false).

Parameters

    in_path:   The encrypted file - String - required
    out_path:   The decrypted file - String - required
    private_key:   Your private key - String - required
    passphrase:   Its passphrase - String - required
    json_params:   The parameters - String - required
admin
if (equal (file exist "tmp/tuto_etl") "0") {file mkdir "tmp/tuto_etl";}; json load "tuto_a" (pgp generate_keys "Atelier Payet <compta@payet.example>" "alice-pass" "{\"bits\": 2048}"); json load "tuto_b" (pgp generate_keys "Banque Example <edi@bank.example>" "bank-pass" "{\"bits\": 2048}"); #The keys are kept in files, as in production; file create "tmp/tuto_etl/alice_priv.asc" (json select "tuto_a" "/private_key"); file create "tmp/tuto_etl/alice_pub.asc" (json select "tuto_a" "/public_key"); file create "tmp/tuto_etl/bank_priv.asc" (json select "tuto_b" "/private_key"); file create "tmp/tuto_etl/bank_pub.asc" (json select "tuto_b" "/public_key"); file create "tmp/tuto_etl/order.csv" "sku;qty A1;3 "; pgp encrypt "tmp/tuto_etl/order.csv" "tmp/tuto_etl/order.pgp" "tmp/tuto_etl/bank_pub.asc" "{\"sign_with\": {\"private_key\": \"tmp/tuto_etl/alice_priv.asc\", \"passphrase\": \"alice-pass\"}}"; json load "tuto_d" (pgp decrypt "tmp/tuto_etl/order.pgp" "tmp/tuto_etl/order_in.csv" "tmp/tuto_etl/bank_priv.asc" "bank-pass" "{\"verify_with\": \"tmp/tuto_etl/bank_pub.asc\"}"); -> "[res]" (concat "signed " (json select "tuto_d" "/signed") ", signature valid " (json select "tuto_d" "/signature_valid") " (" (string left (json select "tuto_d" "/signature_error") 21) ")"); json unload "tuto_d"; file delete "tmp/tuto_etl/order.csv"; file delete "tmp/tuto_etl/order.pgp"; file delete "tmp/tuto_etl/order_in.csv"; json unload "tuto_a"; json unload "tuto_b"; file delete "tmp/tuto_etl/alice_priv.asc"; file delete "tmp/tuto_etl/alice_pub.asc"; file delete "tmp/tuto_etl/bank_priv.asc"; file delete "tmp/tuto_etl/bank_pub.asc"; [res]
mentdb
signed true, signature valid false (signed by another key)
Used in use cases (1 recipe)

    File transfer & remote systems engineer › Exchange files with a bank in PGP: encrypt and sign, decrypt and verify, check the fingerprint
Often used with

    csv write  ·  equal  ·  file create  ·  file delete  ·  file exist  ·  file hash  ·  file mkdir  ·  pgp encrypt

pgp sign <in_path> <sig_path> <private_key> <passphrase>


Description

    Write the detached signature of a file (armored .asc by default): the file stays readable, the partner checks it with your public key

Parameters

    in_path:   The file to sign - String - required
    sig_path:   The signature file (.asc or .sig) - String - required
    private_key:   Your private key - String - required
    passphrase:   Its passphrase - String - required
admin
if (equal (file exist "tmp/tuto_etl") "0") {file mkdir "tmp/tuto_etl";}; json load "tuto_a" (pgp generate_keys "Atelier Payet <compta@payet.example>" "alice-pass" "{\"bits\": 2048}"); json load "tuto_b" (pgp generate_keys "Banque Example <edi@bank.example>" "bank-pass" "{\"bits\": 2048}"); #The keys are kept in files, as in production; file create "tmp/tuto_etl/alice_priv.asc" (json select "tuto_a" "/private_key"); file create "tmp/tuto_etl/alice_pub.asc" (json select "tuto_a" "/public_key"); file create "tmp/tuto_etl/bank_priv.asc" (json select "tuto_b" "/private_key"); file create "tmp/tuto_etl/bank_pub.asc" (json select "tuto_b" "/public_key"); file create "tmp/tuto_etl/export.csv" "id;amount 1;10 "; pgp sign "tmp/tuto_etl/export.csv" "tmp/tuto_etl/export.csv.asc" "tmp/tuto_etl/alice_priv.asc" "alice-pass"; json load "tuto_v1" (pgp verify "tmp/tuto_etl/export.csv" "tmp/tuto_etl/export.csv.asc" "tmp/tuto_etl/alice_pub.asc"); file append "tmp/tuto_etl/export.csv" "2;99 "; json load "tuto_v2" (pgp verify "tmp/tuto_etl/export.csv" "tmp/tuto_etl/export.csv.asc" "tmp/tuto_etl/alice_pub.asc"); json load "tuto_v3" (pgp verify "tmp/tuto_etl/export.csv" "tmp/tuto_etl/export.csv.asc" "tmp/tuto_etl/bank_pub.asc"); -> "[res]" (concat "signed file: valid " (json select "tuto_v1" "/valid") " | after a change: valid " (json select "tuto_v2" "/valid") " | with another key: " (json select "tuto_v3" "/error")); json unload "tuto_v1"; json unload "tuto_v2"; json unload "tuto_v3"; file delete "tmp/tuto_etl/export.csv"; file delete "tmp/tuto_etl/export.csv.asc"; json unload "tuto_a"; json unload "tuto_b"; file delete "tmp/tuto_etl/alice_priv.asc"; file delete "tmp/tuto_etl/alice_pub.asc"; file delete "tmp/tuto_etl/bank_priv.asc"; file delete "tmp/tuto_etl/bank_pub.asc"; [res]
mentdb
signed file: valid true | after a change: valid false | with another key: signed by another key (EDDADE30D2098E20)

pgp sign <in_path> <sig_path> <private_key> <passphrase> <json_params>


Description

    Sign with parameters: armor (true; false for a binary .sig)

Parameters

    in_path:   The file to sign - String - required
    sig_path:   The signature file - String - required
    private_key:   Your private key - String - required
    passphrase:   Its passphrase - String - required
    json_params:   The parameters - String - required
admin
if (equal (file exist "tmp/tuto_etl") "0") {file mkdir "tmp/tuto_etl";}; json load "tuto_a" (pgp generate_keys "Atelier Payet <compta@payet.example>" "alice-pass" "{\"bits\": 2048}"); json load "tuto_b" (pgp generate_keys "Banque Example <edi@bank.example>" "bank-pass" "{\"bits\": 2048}"); #The keys are kept in files, as in production; file create "tmp/tuto_etl/alice_priv.asc" (json select "tuto_a" "/private_key"); file create "tmp/tuto_etl/alice_pub.asc" (json select "tuto_a" "/public_key"); file create "tmp/tuto_etl/bank_priv.asc" (json select "tuto_b" "/private_key"); file create "tmp/tuto_etl/bank_pub.asc" (json select "tuto_b" "/public_key"); file create "tmp/tuto_etl/export.csv" "id;amount 1;10 "; json load "tuto_s" (pgp sign "tmp/tuto_etl/export.csv" "tmp/tuto_etl/export.csv.sig" "tmp/tuto_etl/alice_priv.asc" "alice-pass" "{\"armor\": false}"); json load "tuto_v" (pgp verify "tmp/tuto_etl/export.csv" "tmp/tuto_etl/export.csv.sig" "tmp/tuto_etl/alice_pub.asc"); -> "[res]" (concat "armor " (json select "tuto_s" "/armor") ", valid " (json select "tuto_v" "/valid")); json unload "tuto_s"; json unload "tuto_v"; file delete "tmp/tuto_etl/export.csv"; file delete "tmp/tuto_etl/export.csv.sig"; json unload "tuto_a"; json unload "tuto_b"; file delete "tmp/tuto_etl/alice_priv.asc"; file delete "tmp/tuto_etl/alice_pub.asc"; file delete "tmp/tuto_etl/bank_priv.asc"; file delete "tmp/tuto_etl/bank_pub.asc"; [res]
mentdb
armor false, valid true

pgp verify <in_path> <sig_path> <public_key>


Description

    Check the detached signature of a file: valid, the key id of the signer and the date of the signature; valid false with the reason when the file was modified or signed by another key A revoked signer key, a key expired when the file was signed or a key not allowed to sign data (key flags) also gives valid false with the reason.

Parameters

    in_path:   The file - String - required
    sig_path:   Its signature - String - required
    public_key:   The public key of the signer - String - required
admin
if (equal (file exist "tmp/tuto_etl") "0") {file mkdir "tmp/tuto_etl";}; json load "tuto_a" (pgp generate_keys "Atelier Payet <compta@payet.example>" "alice-pass" "{\"bits\": 2048}"); json load "tuto_b" (pgp generate_keys "Banque Example <edi@bank.example>" "bank-pass" "{\"bits\": 2048}"); #The keys are kept in files, as in production; file create "tmp/tuto_etl/alice_priv.asc" (json select "tuto_a" "/private_key"); file create "tmp/tuto_etl/alice_pub.asc" (json select "tuto_a" "/public_key"); file create "tmp/tuto_etl/bank_priv.asc" (json select "tuto_b" "/private_key"); file create "tmp/tuto_etl/bank_pub.asc" (json select "tuto_b" "/public_key"); file create "tmp/tuto_etl/rates.csv" "currency;rate USD;1.08 "; pgp sign "tmp/tuto_etl/rates.csv" "tmp/tuto_etl/rates.csv.asc" "tmp/tuto_etl/bank_priv.asc" "bank-pass"; json load "tuto_v" (pgp verify "tmp/tuto_etl/rates.csv" "tmp/tuto_etl/rates.csv.asc" "tmp/tuto_etl/bank_pub.asc"); -> "[res]" (concat "valid " (json select "tuto_v" "/valid") ", signed by the bank key " (equal (json select "tuto_v" "/signer_key_id") (json select "tuto_b" "/key_id")) ", date of " (string length (json select "tuto_v" "/created")) " characters"); json unload "tuto_v"; file delete "tmp/tuto_etl/rates.csv"; file delete "tmp/tuto_etl/rates.csv.asc"; json unload "tuto_a"; json unload "tuto_b"; file delete "tmp/tuto_etl/alice_priv.asc"; file delete "tmp/tuto_etl/alice_pub.asc"; file delete "tmp/tuto_etl/bank_priv.asc"; file delete "tmp/tuto_etl/bank_pub.asc"; [res]
mentdb
valid true, signed by the bank key 1, date of 20 characters

pgp encrypt_text <text> <public_keys>


Description

    Encrypt a text (10 MB at most) for one or several recipients: an armored message -----BEGIN PGP MESSAGE-----

Parameters

    text:   The text - String - required
    public_keys:   The public key(s) - String - required
admin
if (equal (file exist "tmp/tuto_etl") "0") {file mkdir "tmp/tuto_etl";}; json load "tuto_a" (pgp generate_keys "Atelier Payet <compta@payet.example>" "alice-pass" "{\"bits\": 2048}"); json load "tuto_b" (pgp generate_keys "Banque Example <edi@bank.example>" "bank-pass" "{\"bits\": 2048}"); #The keys are kept in files, as in production; file create "tmp/tuto_etl/alice_priv.asc" (json select "tuto_a" "/private_key"); file create "tmp/tuto_etl/alice_pub.asc" (json select "tuto_a" "/public_key"); file create "tmp/tuto_etl/bank_priv.asc" (json select "tuto_b" "/private_key"); file create "tmp/tuto_etl/bank_pub.asc" (json select "tuto_b" "/public_key"); -> "[msg]" (pgp encrypt_text "API token: 7f3c-91aa" "tmp/tuto_etl/bank_pub.asc"); -> "[res]" (concat (string left [msg] 27) " ... decrypted: " (pgp decrypt_text [msg] "tmp/tuto_etl/bank_priv.asc" "bank-pass")); json unload "tuto_a"; json unload "tuto_b"; file delete "tmp/tuto_etl/alice_priv.asc"; file delete "tmp/tuto_etl/alice_pub.asc"; file delete "tmp/tuto_etl/bank_priv.asc"; file delete "tmp/tuto_etl/bank_pub.asc"; [res]
mentdb
-----BEGIN PGP MESSAGE----- ... decrypted: API token: 7f3c-91aa

pgp decrypt_text <armored> <private_key> <passphrase>


Description

    Decrypt an armored message with your private key

Parameters

    armored:   The message -----BEGIN PGP MESSAGE----- - String - required
    private_key:   Your private key - String - required
    passphrase:   Its passphrase - String - required
admin
pgp decrypt_text "-----BEGIN PGP MESSAGE----- wcBMA6bN9PyP2P9WAQf+MEj3uDXycFoHhgm8ftP9p+ufVSwyyqsJV7o2YsI15bNx fTqJ07ROYDYVZhA5XDr0Sblsw2rnemfeu/Ns6gK1S29yCc5fVSslkoj8GpWe7UT4 5NtbdOoz3iySDHID5McfskGTT0azRvH4j4pqeF5i1nByVzH/kqmYgKWOLveCHBzw uk6lEA08nN+LnqgNaq+DCNKoD5iVqHrx4MU7eehlxPo4R0sm6etNzmh06CRyCKLE PdnebZRd08Cbg3yXTTyAcJMwY/IPVewtykOP84jddV0nIkDzRaGpYXXTQLqJzGl8 dkBWNKxNEAhvbE6tMnxOUZpQp5gbp2GdScSY4yiyHtJZAZohl3oseyWjQqRCz42s 6yoVLHWKysvawHUtolwljvF83jRANeSATzKmEmj79MkGoaLyrIpTGMNZM1cLi4CS JU5A4wpvx8FibAa/enTAR4WR9wuSOxD1eBg= =nmOg -----END PGP MESSAGE-----" "-----BEGIN PGP PRIVATE KEY BLOCK----- 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 zqnM21rexo2nOMt6x/DfJbI3Hhogv6o= =J2jO -----END PGP PRIVATE KEY BLOCK-----" "doc-passphrase"
mentdb
IBAN FR76 3000 6000 0112 3456 7890 189
Complete: the errors: a wrong passphrase, a public key given instead of the private key
admin
try {-> "[r1]" (pgp decrypt_text "-----BEGIN PGP MESSAGE----- wcBMA6bN9PyP2P9WAQf+MEj3uDXycFoHhgm8ftP9p+ufVSwyyqsJV7o2YsI15bNx fTqJ07ROYDYVZhA5XDr0Sblsw2rnemfeu/Ns6gK1S29yCc5fVSslkoj8GpWe7UT4 5NtbdOoz3iySDHID5McfskGTT0azRvH4j4pqeF5i1nByVzH/kqmYgKWOLveCHBzw uk6lEA08nN+LnqgNaq+DCNKoD5iVqHrx4MU7eehlxPo4R0sm6etNzmh06CRyCKLE PdnebZRd08Cbg3yXTTyAcJMwY/IPVewtykOP84jddV0nIkDzRaGpYXXTQLqJzGl8 dkBWNKxNEAhvbE6tMnxOUZpQp5gbp2GdScSY4yiyHtJZAZohl3oseyWjQqRCz42s 6yoVLHWKysvawHUtolwljvF83jRANeSATzKmEmj79MkGoaLyrIpTGMNZM1cLi4CS JU5A4wpvx8FibAa/enTAR4WR9wuSOxD1eBg= =nmOg -----END PGP MESSAGE-----" "-----BEGIN PGP PRIVATE KEY BLOCK----- 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 zqnM21rexo2nOMt6x/DfJbI3Hhogv6o= =J2jO -----END PGP PRIVATE KEY BLOCK-----" "bad");} {-> "[r1]" [err];} "[err]"; try {-> "[r2]" (pgp decrypt_text "-----BEGIN PGP MESSAGE----- wcBMA6bN9PyP2P9WAQf+MEj3uDXycFoHhgm8ftP9p+ufVSwyyqsJV7o2YsI15bNx fTqJ07ROYDYVZhA5XDr0Sblsw2rnemfeu/Ns6gK1S29yCc5fVSslkoj8GpWe7UT4 5NtbdOoz3iySDHID5McfskGTT0azRvH4j4pqeF5i1nByVzH/kqmYgKWOLveCHBzw uk6lEA08nN+LnqgNaq+DCNKoD5iVqHrx4MU7eehlxPo4R0sm6etNzmh06CRyCKLE PdnebZRd08Cbg3yXTTyAcJMwY/IPVewtykOP84jddV0nIkDzRaGpYXXTQLqJzGl8 dkBWNKxNEAhvbE6tMnxOUZpQp5gbp2GdScSY4yiyHtJZAZohl3oseyWjQqRCz42s 6yoVLHWKysvawHUtolwljvF83jRANeSATzKmEmj79MkGoaLyrIpTGMNZM1cLi4CS JU5A4wpvx8FibAa/enTAR4WR9wuSOxD1eBg= =nmOg -----END PGP MESSAGE-----" "-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBGrp00gBCACtwlAL1ieU0YUb0x5Q/PS+gRVQbjYLekRbhOTdkfp+9vutEH9y SHfr31bz4QkpRq/oPsv9gsyo/RccJxxsbz+Y0edpwrLlZOqxsdo7NeKp46FrjsXM wMkepJD+uUTniLVq62HkNca8fLqH2/hCbTPAFDtOnOpiH2ClyNXzjdGECS8czY8i 7HgCHtZQiQu6crDXRE17T+kfqrF7Il1nwe+jVgM5VOyj0ZubZoROS97K3IFtzlll lgK9yHRPSJQXhzJlFPgxKCeHMxhn2pyMfKnLsmBK6Mh1ZU2arWrA1cnxHvTdi5KS D+GvIzjmx+xUf6Dg6fdOOH7IvzJbS5zoXpd3ABEBAAG0HURvYyBFeGFtcGxlIDxk b2NAZXhhbXBsZS5jb20+iQExBBMBCAAbBQJq6dNIAhsDBAsJCAcEFQoJCAQWAgEA Ah4BAAoJEPmA8zJLqQ6eKIYH/AlOE9BtY+Rai+4+d/LCRyzD01NxzheLvHT9BJWv ehueKBU/Ju7BDLVGBWsnL32btEBxrN/A5NWckZFT3iBed4eVNAOTVQsXT9b/L4rW EHHmqJxKrog+Js4Qd7dnhG2LMxsYmmEzKQYnVRVLtfoHJ1ysJcaVzALlKRhGNFa3 4jIUn+lP7EWwF61H6hQnKUnvZj6QHoqSPYxPAYMjGNIOhoPLndni0cEAu2BtSwM3 qqftU8NEALk/FVRZVINeV46SFLu3qDtucj4fTevav1W20ppr4/FjBwGxdvf28M3H IsuQrgMo8avgKZN8tA9lm3WAbb0IVRGX/x4A4Th1yJ6sbwW5AQ0EaunTSAEIAOmf G/YM1PBokd4oVOPdxx7K2xooEfWTMqrBfVIdUY1v3Frqop6K2Y63T6nHyq68CdJW oHHdh972ZFeSja66kz6l/LHKhA9/Ut4Co9TdgvGZoMoWJcQsNHhofFGwsAHj1Cc7 MGS6w146RCKWcW9fQuyG8h768HkTLuDz2LgyEtaxEgAymbadSJe0lfjOECpYWLmB 2froqZcanw5M8vYqUoxvuOdSYywyuJP8qFluuPU/mWh99rC2OgKa20BqKJHf7KVp W4GOcoF9R6N//QpKgL6oxjHCVN0JF4iitJphakacsi+Br9u0B2ZqIeVgNqWQf9dz 5vWxQXMVWFik139LVHcAEQEAAYkBHwQYAQgACQUCaunTSAIbDAAKCRD5gPMyS6kO nuyVB/9QTeDu8r+mmxlc9eAhPSooPpUxkBn/kJQXqX2NmKdRFt3nYbDfMTq1IPvq z7DJ+XQ3yPPEVR+9uXMU4X+3YI9hTxv12ZcxSCgqoMmyC9ywtVVVHWTgcYBitv+2 K7WdSfDsCxm6PH0i9QJ1y7Rz9xkSmbPo/8sBBlhkh+IjhsZpeifOUVeDpMfZNF+8 /v4TSazR1LP28ydZppYpAM1VJgd289Ou2IuKgK0C4KddC0HefhwXk5wszbld/kyz OcGYwmPB1TVqcorZx4rt4BEF7BDTx34N2zTG2mL8H6BIOCqbqCP4OQYeYqxG8M6p zNta3saNpzjLesfw3yWyNx4aIL+q =Iccc -----END PGP PUBLIC KEY BLOCK-----" "doc-passphrase");} {-> "[r2]" [err];} "[err]"; concat [r1] " | " [r2]
mentdb
line 1 >>> -> [r1] "pgp decrypt_text \"-----BEGIN PGP MESSAGE-----... line 1 >>> pgp decrypt_text "-----BEGIN PGP MESSAGE-----... [[[ Sorry, an error appears (wrong passphrase for the private key A6CDF4FC8FD8FF56). ]]] | line 1 >>> -> [r2] "pgp decrypt_text \"-----BEGIN PGP MESSAGE-----... line 1 >>> pgp decrypt_text "-----BEGIN PGP MESSAGE-----... [[[ Sorry, an error appears (a public key was given where a private key is expected). ]]]