summaryrefslogtreecommitdiffstats
path: root/vendor/go.mau.fi/libsignal/serialize/LocalStorageProtocol.proto
blob: 8ae9c01ae688d16b26bac044b3f74dc6d8df0552 (plain) (blame)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// From https://github.com/signalapp/libsignal-protocol-c/blob/master/protobuf/LocalStorageProtocol.proto
syntax = "proto2";
package textsecure;

option java_package = "org.whispersystems.libsignal.state";
option java_outer_classname = "StorageProtos";

message SessionStructure {
  message Chain {
    optional bytes senderRatchetKey = 1;
    optional bytes senderRatchetKeyPrivate = 2;

    message ChainKey {
      optional uint32 index = 1;
      optional bytes  key   = 2;
    }

    optional ChainKey chainKey = 3;

    message MessageKey {
      optional uint32 index     = 1;
      optional bytes  cipherKey = 2;
      optional bytes  macKey    = 3;
      optional bytes  iv        = 4;
    }

    repeated MessageKey messageKeys = 4;
  }

  message PendingKeyExchange {
    optional uint32 sequence                 = 1;
    optional bytes  localBaseKey             = 2;
    optional bytes  localBaseKeyPrivate      = 3;
    optional bytes  localRatchetKey          = 4;
    optional bytes  localRatchetKeyPrivate   = 5;
    optional bytes  localIdentityKey         = 7;
    optional bytes  localIdentityKeyPrivate  = 8;
  }

  message PendingPreKey {
    optional uint32 preKeyId       = 1;
    optional int32  signedPreKeyId = 3;
    optional bytes  baseKey        = 2;
  }

  optional uint32 sessionVersion      = 1;
  optional bytes localIdentityPublic  = 2;
  optional bytes remoteIdentityPublic = 3;

  optional bytes rootKey              = 4;
  optional uint32 previousCounter     = 5;

  optional Chain senderChain          = 6;
  repeated Chain receiverChains       = 7;

  optional PendingKeyExchange pendingKeyExchange = 8;
  optional PendingPreKey      pendingPreKey      = 9;

  optional uint32 remoteRegistrationId = 10;
  optional uint32 localRegistrationId  = 11;

  optional bool needsRefresh = 12;
  optional bytes aliceBaseKey = 13;
}

message RecordStructure {
  optional SessionStructure currentSession   = 1;
  repeated SessionStructure previousSessions = 2;
}

message PreKeyRecordStructure {
  optional uint32 id        = 1;
  optional bytes  publicKey = 2;
  optional bytes  privateKey = 3;
}

message SignedPreKeyRecordStructure {
  optional uint32  id         = 1;
  optional bytes   publicKey  = 2;
  optional bytes   privateKey = 3;
  optional bytes   signature  = 4;
  optional fixed64 timestamp  = 5;
}

message IdentityKeyPairStructure {
  optional bytes publicKey  = 1;
  optional bytes privateKey = 2;
}

message SenderKeyStateStructure {
  message SenderChainKey {
    optional uint32 iteration = 1;
    optional bytes  seed      = 2;
  }

  message SenderMessageKey {
    optional uint32 iteration = 1;
    optional bytes  seed      = 2;
  }

  message SenderSigningKey {
    optional bytes public  = 1;
    optional bytes private = 2;
  }

  optional uint32           senderKeyId       = 1;
  optional SenderChainKey   senderChainKey    = 2;
  optional SenderSigningKey senderSigningKey  = 3;
  repeated SenderMessageKey senderMessageKeys = 4;
}

message SenderKeyRecordStructure {
  repeated SenderKeyStateStructure senderKeyStates = 1;
}