renumber fields, add timestamp

This commit is contained in:
Jeffrey Paul 2021-11-03 04:19:42 -07:00
parent 92b92c190d
commit 4fd76850da
1 changed files with 35 additions and 18 deletions

View File

@ -2,43 +2,54 @@ syntax = "proto3";
option go_package = "mfer";
import "google/protobuf/timestamp.proto";
message MFFile {
enum Version {
NONE = 0;
ONE = 1; // only one for now
}
Version version = 1;
bytes innerMessage = 2;
// required mffile root attributes 1xx
Version version = 101;
bytes innerMessage = 102;
// these are used solely to detect corruption/truncation
// and not for cryptographic integrity.
uint64 size = 3;
bytes sha256 = 4;
uint64 size = 103;
bytes sha256 = 104;
// 2xx for optional manifest root attributes
// think we might use gosignify instead of gpg:
// github.com/frankbraun/gosignify
//detached signature, ascii or binary
optional bytes signature = 5;
optional bytes signature = 201;
//full GPG key id
optional bytes signer = 6;
optional bytes signer = 202;
//full GPG signing public key, ascii or binary
optional bytes signingPubKey = 7;
optional bytes signingPubKey = 203;
}
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;
// required attributes:
string path = 101;
uint64 size = 102;
// gotta have at least one:
repeated MFFileChecksum hashes = 201;
// optional per-file metadata
optional string mimeType = 301;
optional string mtime = 302;
optional string ctime = 303;
optional string atime = 304;
}
message MFFileChecksum {
// 1.0 golang implementation must write a multihash here
// it's ok to only ever use/verify sha256 multihash
bytes multiHash = 1;
}
@ -47,7 +58,13 @@ message MFFileInner {
NONE = 0;
ONE = 1; // only one for now
}
Version version = 1;
uint64 count = 2;
repeated MFFilePath files = 3;
Version version = 101;
// required manifest attributes:
uint64 fileCount = 102;
repeated MFFilePath files = 103;
// optional manifest attributes 2xx:
optional google.protobuf.Timestamp createdAt = 201;
}