package groupproto;

message SenderKeyMessage {
	optional uint32 id         = 1;
	optional uint32 iteration  = 2;
	optional bytes  ciphertext = 3;
  }
  
  message SenderKeyDistributionMessage {
	optional uint32 id         = 1;
	optional uint32 iteration  = 2;
	optional bytes  chainKey   = 3;
	optional bytes  signingKey = 4;
  }
  
  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;
}

message SenderKeyStateStructure {
    

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

message SenderKeyRecordStructure {
    repeated SenderKeyStateStructure senderKeyStates = 1;
}