23 Commits

Author SHA1 Message Date
rusty
8c7a90ff38 Update URL for docbook.xsl
Closes: #142
2025-09-24 10:21:00 -04:00
Andrew Ayer
4dd5c20243 Drop support for OpenSSL 1.0; fix compilation with OpenSSL 3 2025-09-23 20:37:48 -04:00
Andrew Ayer
2b1076108e Enable C++11 in Makefile 2017-09-10 12:24:52 -07:00
Wael M. Nasreddine
553c1b0387 crypto: fix for compatibility with openssl 1.1
Closes: #128
2017-09-10 11:33:23 -07:00
Andrew Ayer
e0b3bd754f Remove gnuism from Makefile
According to POSIX, $< is only valid with inference rules, not normal
target rules.
2015-06-13 10:54:50 -07:00
Andrew Ayer
f56911726a Makefile: refine man page rules
Rename HAS_DOCBOOK option to ENABLE_MAN.

Allow xsltproc to fetch the Docbook stylesheet from the Internet if it's
not installed locally.  This will hopefully make it easier for folks
to build the man page.
2015-05-30 19:52:29 -07:00
Andrew Ayer
5dc55c3b2a Makefile: refine man page rules 2015-05-30 19:09:01 -07:00
Andrew Ayer
ba250b87ad Add copyright notice to Makefile 2015-05-30 19:09:01 -07:00
Andrew Ayer
83b58eafa7 Overhaul Makefile
Support building the man page, but only if HAS_DOCBOOK variable set to "yes"
2015-05-30 19:09:01 -07:00
Andrew Ayer
44f70e6b48 Add Coprocess class
It provides a convenient way to spawn a process and read from/write to
its stdin/stdout.
2015-05-24 18:54:11 -07:00
Andrew Ayer
ede1461563 Makefile: create destination directories in make install 2015-03-10 08:29:31 -07:00
Wael M. Nasreddine
280bd43ac7 Makefile: The install target should depend git-crypt.
Signed-off-by: Andrew Ayer <agwa@andrewayer.name>
2015-01-07 20:06:45 -08:00
Jon Sailor
66a2266968 Pull out openssl code into separate crypto-openssl.cpp file
This will allow the use of different crypto libraries in the future.

Modified-by: Andrew Ayer <agwa@andrewayer.name>

  * Don't include openssl/err.h from git-crypt.cpp
  * Fix whitespace and other style to conform to project conventions
  * Remove unnecessary operators from Aes_ctr_encryptor
  * Rename crypto_init to init_crypto, for consistency with init_std_streams()
2014-07-23 19:22:48 -07:00
Andrew Ayer
f6e3b63a93 Makefile: avoid use of non-standard $^ 2014-07-07 21:49:12 -07:00
Andrew Ayer
bec9e7f318 Add parse_options helper for parsing cmd line args 2014-06-29 13:49:10 -07:00
Andrew Ayer
0774ed018c Lay groundwork for Windows support
Move Unix-specific code to util-unix.cpp, and place Windows equivalents
in util-win32.cpp.  Most of the Windows functions are just stubs at
the moment, and we need a build system that works on Windows.
2014-06-12 21:23:02 -07:00
Simon Kotlinski
c2a9e48de5 Makefile: don't compile with -ansi
Fixes build on Cygwin due to [1].  Closes #19 on GitHub.

[1] https://cygwin.com/ml/cygwin/2014-01/msg00130.html
2014-06-08 15:57:19 -07:00
Andrew Ayer
7687d11219 Initial GPG support
Run 'git-crypt add-collab KEYID' to authorize the holder of the given
GPG secret key to access the encrypted files.  The secret git-crypt key
will be encrypted with the corresponding GPG public key and stored in the
root of the Git repository under .git-crypt/keys.

After cloning a repo with encrypted files, run 'git-crypt unlock'
(with no arguments) to use a secret key in your GPG keyring to unlock
the repository.

Multiple collaborators are supported, however commands to list the
collaborators ('git-crypt ls-collabs') and to remove a collaborator
('git-crypt rm-collab') are not yet supported.
2014-03-28 14:02:25 -07:00
Andrew Ayer
6a454b1fa1 Major revamp: new key paradigm, groundwork for GPG support
The active key is now stored in .git/git-crypt/key instead of being
stored outside the repo.  This will facilitate GPG support, where the
user may never interact directly with a key file.  It's also more
convenient, because it means you don't have to keep the key file
around in a fixed location (which can't be moved without breaking
git-crypt).

'git-crypt init' now takes no arguments and is used only when initializing
git-crypt for the very first time.  It generates a brand-new key, so
there's no longer a separate keygen step.

To export the key (for conveyance to another system or to a collaborator),
run 'git-crypt export-key FILENAME'.

To decrypt an existing repo using an exported key, run 'git-crypt unlock
KEYFILE'.  After running unlock, you can delete the key file you passed
to unlock.

Key files now use a new format that supports key versioning (which will
facilitate secure revocation in the future).

I've made these changes as backwards-compatible as possible.  Repos
already configured with git-crypt will continue to work without changes.
However, 'git-crypt unlock' expects a new format key.  You can use
the 'git-crypt migrate-key KEYFILE' command to migrate old keys to the
new format.

Note that old repos won't be able to use the new commands, like
export-key, or the future GPG support.  To migrate an old repo, migrate
its key file and then unlock the repo using the unlock command, as
described above.

While making these changes, I cleaned up the code significantly, adding
better error handling and improving robustness.

Next up: GPG support.
2014-03-23 11:40:29 -07:00
Andrew Ayer
73bf395b3b Makefile: add DESTDIR support to 'make install' 2014-01-04 10:51:12 -08:00
Andrew Ayer
5e89e6d4c7 Add 'make install' target 2013-02-07 08:08:21 -08:00
Andrew Ayer
8b5c3d5c88 Compile with 'c++' instead of 'g++'
We're not relying on any g++-specific features.
2013-01-24 22:00:12 -08:00
Andrew Ayer
6e3dd5a8d3 Initial version 2012-07-06 15:38:40 -07:00