-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathblobfish.proto
70 lines (58 loc) · 1.74 KB
/
blobfish.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
syntax = "proto2";
package blobfish;
option java_package = "com.github.edipermadi.security.blobfish.generated";
option java_outer_classname = "BlobfishProto";
// blobfish blob container definition
// @author Edi Permadi
message Blobfish {
required uint64 magic = 1;
required uint32 version = 2;
required Header header = 3;
required Body body = 4;
// container header definition
message Header {
required Sender sender = 1;
repeated Recipient recipient = 2;
optional Password password = 3;
required uint64 created = 4;
// container sender detail
message Sender {
required bytes signing_certificate = 1;
}
// container symmetric-key protection for recipient recipient
message Recipient {
required bytes ciphered_key = 1;
required bytes hash_certificate = 2;
}
// container password-based protection definition
message Password {
required uint32 iteration = 1;
required bytes salt = 2;
}
}
message Body {
repeated Blob blob = 1;
// blob entry
message Blob {
required uint32 id = 1;
required Entry payload = 2;
required Entry metadata = 3;
}
// cipher entry
message Entry {
required bytes ciphertext = 1;
required bytes hmac = 2;
required bytes signature = 3;
}
// plain payload
message Payload {
required bytes data = 4;
}
// plain metadata
message Metadata {
required string path = 1;
repeated string tags = 2;
required string mime_type = 3;
}
}
}