Document build procedure and static compilation - pee - Pee a password manager;Pee - because you have to...
(HTM) git clone git://vernunftzentrum.de/pee.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit 9ba089248bdad4bee51c949259845d22b7a71df6
(DIR) parent 7dfe50ba306ef7b0b826a0ad302ea1a3016f5b34
(HTM) Author: Christian Kellermann <ckeen@pestilenz.org>
Date: Fri, 8 Jan 2016 13:04:17 +0100
Document build procedure and static compilation
Diffstat:
README.rst | 80 +++++++++++++++++++++++++++++++
static-compilation.sh | 30 ++++++++++++++++++++++++++++++
2 files changed, 110 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/README.rst b/README.rst
@@ -0,0 +1,80 @@
+Pee - A password manager...because you have to
+==============================================
+
+This is the README file for pee a password store/manager for the command line.
+
+Pee will help you choose a secure password for every website or login you need.
+You can annotate the password with additional hints, such as password recovery or other "security" questions.
+The passwords are stored in an encrypted password store.
+The contents are encrypted using a passphrase.
+
+Pee will protect you against the password storage getting lost.
+Pee will not protect you against an attacker that can access all of your computer's RAM.
+Pee will not protect you against keyloggers as the passphrase to your store will be logged.
+
+Pee will output the password on the console by default.
+
+If you want to have it available for copy and paste, you should use an external program like xsel.
+
+Installing
+----------
+
+After unpacking the source build it using the CHICKEN Scheme compiler.
+
+ $ chicken-install blob-utils getopt-long matchable stty tweetnacl
+ $ csc -s -Jc crypto-helper.scm blake2s-ref.c -C -std=c99
+ $ csc pee.scm
+
+
+Building a statically linked executable
+---------------------------------------
+
+Sometimes depending on the globally installed CHICKEN runtime is not desireable.
+To build a statically linked version of Pee use the provided static-compilation.sh shell script.
+The script will try to fetch all dependencies in the current directory, compiles the necessary units.
+If all goes well it will clean up afterwards.
+If not you will have to manually do the clean up.
+If you have cloned from the git repo, a git clean -f will do that for you.
+
+Dependencies
+------------
+
+Pee is written in CHICKEN Scheme, the cryptography parts are provided by the tweetnacl egg.
+The BLAKE2s code has been taken verbatim from the reference implementations and is included in the pee source code.
+Other eggs pee depends on are: srfi-1, srfi-4, getopt-long, matchable and stty.
+
+https://github.com/BLAKE2/BLAKE2.git
+
+Cryptography
+------------
+
+The key is derived using the BLAKE2s key derivation function.
+For symmertric encryption the tweetnacl library is used.
+
+Passwords are generated using OpenBSD's arc4random() RNG.
+Passwords are choosen from this set of characters "abcdefhijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()-=~?/\|+,:.<>{}[]".
+
+
+
+License
+-------
+
+The blake2s Hash function has been licensed under a Creative Commons CC0 1.0 Universal license.
+The tweetnacl code is in the public domain.
+The tweetnacl egg is BSD licensed.
+
+The rest of the pee code comes with a ISC license.
+
+Copyright (c) 2016 Christian Kellermann <ckeen@pestilenz.org>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
(DIR) diff --git a/static-compilation.sh b/static-compilation.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+chicken-install -r blob-utils >/dev/null || echo Fetching blob-utils has failed.
+chicken-install -r check-errors >/dev/null || echo Fetching check-errors has failed.
+chicken-install -r foreigners >/dev/null || echo Fetching foreigners has failed.
+chicken-install -r getopt-long >/dev/null || echo Fetching getopt-long has failed.
+chicken-install -r matchable >/dev/null || echo Fetching matchable has failed.
+chicken-install -r setup-helper >/dev/null || echo Fetching setup-helper has failed.
+chicken-install -r string-utils >/dev/null || echo Fetching string-utils has failed.
+chicken-install -r stty >/dev/null || echo Fetching stty has failed.
+chicken-install -r tweetnacl >/dev/null || echo Fetching tweetnacl has failed.
+
+csc -emit-import-library matchable -c matchable/matchable.scm -o matchable.o
+csc -unit blob-hexadecimal -uses type-checks -uses to-hex -emit-import-library blob-hexadecimal -c blob-utils/blob-hexadecimal.scm -o blob-hexadecimal.o
+csc -unit crypto-helper -uses blob-hexadecimal -emit-import-library crypto-helper -c crypto-helper.scm -c blake2s-ref.c -o crypto-helper.o -C --std=c99
+csc -unit foreigners -uses matchable -emit-import-library foreigners -c foreigners/foreigners.scm -o foreigners.o
+csc -unit getopt-long -uses srfi-13 -uses srfi-14 -uses data-structures -uses matchable -Jc getopt-long/getopt-long.scm -o getopt-long.o
+csc -unit matchable -emit-import-library matchable -c matchable/matchable.scm -o matchable.o
+csc -unit setup-api -emit-import-library setup-api -c ../chicken-core/setup-api.scm -o setup-api.o
+csc -unit setup-helper -uses setup-api -emit-import-library setup-helper -c setup-helper/setup-helper.scm -o setup-helper.o
+csc -unit to-hex -emit-import-library to-hex -c string-utils/to-hex.scm -o to-hex.o
+csc -unit tweetnacl -emit-import-library tweetnacl -c tweetnacl/tweetnacl.scm -c tweetnacl/tweetnacl.impl.c -C -I./tweetnacl -o tweetnacl.o
+csc -unit type-checks -uses type-errors -J -c ./check-errors/type-checks.scm -o type-checks.o
+csc -unit type-errors -J -c ./check-errors/type-errors.scm -o type-errors.o
+csc -uses matchable -uses foreigners -uses setup-helper -c stty/stty.scm -emit-import-library stty -unit stty -o stty.o
+csc -uses srfi-1 -uses srfi-4 -uses utils -uses stty -uses crypto-helper -uses tweetnacl -uses getopt-long -uses matchable -c pee.scm -o pee.o
+csc -static *o ./tweetnacl/tweetnacl.impl.o -o pee
+
+rm -r matchable blob-utils check-errors foreigners getopt-long setup-helper string-utils stty tweetnacl
+rm *.o *.import.*