Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F3521450
D7241.id24341.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Referenced Files
None
Subscribers
None
D7241.id24341.diff
View Options
diff --git a/services/identity/src/constants.rs b/services/identity/src/constants.rs
--- a/services/identity/src/constants.rs
+++ b/services/identity/src/constants.rs
@@ -6,6 +6,58 @@
// DynamoDB
+// User table information, supporting opaque_ke 2.0 and X3DH information
+pub mod opaque2 {
+ // Users can sign in either through username+password or Eth wallet.
+ //
+ // Structure for a user should be:
+ // {
+ // userID: String,
+ // opaqueRegistrationData: Option<String>,
+ // username: Option<String>,
+ // walletAddress: Option<String>,
+ // device: String,
+ // devices: HashMap<String, Devices>, {
+ // keyPayload: String,
+ // identityPreKey: String,
+ // identityPreKeySignature: String,
+ // identityOneTimeKeys: Vec<String>,
+ // notifPreKey: String,
+ // notifPreKeySignature: String,
+ // notifOneTimeKeys: Vec<String>,
+ // }
+ // }
+ //
+ // Additional context:
+ // "device" is the signing public identity key of primary device
+ // "devices" uses the signing public identity key of the device as a key for the devices map
+ // "keyPayload" is a JSON encoded string containing identity and notif keys (both signature and verification)
+
+ pub const USERS_TABLE: &str = "identity-users-opaque2";
+ pub const USERS_TABLE_PARTITION_KEY: &str = "userID";
+ pub const USERS_TABLE_REGISTRATION_ATTRIBUTE: &str = "opaqueRegistrationData";
+ pub const USERS_TABLE_USERNAME_ATTRIBUTE: &str = "username";
+ pub const USERS_TABLE_DEVICE_ATTRIBUTE_NAME: &str = "device";
+ pub const USERS_TABLE_DEVICES_ATTRIBUTE: &str = "devices";
+ pub const USERS_TABLE_DEVICES_MAP_KEY_PAYLOAD_ATTRIBUTE_NAME: &str =
+ "keyPayload";
+ pub const USERS_TABLE_DEVICES_MAP_IDENTITY_PREKEY_ATTRIBUTE_NAME: &str =
+ "identityPreKey";
+ pub const USERS_TABLE_DEVICES_MAP_IDENTITY_PREKEY_SIGNATURE_ATTRIBUTE_NAME:
+ &str = "identityPreKeySignature";
+ pub const USERS_TABLE_DEVICES_MAP_IDENTITY_ONETIME_KEYS_ATTRIBUTE_NAME: &str =
+ "identityOneTimeKeys";
+ pub const USERS_TABLE_DEVICES_MAP_NOTIF_PREKEY_ATTRIBUTE_NAME: &str =
+ "preKey";
+ pub const USERS_TABLE_DEVICES_MAP_NOTIF_PREKEY_SIGNATURE_ATTRIBUTE_NAME:
+ &str = "preKeySignature";
+ pub const USERS_TABLE_DEVICES_MAP_NOTIF_ONETIME_KEYS_ATTRIBUTE_NAME: &str =
+ "notifOneTimeKeys";
+ pub const USERS_TABLE_WALLET_ADDRESS_ATTRIBUTE: &str = "walletAddress";
+ pub const USERS_TABLE_USERNAME_INDEX: &str = "username-index";
+ pub const USERS_TABLE_WALLET_ADDRESS_INDEX: &str = "walletAddress-index";
+}
+
pub const USERS_TABLE: &str = "identity-users";
pub const USERS_TABLE_PARTITION_KEY: &str = "userID";
pub const USERS_TABLE_REGISTRATION_ATTRIBUTE: &str = "pakeRegistrationData";
diff --git a/services/identity/src/main.rs b/services/identity/src/main.rs
--- a/services/identity/src/main.rs
+++ b/services/identity/src/main.rs
@@ -6,7 +6,7 @@
mod client_service;
mod config;
-mod constants;
+pub mod constants;
mod database;
mod interceptor;
mod keygen;
diff --git a/services/terraform/dynamodb.tf b/services/terraform/dynamodb.tf
--- a/services/terraform/dynamodb.tf
+++ b/services/terraform/dynamodb.tf
@@ -193,6 +193,45 @@
}
}
+# Identity users with opaque_ke 2.0 credentials
+resource "aws_dynamodb_table" "identity-users-opaque2" {
+ name = "identity-users-opaque2"
+ hash_key = "userID"
+ write_capacity = 10
+ read_capacity = 10
+
+ attribute {
+ name = "userID"
+ type = "S"
+ }
+
+ attribute {
+ name = "username"
+ type = "S"
+ }
+
+ attribute {
+ name = "walletAddress"
+ type = "S"
+ }
+
+ global_secondary_index {
+ name = "username-index"
+ hash_key = "username"
+ write_capacity = 10
+ read_capacity = 10
+ projection_type = "KEYS_ONLY"
+ }
+
+ global_secondary_index {
+ name = "walletAddress-index"
+ hash_key = "walletAddress"
+ write_capacity = 10
+ read_capacity = 10
+ projection_type = "KEYS_ONLY"
+ }
+}
+
resource "aws_dynamodb_table" "identity-tokens" {
name = "identity-tokens"
hash_key = "userID"
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Dec 24, 3:32 AM (19 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2698167
Default Alt Text
D7241.id24341.diff (4 KB)
Attached To
Mode
D7241: [Identity] Add opaque2 users table
Attached
Detach File
Event Timeline
Log In to Comment