From cc3fd5b98563adfeeb95b4b6801b0f4c80213066 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 14 Feb 2013 00:00:00 +0000 Subject: Edit the summary of the repository format/process --- README.rst | 55 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 24 deletions(-) (limited to 'README.rst') diff --git a/README.rst b/README.rst index aef6ecd..a1a7f01 100644 --- a/README.rst +++ b/README.rst @@ -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 ............. -- cgit v1.2.3