Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
synapse
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Maunium
synapse
Commits
c9195744
Unverified
Commit
c9195744
authored
4 years ago
by
Erik Johnston
Committed by
GitHub
4 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Move more encryption endpoints off master (#9068)
parent
42d3a28d
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
changelog.d/9068.feature
+1
-0
1 addition, 0 deletions
changelog.d/9068.feature
synapse/app/generic_worker.py
+10
-2
10 additions, 2 deletions
synapse/app/generic_worker.py
synapse/storage/databases/main/end_to_end_keys.py
+44
-44
44 additions, 44 deletions
synapse/storage/databases/main/end_to_end_keys.py
with
55 additions
and
46 deletions
changelog.d/9068.feature
0 → 100644
+
1
−
0
View file @
c9195744
Add
experimental
support
for
handling
`/keys/claim`
and
`/room_keys`
APIs
on
worker
processes.
This diff is collapsed.
Click to expand it.
synapse/app/generic_worker.py
+
10
−
2
View file @
c9195744
...
@@ -100,14 +100,18 @@ from synapse.rest.client.v1.profile import (
...
@@ -100,14 +100,18 @@ from synapse.rest.client.v1.profile import (
)
)
from
synapse.rest.client.v1.push_rule
import
PushRuleRestServlet
from
synapse.rest.client.v1.push_rule
import
PushRuleRestServlet
from
synapse.rest.client.v1.voip
import
VoipRestServlet
from
synapse.rest.client.v1.voip
import
VoipRestServlet
from
synapse.rest.client.v2_alpha
import
groups
,
sync
,
user_directory
from
synapse.rest.client.v2_alpha
import
groups
,
room_keys
,
sync
,
user_directory
from
synapse.rest.client.v2_alpha._base
import
client_patterns
from
synapse.rest.client.v2_alpha._base
import
client_patterns
from
synapse.rest.client.v2_alpha.account
import
ThreepidRestServlet
from
synapse.rest.client.v2_alpha.account
import
ThreepidRestServlet
from
synapse.rest.client.v2_alpha.account_data
import
(
from
synapse.rest.client.v2_alpha.account_data
import
(
AccountDataServlet
,
AccountDataServlet
,
RoomAccountDataServlet
,
RoomAccountDataServlet
,
)
)
from
synapse.rest.client.v2_alpha.keys
import
KeyChangesServlet
,
KeyQueryServlet
from
synapse.rest.client.v2_alpha.keys
import
(
KeyChangesServlet
,
KeyQueryServlet
,
OneTimeKeyServlet
,
)
from
synapse.rest.client.v2_alpha.register
import
RegisterRestServlet
from
synapse.rest.client.v2_alpha.register
import
RegisterRestServlet
from
synapse.rest.client.v2_alpha.sendtodevice
import
SendToDeviceRestServlet
from
synapse.rest.client.v2_alpha.sendtodevice
import
SendToDeviceRestServlet
from
synapse.rest.client.versions
import
VersionsRestServlet
from
synapse.rest.client.versions
import
VersionsRestServlet
...
@@ -116,6 +120,7 @@ from synapse.rest.key.v2 import KeyApiV2Resource
...
@@ -116,6 +120,7 @@ from synapse.rest.key.v2 import KeyApiV2Resource
from
synapse.server
import
HomeServer
,
cache_in_self
from
synapse.server
import
HomeServer
,
cache_in_self
from
synapse.storage.databases.main.censor_events
import
CensorEventsStore
from
synapse.storage.databases.main.censor_events
import
CensorEventsStore
from
synapse.storage.databases.main.client_ips
import
ClientIpWorkerStore
from
synapse.storage.databases.main.client_ips
import
ClientIpWorkerStore
from
synapse.storage.databases.main.e2e_room_keys
import
EndToEndRoomKeyStore
from
synapse.storage.databases.main.media_repository
import
MediaRepositoryStore
from
synapse.storage.databases.main.media_repository
import
MediaRepositoryStore
from
synapse.storage.databases.main.metrics
import
ServerMetricsStore
from
synapse.storage.databases.main.metrics
import
ServerMetricsStore
from
synapse.storage.databases.main.monthly_active_users
import
(
from
synapse.storage.databases.main.monthly_active_users
import
(
...
@@ -447,6 +452,7 @@ class GenericWorkerSlavedStore(
...
@@ -447,6 +452,7 @@ class GenericWorkerSlavedStore(
UserDirectoryStore
,
UserDirectoryStore
,
StatsStore
,
StatsStore
,
UIAuthWorkerStore
,
UIAuthWorkerStore
,
EndToEndRoomKeyStore
,
SlavedDeviceInboxStore
,
SlavedDeviceInboxStore
,
SlavedDeviceStore
,
SlavedDeviceStore
,
SlavedReceiptsStore
,
SlavedReceiptsStore
,
...
@@ -504,6 +510,7 @@ class GenericWorkerServer(HomeServer):
...
@@ -504,6 +510,7 @@ class GenericWorkerServer(HomeServer):
LoginRestServlet
(
self
).
register
(
resource
)
LoginRestServlet
(
self
).
register
(
resource
)
ThreepidRestServlet
(
self
).
register
(
resource
)
ThreepidRestServlet
(
self
).
register
(
resource
)
KeyQueryServlet
(
self
).
register
(
resource
)
KeyQueryServlet
(
self
).
register
(
resource
)
OneTimeKeyServlet
(
self
).
register
(
resource
)
KeyChangesServlet
(
self
).
register
(
resource
)
KeyChangesServlet
(
self
).
register
(
resource
)
VoipRestServlet
(
self
).
register
(
resource
)
VoipRestServlet
(
self
).
register
(
resource
)
PushRuleRestServlet
(
self
).
register
(
resource
)
PushRuleRestServlet
(
self
).
register
(
resource
)
...
@@ -521,6 +528,7 @@ class GenericWorkerServer(HomeServer):
...
@@ -521,6 +528,7 @@ class GenericWorkerServer(HomeServer):
room
.
register_servlets
(
self
,
resource
,
True
)
room
.
register_servlets
(
self
,
resource
,
True
)
room
.
register_deprecated_servlets
(
self
,
resource
)
room
.
register_deprecated_servlets
(
self
,
resource
)
InitialSyncRestServlet
(
self
).
register
(
resource
)
InitialSyncRestServlet
(
self
).
register
(
resource
)
room_keys
.
register_servlets
(
self
,
resource
)
SendToDeviceRestServlet
(
self
).
register
(
resource
)
SendToDeviceRestServlet
(
self
).
register
(
resource
)
...
...
This diff is collapsed.
Click to expand it.
synapse/storage/databases/main/end_to_end_keys.py
+
44
−
44
View file @
c9195744
...
@@ -707,50 +707,6 @@ class EndToEndKeyWorkerStore(EndToEndKeyBackgroundStore):
...
@@ -707,50 +707,6 @@ class EndToEndKeyWorkerStore(EndToEndKeyBackgroundStore):
"""
Get the current stream id from the _device_list_id_gen
"""
"""
Get the current stream id from the _device_list_id_gen
"""
...
...
class
EndToEndKeyStore
(
EndToEndKeyWorkerStore
,
SQLBaseStore
):
async
def
set_e2e_device_keys
(
self
,
user_id
:
str
,
device_id
:
str
,
time_now
:
int
,
device_keys
:
JsonDict
)
->
bool
:
"""
Stores device keys for a device. Returns whether there was a change
or the keys were already in the database.
"""
def
_set_e2e_device_keys_txn
(
txn
):
set_tag
(
"
user_id
"
,
user_id
)
set_tag
(
"
device_id
"
,
device_id
)
set_tag
(
"
time_now
"
,
time_now
)
set_tag
(
"
device_keys
"
,
device_keys
)
old_key_json
=
self
.
db_pool
.
simple_select_one_onecol_txn
(
txn
,
table
=
"
e2e_device_keys_json
"
,
keyvalues
=
{
"
user_id
"
:
user_id
,
"
device_id
"
:
device_id
},
retcol
=
"
key_json
"
,
allow_none
=
True
,
)
# In py3 we need old_key_json to match new_key_json type. The DB
# returns unicode while encode_canonical_json returns bytes.
new_key_json
=
encode_canonical_json
(
device_keys
).
decode
(
"
utf-8
"
)
if
old_key_json
==
new_key_json
:
log_kv
({
"
Message
"
:
"
Device key already stored.
"
})
return
False
self
.
db_pool
.
simple_upsert_txn
(
txn
,
table
=
"
e2e_device_keys_json
"
,
keyvalues
=
{
"
user_id
"
:
user_id
,
"
device_id
"
:
device_id
},
values
=
{
"
ts_added_ms
"
:
time_now
,
"
key_json
"
:
new_key_json
},
)
log_kv
({
"
message
"
:
"
Device keys stored.
"
})
return
True
return
await
self
.
db_pool
.
runInteraction
(
"
set_e2e_device_keys
"
,
_set_e2e_device_keys_txn
)
async
def
claim_e2e_one_time_keys
(
async
def
claim_e2e_one_time_keys
(
self
,
query_list
:
Iterable
[
Tuple
[
str
,
str
,
str
]]
self
,
query_list
:
Iterable
[
Tuple
[
str
,
str
,
str
]]
)
->
Dict
[
str
,
Dict
[
str
,
Dict
[
str
,
bytes
]]]:
)
->
Dict
[
str
,
Dict
[
str
,
Dict
[
str
,
bytes
]]]:
...
@@ -840,6 +796,50 @@ class EndToEndKeyStore(EndToEndKeyWorkerStore, SQLBaseStore):
...
@@ -840,6 +796,50 @@ class EndToEndKeyStore(EndToEndKeyWorkerStore, SQLBaseStore):
"
claim_e2e_one_time_keys
"
,
_claim_e2e_one_time_keys
"
claim_e2e_one_time_keys
"
,
_claim_e2e_one_time_keys
)
)
class
EndToEndKeyStore
(
EndToEndKeyWorkerStore
,
SQLBaseStore
):
async
def
set_e2e_device_keys
(
self
,
user_id
:
str
,
device_id
:
str
,
time_now
:
int
,
device_keys
:
JsonDict
)
->
bool
:
"""
Stores device keys for a device. Returns whether there was a change
or the keys were already in the database.
"""
def
_set_e2e_device_keys_txn
(
txn
):
set_tag
(
"
user_id
"
,
user_id
)
set_tag
(
"
device_id
"
,
device_id
)
set_tag
(
"
time_now
"
,
time_now
)
set_tag
(
"
device_keys
"
,
device_keys
)
old_key_json
=
self
.
db_pool
.
simple_select_one_onecol_txn
(
txn
,
table
=
"
e2e_device_keys_json
"
,
keyvalues
=
{
"
user_id
"
:
user_id
,
"
device_id
"
:
device_id
},
retcol
=
"
key_json
"
,
allow_none
=
True
,
)
# In py3 we need old_key_json to match new_key_json type. The DB
# returns unicode while encode_canonical_json returns bytes.
new_key_json
=
encode_canonical_json
(
device_keys
).
decode
(
"
utf-8
"
)
if
old_key_json
==
new_key_json
:
log_kv
({
"
Message
"
:
"
Device key already stored.
"
})
return
False
self
.
db_pool
.
simple_upsert_txn
(
txn
,
table
=
"
e2e_device_keys_json
"
,
keyvalues
=
{
"
user_id
"
:
user_id
,
"
device_id
"
:
device_id
},
values
=
{
"
ts_added_ms
"
:
time_now
,
"
key_json
"
:
new_key_json
},
)
log_kv
({
"
message
"
:
"
Device keys stored.
"
})
return
True
return
await
self
.
db_pool
.
runInteraction
(
"
set_e2e_device_keys
"
,
_set_e2e_device_keys_txn
)
async
def
delete_e2e_keys_by_device
(
self
,
user_id
:
str
,
device_id
:
str
)
->
None
:
async
def
delete_e2e_keys_by_device
(
self
,
user_id
:
str
,
device_id
:
str
)
->
None
:
def
delete_e2e_keys_by_device_txn
(
txn
):
def
delete_e2e_keys_by_device_txn
(
txn
):
log_kv
(
log_kv
(
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment