Page MenuHomePhabricator

D7062.diff
No OneTemporary

D7062.diff

diff --git a/shared/protos/identity_client.proto b/shared/protos/identity_client.proto
--- a/shared/protos/identity_client.proto
+++ b/shared/protos/identity_client.proto
@@ -33,6 +33,22 @@
// Called by clients to get a nonce for a Sign-In with Ethereum message
rpc GenerateNonce(Empty) returns (GenerateNonceResponse) {}
+
+ // X3DH actions
+
+ // Called by clients to get all device keys associated with a user in order
+ // to open a new channel of communication on any of their devices
+ rpc GetDeviceKeysForUser(DeviceKeysForUserRequest) returns
+ (DeviceKeysForUserResponse) {}
+ // Called by clients to get required keys for opening a connection
+ // to a keyserver
+ rpc GetKeyserverKeys(KeyserverKeysRequest) returns
+ (KeyserverKeysResponse) {}
+ // Replenish one-time preKeys
+ rpc UploadOneTimeKeys(UploadOneTimeKeysRequest) returns (Empty) {}
+ // Rotate a devices preKey and preKey signature
+ // Rotated for deniability of older messages
+ rpc RefreshUserPreKeys(RefreshUserPreKeysRequest) returns (Empty) {}
}
// Helper types
@@ -220,3 +236,55 @@
message GenerateNonceResponse{
string nonce = 1;
}
+
+// GetDeviceKeysForUser
+
+message DeviceKeysForUserRequest {
+ oneof identifier {
+ string username = 1;
+ string walletAddress = 2;
+ }
+}
+
+message DeviceKeysForUserResponse {
+ // Map is keyed on devices' public ed25519 key used for signing
+ map<string, RemoteDeviceInfo> devices = 1;
+}
+
+// GetKeyserverKeys
+
+// All keyserver must be registered with an existing user.
+// Conversely, one or zero keyservers can registered to a user.
+message KeyserverKeysRequest {
+ oneof identifier {
+ string username = 1;
+ string walletAddress = 2;
+ }
+}
+
+message KeyserverKeysResponse {
+ KeyserverSessionInfo keyserverInfo = 1;
+}
+
+// UploadOneTimeKeys
+
+// As OPKs get exhausted, they need to be refreshed
+message UploadOneTimeKeysRequest {
+ // Use device associated with token to insert OPKs
+ string accessToken = 1;
+ repeated string oneTimePreKeys = 2;
+}
+
+// RefreshUserPreKeys
+
+message PreKeyUpload {
+ // Rotating preKey, validated to be associatd with IdentityKeys
+ // through signature
+ string preKey = 1;
+ string preKeySignature = 2;
+}
+
+message RefreshUserPreKeysRequest {
+ string accessToken = 1;
+ PreKeyUpload newPreKeys = 2;
+}

File Metadata

Mime Type
text/plain
Expires
Thu, Nov 28, 6:32 AM (21 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2593076
Default Alt Text
D7062.diff (2 KB)

Event Timeline