# Format: - , , , , , !- 0, 3, mdcarr941@gmail.com, 2ebb8a Fix bug where writing to a block that already has a Writecap in its header using the creds of a different node produces an invalid signature (a signature using the creds of the other node). - 1 Fix BufSectored so it doesn't have to write to the first sector every flush. - 2 Track position and dirty-ness in Trailered. - 3 Implement a stream which is both Read and Write and which can transparently compress and decompress data written to and read from it. - 4 Remove TryCompose? !- 5, 1, mdcarr941@gmail.com, bd6904, mdcarr941@gmail.com, bd6904 Move crypto::{encrypt, decrypt} into corresponding {EncrypterExt, DecrypterExt}. - 6 Create an enum to eliminate the use of Block trait objects? - 7 Add a ser_sign_into method to SignerExt which serializes a value into a provided Vec and returns a signature over this data. Update BlockStream::flush_integ to use this method. - 8 Convert all sector sizes to u64 for portability. - 9 Create an extension trait for u64 with a method for adding an i64 to it. Use this in SecretStream::seek, Trailered::seek and SectoredBuf::seek. - 10 Create a struct which digests data written to it before passing it to an underlying Write. !- 11, 3, mdcarr941@gmail.com, bd6904, mdcarr941@gmail.com, bd6904 Create a struct called WritecapBody to contain the fields of Writecap which go into the signature calculation so that WritecapSigInput is no longer required. - 12, 8, mdcarr941@gmail.com, 2ebb8a, Create a struct for managing the directory used to store blocks in the file system. Design and implement an API for creating, opening, moving, copying, deleting and linking blocks. This API must be codified by a trait to allow the implementation to be changed in the future. - 13 Change the Hash enum so it contains structs for each hash type. Unify these structs with the node structs used in the VecMerkleTree. !- 14, 13, mdcarr941@gmail.com, bd6904 Refactor btlib so that most of the types are in their own modules. This is needed to encourage modularity and weak coupling, as it reduces the amount of code that fields and helper functions are visible to. - 15, 13, mdcarr941@gmail.com, 58d1f6, Create a new crate which implements a FUSE daemon. - 16, 5, mdcarr941@gmail.com, 866533, Add the inherit field, which contains the crypto link from the parent block key to the current block key, to the block metadata. - 17, 13, mdcarr941@gmail.com, 8665339, SECURITY: Design and implement a mechanism to protect the keys in block's metadata dictionary from being correlated with one another. This mechanism must allow a principal with a readcap to be able to find their readcap and to rotate the block and create new readcaps for each of the principals in the dictionary, but prevent an attacker from being able to identify when two blocks contains readcaps for the same principal. - 18, 3, mdcarr941@gmail.com, 8665339, SECURITY: Remove the path field from BlockMeta. It isn't needed as the block path should be independently know by any verified. This will ensure that path names are not stored in cleartext. - 19, 21, mdcarr941@gmail.com, 8665339, Integrate with tokio and add async methods to all of the stream types. - 20, 5, mdcarr941@gmail.com, ef1d43, Rewrite BlockPath to be more efficient by ensuring that all characters in a path are contiguous in memory.