URI: 
       tInitial commit - safe - password protected secret keeper
  HTML git clone git://git.z3bra.org/safe.git
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 4e2116da7d696a189eee862c570109a0fc4287f8
  HTML Author: z3bra <contactatz3bradotorg>
       Date:   Wed, 20 Feb 2019 13:04:28 +0100
       
       Initial commit
       
       Diffstat:
         A LICENSE                             |      13 +++++++++++++
         A README                              |      23 +++++++++++++++++++++++
         A arg.h                               |      50 +++++++++++++++++++++++++++++++
         A mkfile                              |      35 +++++++++++++++++++++++++++++++
         A safe.1                              |      22 ++++++++++++++++++++++
         A safe.c                              |      24 ++++++++++++++++++++++++
       
       6 files changed, 167 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/LICENSE b/LICENSE
       t@@ -0,0 +1,13 @@
       +Copyright (c) 2015-2016 Willy Goiffon <contact@z3bra.org>
       +
       +Permission to use, copy, modify, and/or 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/README b/README
       t@@ -0,0 +1,23 @@
       +# safe
       +
       +Store your secrets in an encrypted safe, protected by a password.
       +
       +## usage
       +
       +        safe [-la] [secret..]
       +
       +        # add a secret to your safe
       +        echo 'This is secret!' | safe -a secret
       +
       +        # retrieve a secret from your safe
       +        safe secret
       +
       +## goals
       +
       ++ Only require a master password to unlock
       ++ Provide a way to open/lock the safe (agent?)
       ++ Store any kind of file
       ++ Do not expose file hierarchy if locked
       +
       +## license
       +This software is licensed under the ISC license, see the LICENSE file provided.
   DIR diff --git a/arg.h b/arg.h
       t@@ -0,0 +1,50 @@
       +/*
       + * Copy me if you can.
       + * by 20h
       + */
       +
       +#ifndef ARG_H__
       +#define ARG_H__
       +
       +extern char *argv0;
       +
       +/* use main(int argc, char *argv[]) */
       +#define ARGBEGIN        for (argv0 = *argv, argv++, argc--;\
       +                                        argv[0] && argv[0][0] == '-'\
       +                                        && argv[0][1];\
       +                                        argc--, argv++) {\
       +                                char argc_;\
       +                                char **argv_;\
       +                                int brk_;\
       +                                if (argv[0][1] == '-' && argv[0][2] == '\0') {\
       +                                        argv++;\
       +                                        argc--;\
       +                                        break;\
       +                                }\
       +                                int i_;\
       +                                for (i_ = 1, brk_ = 0, argv_ = argv;\
       +                                                argv[0][i_] && !brk_;\
       +                                                i_++) {\
       +                                        if (argv_ != argv)\
       +                                                break;\
       +                                        argc_ = argv[0][i_];\
       +                                        switch (argc_)
       +
       +#define ARGEND                        }\
       +                        }
       +
       +#define ARGC()                argc_
       +
       +#define EARGF(x)        ((argv[0][i_+1] == '\0' && argv[1] == NULL)?\
       +                                ((x), abort(), (char *)0) :\
       +                                (brk_ = 1, (argv[0][i_+1] != '\0')?\
       +                                        (&argv[0][i_+1]) :\
       +                                        (argc--, argv++, argv[0])))
       +
       +#define ARGF()                ((argv[0][i_+1] == '\0' && argv[1] == NULL)?\
       +                                (char *)0 :\
       +                                (brk_ = 1, (argv[0][i_+1] != '\0')?\
       +                                        (&argv[0][i_+1]) :\
       +                                        (argc--, argv++, argv[0])))
       +
       +#endif
   DIR diff --git a/mkfile b/mkfile
       t@@ -0,0 +1,35 @@
       +CC = cc
       +LD = ${CC}
       +
       +PREFIX = /usr/local
       +MANPREFIX = ${PREFIX}/man
       +
       +CPPFLAGS =
       +CFLAGS = -g -Wall -Wextra -pedantic
       +LDFLAGS =
       +LDLIBS = -lcrypto
       +
       +BIN = safe
       +SRC = ${BIN}.c
       +OBJ = ${SRC:%.c=%.o}
       +
       +${BIN}: $OBJ
       +        $LD -o $target $prereq $LDFLAGS $LDLIBS
       +
       +%.o: %.c
       +        $CC $CPPFLAGS $CFLAGS -c $stem.c
       +
       +clean:V:
       +        rm -f $OBJ ${BIN}
       +
       +install:V: ${BIN}
       +        mkdir -p ${DESTDIR}${PREFIX}/bin
       +        cp ${BIN} ${DESTDIR}${PREFIX}/bin/${BIN}
       +        chmod 755 ${DESTDIR}${PREFIX}/bin/${BIN}
       +        mkdir -p ${DESTDIR}${MANPREFIX}/man1
       +        cp ${BIN}.1 ${DESTDIR}${MANPREFIX}/man1/${BIN}.1
       +        chmod 644 ${DESTDIR}${MANPREFIX}/man1/${BIN}.1
       +
       +uninstall:V:
       +        rm ${DESTDIR}${PREFIX}/bin/${BIN}
       +        rm ${DESTDIR}${MANPREFIX}/man1/${BIN}.1
   DIR diff --git a/safe.1 b/safe.1
       t@@ -0,0 +1,21 @@
       +.Dd 2019-02-20
       +.Dt PM 1
       +.Os POSIX.1-2008
       +.Sh NAME
       +.Nm safe
       +.Nd Digital safe for your secrets
       +.Sh SYNOPSIS
       +.Nm
       +.Op Fl h
       +.Sh DESCRIPTION
       +.Nm
       +stores secrets (files) encrypted on your disk, and lets you retrieve them,
       +given that you have the password.
       +.Bl -tag -width Ds
       +.It Fl h
       +Print a quick usage text.
       +.El
       +.Sh SEE ALSO
       +.Xr openssl 1 ,
       +.Sh AUTHORS
       +.An Willy Goiffon Aq Mt contact@z3bra.org
       +\ No newline at end of file
   DIR diff --git a/safe.c b/safe.c
       t@@ -0,0 +1,24 @@
       +#include <stdio.h>
       +#include <stdlib.h>
       +
       +#include "arg.h"
       +
       +char *argv0;
       +
       +void
       +usage(void)
       +{
       +        fprintf(stderr, "usage: %s [-h]\n", argv0);
       +        exit(1);
       +}
       +
       +int
       +main(int argc, char *argv[])
       +{
       +        ARGBEGIN {
       +        default:
       +                usage();
       +        } ARGEND
       +
       +        return 0;
       +}