diff options
author | root <root@localhost> | 2013-02-14 00:00:00 +0000 |
---|---|---|
committer | root <root@localhost> | 2013-02-14 00:00:00 +0000 |
commit | cc3fd5b98563adfeeb95b4b6801b0f4c80213066 (patch) | |
tree | 1876a0db205e40b69525d79d8ebd039af960d348 | |
parent | b6cd6f71385fb22cd4bc28cbd7f2c7787c0242bd (diff) | |
download | git-remote-gcrypt-cc3fd5b98563adfeeb95b4b6801b0f4c80213066.zip git-remote-gcrypt-cc3fd5b98563adfeeb95b4b6801b0f4c80213066.tar.gz git-remote-gcrypt-cc3fd5b98563adfeeb95b4b6801b0f4c80213066.tar.bz2 |
Edit the summary of the repository format/process
-rw-r--r-- | README.rst | 55 |
1 files changed, 31 insertions, 24 deletions
@@ -114,30 +114,37 @@ Notes Repository Format ................. -:: - - EncSign(X) is sign+encrypt to a PGP key holder - Encrypt(K,X) is symmetric encryption - Hash(X) is SHA-256 - - B: branch list - L: list of the hash (Hi) and key (Ki) for each packfile - R: Repository ID - - Store Manifest as EncSign(B || L || R) - Store each packfile P as P' = Encrypt(Ki, P) in filename Hi - where Hi = Hash(P') and Ki is a random string - - To read the repository - - decrypt+verify Manifest using private key -> (B, L, R) - warn if R does not match saved Repository ID for this remote - for Hi, Ki in L: - download file Hi from the server -> P' - verify Hash(P') matches Hi - decrypt P' using Ki -> P then open P with git - - Only packs mentioned in L are downloaded. +``EncSign(X)`` + Sign and Encrypt to GPG key holder +``Encrypt(K,X)`` + Encrypt using symmetric-key algorithm +``Hash(X)`` + SHA-2/256 + +``B`` + branch list +``L`` + list of the hash (``Hi``) and key (``Ki``) for each packfile +``R`` + Repository ID + +| +| To write the repository: +| +| Store each packfile ``P`` as ``P'`` = ``Encrypt(Ki, P)`` in filename ``Hi`` +| where ``Ki`` is a new random string and ``Hi = Hash(P')`` +| Store ``EncSign(B || L || R)`` in the manifest +| +| To read the repository: +| +| Decrypt and verify manifest using GPG keyring ``-> (B, L, R)`` +| Warn if ``R`` does not match saved Repository ID for this remote +| ``for each Hi, Ki in L``: +| Get file ``Hi`` from the server ``-> P'`` +| Verify ``Hash(P')`` matches ``Hi`` +| Decrypt ``P'`` using ``Ki`` -> ``P`` then open ``P`` with git +| +| Only packs mentioned in ``L`` are downloaded. Manifest file ............. |