Pretty Curved Privacy.. ECC Curve p25519 util(Bernstein approved curve)

gwen hastings
Fri Jan 10 04:13:29 PST 2014

>From the README...


Pretty Curved Privacy (pcp1) is a commandline utility which can be used
to encrypt files. pcp1 uses eliptc curve cryptography for encryption
(CURVE25519 by Dan J. Bernstein). While CURVE25519 is no worldwide
accepted standard it hasn't been compromised by the NSA - which might be
better, depending on your point of view.

Caution: since CURVE25519 is no accepted standard, pcp1 has to be
considered as experimental software. In fact, I wrote it just to learn
about the curve and see how it works.

Beside some differences it works like GNUPG. So, if you already know how
to use gpg, you'll feel almost home.

Lets say, Alicia and Bobby want to exchange encrypted messages. Here's
what the've got to do.

First, both have create a secret key:

 Alicia                             Bobby
 pcp1 -k                            pcp1 -k

After entering their name, email address and a passphrase to protect the
key, it will be stored in their vault file (by default ~/.pcpvault).

Now, both of them have to export the public key, which has to be
imported by the other one. With pcp you can export the public part of
your primary key, but the better solution is to export a derived public
key especially for the recipient:

 Alicia                             Bobby
 pcp1 -p -r Bobby -O     pcp1 -p -r Alicia -O

They've to exchange the public key somehow (which is not my problem at
the moment, use ssh, encrypted mail, whatever). Once exchanged, they
have to import it:

 Alicia                             Bobby
 pcp1 -P -I               pcp1 -P -I

They will see a response as this when done:

 key 0x29A323A2C295D391 added to .pcpvault.

Now, Alicia finally writes the secret message, encrypts it and sends it
to Bobby, who in turn decrypts it:

 Alicia                             Bobby
 echo "Love you, honey" > letter
 pcp1 -e -i 0x29A323A2C295D391 -I letter -O letter.z85
 cat letter.z85 | mail

                                    pcp1 -d -I letter.z85 | less

And that's it.

Please note the big difference to GPG though: both Alicia AND Bobby have
to enter the passphrase for their secret key! That's the way CURVE25519
works: you encrypt a message using your secret key and the recipients
public key and the recipient does the opposite, he uses his secret key
and your public key to actually decrypt the message.

Oh - and if you're wondering why I named them Alicia and Bobby: I was
just sick of Alice and Bob. We're running NSA-free, so we're using other
sample names as well.

There are currently no packages available, so pcp has to be compiled
from source. Follow these steps:

First, you will need libsodium:

 git clone git://
 cd libsodium
 ./configure && make check
 sudo make install
 sudo ldconfig
 cd ..

Next, pcp:

 git clone git://
 cd pcp
 sudo make install
 cd ..

Optionally, you might run the unit tests:

 make test


To learn how to use pcp, read the manpage:

 man pcp1
Licensed under the GNU GENERAL PUBLIC LICENSE version 3.

The homepage of Pretty Curved Privacy can be found on The source is on Github:

Tentacle #99

ecc public key curve p25519(pcp 0.15)


Governments are instituted among men,
 deriving their just powers from the consent of the governed,
that whenever any form of government becomes destructive
of these ends, it is the right of the people to alter or
 abolish it, and to institute new government, laying its
 foundation on such principles, and organizing its powers
 in such form, as to them shall seem most likely to effect
 their safety and happiness.’ to get pcp(curve25519 cli)

More information about the cypherpunks mailing list