syntax = "proto3"; option go_package = "mfer"; message MFFile { enum Version { NONE = 0; ONE = 1; // only one for now } Version version = 1; bytes innerMessage = 2; // these are used solely to detect corruption/truncation // and not for cryptographic integrity. uint64 size = 3; bytes sha256 = 4; // think we might use gosignify instead of gpg: // github.com/frankbraun/gosignify //detached signature, ascii or binary optional bytes signature = 5; //full GPG key id optional bytes signer = 6; //full GPG signing public key, ascii or binary optional bytes signingPubKey = 7; } message MFFilePath { string path = 1; uint64 size = 2; // when verifying, count(hashes) must be > 0. optional repeated MFFileChecksum hashes = 201; optional string mimeType = 101; optional string mtime = 102; optional string ctime = 103; optional string atime = 104; } message MFFileChecksum { bytes multiHash = 1; } message MFFileInner { enum Version { NONE = 0; ONE = 1; // only one for now } Version version = 1; uint64 count = 2; repeated MFFilePath files = 3; }