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.*