{"id":24122192,"url":"https://github.com/tlinden/pcp","last_synced_at":"2025-09-18T11:32:53.083Z","repository":{"id":144613053,"uuid":"13938897","full_name":"TLINDEN/pcp","owner":"TLINDEN","description":"Pretty Curved Privacy","archived":false,"fork":false,"pushed_at":"2017-08-23T11:01:45.000Z","size":2425,"stargazers_count":122,"open_issues_count":0,"forks_count":3,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-01T17:09:26.854Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TLINDEN.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-10-28T21:20:50.000Z","updated_at":"2024-01-21T15:55:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"680ab44b-0037-4556-aab7-ecdfc8facf0e","html_url":"https://github.com/TLINDEN/pcp","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/TLINDEN/pcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLINDEN%2Fpcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLINDEN%2Fpcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLINDEN%2Fpcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLINDEN%2Fpcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TLINDEN","download_url":"https://codeload.github.com/TLINDEN/pcp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLINDEN%2Fpcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275757846,"owners_count":25523112,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-11T11:38:52.934Z","updated_at":"2025-09-18T11:32:53.051Z","avatar_url":"https://github.com/TLINDEN.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"DESCRIPTION\n    Pretty Curved Privacy (pcp1) is a commandline utility which can be used\n    to encrypt files. pcp1 uses eliptc curve cryptography for encryption\n    (CURVE25519 by Dan J. Bernstein). While CURVE25519 is no worldwide\n    accepted standard it hasn't been compromised by the NSA - which might be\n    better, depending on your point of view.\n\n    Caution: since CURVE25519 is no accepted standard, pcp1 has to be\n    considered as experimental software. In fact, I wrote it just to learn\n    about the curve and see how it works.\n\n    Beside some differences it works like GNUPG. So, if you already know how\n    to use gpg, you'll feel almost home.\n\nQUICKSTART\n    Lets say, Alicia and Bobby want to exchange encrypted messages. Here's\n    what the've got to do.\n\n    First, both have create a secret key:\n\n     Alicia                             Bobby\n     pcp1 -k                            pcp1 -k\n\n    After entering their name, email address and a passphrase to protect the\n    key, it will be stored in their vault file (by default ~/.pcpvault).\n\n    Now, both of them have to export the public key, which has to be\n    imported by the other one. With pcp you can export the public part of\n    your primary key, but the better solution is to export a derived public\n    key especially for the recipient:\n\n     Alicia                             Bobby\n     pcp1 -p -r Bobby -O alicia.pub     pcp1 -p -r Alicia -O bobby.pub\n\n    They've to exchange the public key somehow (which is not my problem at\n    the moment, use ssh, encrypted mail, whatever). Once exchanged, they\n    have to import it:\n\n     Alicia                             Bobby\n     pcp1 -K -I bobby.pub               pcp1 -K -I alicia.pub\n\n    They will see a response as this when done:\n\n     key 0x29A323A2C295D391 added to .pcpvault.\n\n    Now, Alicia finally writes the secret message, encrypts it and sends it\n    to Bobby, who in turn decrypts it:\n\n     Alicia                             Bobby\n     echo \"Love you, honey\" \u003e letter\n     pcp1 -e -r Bobby -I letter -O letter.asc\n     cat letter.asc | mail bobby@foo.bar\n\n                                        pcp1 -d -I letter.asc | less\n\n    And that's it.\n\n    Please note the big difference to GPG though: both Alicia AND Bobby have\n    to enter the passphrase for their secret key! That's the way CURVE25519\n    works: you encrypt a message using your secret key and the recipients\n    public key and the recipient does the opposite, he uses his secret key\n    and your public key to actually decrypt the message.\n\n    Oh - and if you're wondering why I named them Alicia and Bobby: I was\n    just sick of Alice and Bob. We're running NSA-free, so we're using other\n    sample names as well.\n\nFILES AND PIPES\n    Pcp behaves like any other unix tool. If not otherwise specified it will\n    read input from standard input (STDIN) and print output to standard\n    output (STDOUT). For instance:\n\n     pcp1 -e -O output\n\n    will read the text to be encrypted from standard input, because -I has\n    not been specified. It works the same with -O:\n\n     pcp1 -e -I myfile\n\n    In this case the encrypted result will be written to standard output.\n\n    Therefore it is possible to use pcp within pipes. Another more realistic\n    example:\n\n     ssh remote cat file | pcp1 -ez | mailx -s 'as requested' bob@somewhere\n\n    here we encrypt a file symmetrically without downloading it from a\n    remote ssh server and sending the encrypted result via email to someone.\n\n    The behavior is the same with any other functionality where files are\n    involved like importing or exporting keys. However, there's one\n    exception: If the option -X (--password-file) has been used and is set\n    to -, then this will take precedence over any other possible use of\n    standard input. So if you want to encrypt something and don't specify an\n    input file you cannot use -X -, and vice versa. IF you use -X - the\n    passphrase will be read from standard input, which then can't be used\n    further for input files elsewhere. Pcp will exit with an error in such a\n    case.\n\nINSTALLATION\n    There are currently no packages available, so pcp has to be compiled\n    from source. Follow these steps:\n\n    First, you will need libsodium:\n\n     git clone git://github.com/jedisct1/libsodium.git\n     cd libsodium\n     ./autogen.sh\n     ./configure \u0026\u0026 make check\n     sudo make install\n     sudo ldconfig\n     cd ..\n\n    If you want to have JSON support, you'll need to install the Jansson\n    library (optional):\n\n     git clone git://github.com/akheron/jansson.git\n     cd jansson\n     autoreconf -i\n     ./configure \u0026\u0026 make\n     sudo make install\n     cd ..\n\n    In order to use the python binding, you need to install the cffi python\n    package.\n\n    Next, build pcp:\n\n     git clone git://github.com/tlinden/pcp.git\n     cd pcp\n     ./configure\n     sudo make install\n     cd ..\n\n    Optionally, you might run the unit tests:\n\n     make test\n\nDOCUMENTATION\n    To learn how to use pcp, read the manpage:\n\n     man pcp1\n\nCOPYRIGHT\n    Copyright (c) 2013-2015 by T.v.Dein \u003ctom AT vondein DOT org\u003e\n\nADDITIONAL COPYRIGHTS\n    ZeroMQ Z85 encoding routine\n         Copyright (c) 2007-2013 iMatix Corporation\n         Copyright (c) 2009-2011 250bpm s.r.o.\n         Copyright (c) 2010-2011 Miru Limited\n         Copyright (c) 2011 VMware, Inc.\n         Copyright (c) 2012 Spotify AB\n\n    Tarsnap readpass helpers\n         Copyright 2009 Colin Percival\n\n    jen_hash() hash algorithm\n         Bob Jenkins, Public Domain.\n\n    UTHASH hashing macros\n         Copyright (c) 2003-2013, Troy D. Hanson\n\n    Random art image from OpenSSH keygen\n         Copyright (c) 2000, 2001 Markus Friedl.  All rights reserved.\n\n         Comitted by Alexander von Gernler in rev 1.7.\n\n    Every incorporated source code is opensource and licensed under the GPL\n    as well.\n\nAUTHORS\n    *T.v.Dein \u003ctom AT vondein DOT org*\u003e\n\nLICENSE\n    Licensed under the GNU GENERAL PUBLIC LICENSE version 3.\n\nHOME\n    The homepage of Pretty Curved Privacy can be found on\n    http://www.daemon.de/PrettyCurvedPrivacy. The source is on Github:\n    https://github.com/TLINDEN/pcp\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlinden%2Fpcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftlinden%2Fpcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlinden%2Fpcp/lists"}