Commit Graph
35 Commits
Author SHA1 Message Date
irenarindos e567bb97e6 feat(bsr): instantiate BSR session for playback 2023-05-31 12:18:20 +00:00
Timothy Messier 46e1752283 feat(bsr/fstest): Support read mode
This updates the fstest implementation of a storage.FS to support
opening sub containers and files in read-only mode.

Now when calling `SubContainer`:

- If using `storage.WithCreateFile`, an error is returned if the
  container already exists.
- If not using `storage.WithCreateFile` and error is returned if the
  container does *not* exist.

When calling `OpenFile`:

- on a container that was created with `storage.ReadOnly`, an error is
  returned if attempting to open the file wth `storage.ReadWrite`.
- with `storage.WithCreateFile`, an existing file is replaced with a new
  empty file, (ie "truncated").
- without `storage.WithCreateFile`, an error is returned if the file
  does not exist.
2023-05-31 12:18:20 +00:00
Timothy Messier e9c7e373e9 feat(bsr/fstest): Implement Open method 2023-05-31 12:18:20 +00:00
irenarindos d06c9b2933 feat(bsr): populate container meta from meta files 2023-05-31 12:18:20 +00:00
irenarindos 4e5401da7d bsr(chunk decode): fix intermittent error message inconsistency 2023-05-31 12:18:20 +00:00
Timothy Messier 5d0a9b706e feat(bsr): Add ChunkScanner
The scanner can be used to read any BSR data file. When creating a new
scanner, it will first verify the BSR magic string. Individual Chunks
can then be read back by calling Scan. The scanner will compute a
sha256sum while it is reading chunks. If the scanner was created using
the WithSha256Sum option, it will compare the computed checksum with the
one provided via the option once the scanner encounters an end chunk
(DONE) or an io.EOF error from the reader. If the checksums do not
match, and error will be returned from Scan. The current sha256sum can
be returned from the scanner using the Sum method.

There is also a convenience function, ChunkWalk that can be used to call
a function on each Chunk returned by a scanner.
2023-05-31 12:18:20 +00:00
Timothy Messier f983a05a3e feat(bsr/ssh): Support decoding chunks
This adds a function for decoding all of the SSH Chunk types and
registers the function with the chunk types so that the bsr.ChunkDecode
can be used to decode SSH Chunks.
2023-05-31 12:18:20 +00:00
Timothy Messier fe870fc989 feat(bsr): Add ChunkDecoder
A ChunkDecoder can be used to BSR Chunks. Each call to Decode will read
the next chunk from the decoder's io.Reader. It handles decompressing
any compressed chunk data, and verifying the CRCs of each chunk.
2023-05-31 12:18:20 +00:00
Timothy Messier 648842f031 feat(bsr/checksum): Add function to load SHA256SUM
This provides a Sha256Sums type to store the information from a
SHA256SUM file in memory for easy lookup of the sums of files. It can be
used when checking the checksums of individual files without needing to
go back to disk.
2023-05-31 12:18:19 +00:00
Johan Brandhorst-Satzkorn 74d10da7b4 bsr: remove duplicate target scope info
We were storing the project ID both as part of the scope
and as a field directly on the target. Remove the extra field.
2023-05-31 12:18:19 +00:00
irenarindos 92df5cf8c7 feat(bsr): add worker information to session meta 2023-05-31 12:18:19 +00:00
irenarindos 200e7dca5a feat(bsr): add credentials to session meta 2023-05-31 12:18:19 +00:00
irenarindos 2ba780703f feat(bsr): add summary unavailable error 2023-05-31 12:18:17 +00:00
Jim 46348d7b49 fix (bsr/kms): use const time compare for sig 2023-05-31 12:18:16 +00:00
irenarindos 3e9a4bf03e feat(bsr): add VerifySignatureWithPubKey to kms methods 2023-05-31 12:18:16 +00:00
Timothy Messier 29c739e8b8 feat(bsr): Add function for generating a channel id 2023-05-31 12:18:16 +00:00
irenarindos 718536783c feat(bsr): expand session metadata 2023-05-31 12:18:16 +00:00
irenarindos 93afd24327 feat(bsr): add channel request types to chan callbacks 2023-05-31 12:18:15 +00:00
irenarindos 7ac73d7ba8 feat(bsr): Define types for summary data 2023-05-31 12:18:15 +00:00
irenarindos e29b844131 feat(bsr): improve error handling 2023-05-31 12:18:14 +00:00
irenarindos 47477e8fd6 feat(bsr): add BSR playback/conversion interfaces 2023-05-31 12:18:13 +00:00
irenarindos 444af9151c feat(bsr): Sync BSR keys 2023-05-31 12:18:13 +00:00
Timothy Messier 51e6e64d09 fix(bsr/checksum): Close after calling Stat 2023-05-31 12:18:12 +00:00
Timothy Messier 96f3c71cda test(bsr): Properly handle closed state for test fs implementation
The test implementation will now correctly mimic a real fs's Close
behavior. It will prevent reads and writes to a closed file or
container.
2023-05-31 12:18:12 +00:00
irenarindos b43830e66e feat(bsr): add protocol to sessionMeta 2023-05-31 12:18:12 +00:00
irenarindos 431b9d25a2 feat(bsr): use go 1.20 multierror 2023-05-31 12:18:11 +00:00
irenarindos ba476ca73b feat(bsr/ssh): Add SSH Request type chunks 2023-05-31 12:18:11 +00:00
Timothy Messier 26bd86fb07 feat(bsr): Add chunk encoder 2023-05-31 12:18:11 +00:00
Timothy MessierandIrena Rindos 2a31ddd881 feat(bsr): Define container and the required fs interfaces
Co-authored-by: Irena Rindos <irenarindos@users.noreply.github.com>
2023-05-31 12:18:11 +00:00
Jim ff9b3b0873 fix(bsr/kms): VerifySignatureWithBsrKey: handle invalid signature 2023-05-31 12:18:10 +00:00
Jim 9543af8765 feature (bsr/kms): add VerifySignatureWithBsrKey(...) 2023-05-31 12:18:10 +00:00
Timothy Messier 397a697731 feat(bsr): Define stubs for meta structures
These are used to provide the metadata about a session or connection
when writing a BSR and will be written to the corresponding .meta files
within a BSR.
2023-05-31 12:18:09 +00:00
Timothy Messier d15d2e3bc0 feat(bsr): Define required interface needed by storage 2023-05-31 12:18:09 +00:00
Jim aa10d1dbfe feat(KMS): add BsrKeys type and req. receiver functions 2023-05-31 12:18:09 +00:00
Timothy Messier 658bb27eeb feat(bsr): Define initial interfaces and types 2023-05-31 12:18:08 +00:00