4 both client and server send '\n' terminated ascii of the form
6 venti-<versions>-<software>
9 <software> = is a software id which is ignored but may be useful for debugging
11 If the server and client have the same version number then this
12 version is used. Otherwise backup to the greatest common
13 major version number, e.g. 1.00 2.00 etc. If no version in
14 common then abort. The idea is both client and server should
15 support a continusous range of major versions. The minor version
16 numbers are used for development purposes.
18 After protocol negotiation switch to binary format
20 all numbers sent big endian
22 strings are sent with 2 byte length without nulls and in utf-8 max size of 1K
30 client manages the tid space. Until session is established tid must equal 0.
31 i.e. only one outstanding op.
52 ==============================================
61 version:string; know to be supported by both
63 uhash[20] use for cipher boot strapping
68 compressor[ncompressor];
71 shash[20]; use for cipher bott strapping
75 use srp style authentication
77 N is safe prime 1024 bits - find a good prime!
79 x = H("venti" H(sid) H(uid) H(password))
85 u = first four bytes of H(B)
86 S = (B - g^x) ^ (a + u*x) = (A * v^u) ^ b
88 M1 = H(H(versions) H(THello) H(RHello) A B K)
104 length[2] max 56*1024
118 ============================================================
120 simplified access when trusting the server
121 reduces network bandwidth since pointer blocks are not
122 sent to the client - can also enable permission checking
144 ==============================================
146 maybe some clients should be required to navigate to block via root nodes.
147 This would enable permission checking via access to the root node.
164 ntag[2] can reuse a tag to do an implict clunk
176 ============================
188 score[20]* the number of hashes can be less than fanout when the
194 pointersize[2] - pointer block size
195 datasize[2] - data blocks size
197 size[7] in bytes - determines pointer depth - intermidate truncated block count as full
198 score[20] root of pointer blocks or data block
200 ============================
204 (1<<1) ModeOtherWrite
207 (1<<4) ModeGroupWrite
210 (1<<7) ModeOwnerWrite
216 (1<<13) ModeExclusive
218 (1<<15) ModeDir - duplicates dir entry
222 (1<<19) ModeTemporary
223 (1<<18) ModeCompressed
224 (1<<19) ModeEncrypted
238 name: string /* must be first */
258 free[2] - used to determine if work compacting
259 maxindex[2] - size of index table in bytes
263 per OS directory entries?