|  |  |  | package textsecure;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | option java_package = "org.whispersystems.libaxolotl.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;
 | 
					
						
							|  |  |  | }
 |