Skip to content

Commit c490bad

Browse files
committed
msc3861: delete QueryMasterKeys function and related as it's redundant and no longer needed
1 parent ff2ba03 commit c490bad

File tree

9 files changed

+21
-118
lines changed

9 files changed

+21
-118
lines changed

clientapi/routing/key_crosssigning.go

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ type crossSigningRequest struct {
3131

3232
type UploadKeysAPI interface {
3333
QueryKeys(ctx context.Context, req *api.QueryKeysRequest, res *api.QueryKeysResponse)
34-
QueryMasterKeys(ctx context.Context, req *api.QueryMasterKeysRequest, res *api.QueryMasterKeysResponse)
3534
api.UploadDeviceKeysAPI
3635
}
3736

@@ -76,15 +75,7 @@ func UploadCrossSigningDeviceKeys(
7675

7776
// With MSC3861, UIA is not possible. Instead, the auth service has to explicitly mark the master key as replaceable.
7877
if cfg.MSCs.MSC3861Enabled() {
79-
masterKeyResp := api.QueryMasterKeysResponse{}
80-
keyserverAPI.QueryMasterKeys(req.Context(), &api.QueryMasterKeysRequest{UserID: device.UserID}, &masterKeyResp)
81-
82-
if masterKeyResp.Error != nil {
83-
logger.WithError(masterKeyResp.Error).Error("Failed to query master key")
84-
return convertKeyError(masterKeyResp.Error)
85-
}
86-
87-
requireUIA := !sessions.isCrossSigningKeysReplacementAllowed(device.UserID) && masterKeyResp.Key != nil
78+
requireUIA := !sessions.isCrossSigningKeysReplacementAllowed(device.UserID)
8879
if requireUIA {
8980
url := ""
9081
if m := cfg.MSCs.MSC3861; m.AccountManagementURL != "" {

setup/mscs/msc3861/msc3861.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
package msc3861
77

88
import (
9+
"errors"
10+
911
"github.com/element-hq/dendrite/setup"
1012
"github.com/matrix-org/gomatrixserverlib/fclient"
1113
)
@@ -20,6 +22,17 @@ func Enable(m *setup.Monolith) error {
2022
if err != nil {
2123
return err
2224
}
23-
m.UserVerifierProvider = setup.NewUserVerifierProvider(userVerifier)
25+
26+
if m.UserVerifierProvider == nil {
27+
return errors.New("msc3861: UserVerifierProvider is not initialised")
28+
}
29+
30+
provider, ok := m.UserVerifierProvider.(*setup.UserVerifierProvider)
31+
if !ok {
32+
return errors.New("msc3861: the expected type of m.UserVerifierProvider is *setup.UserVerifierProvider")
33+
}
34+
35+
provider.UserVerifier = userVerifier
36+
2437
return nil
2538
}

userapi/api/api.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,6 @@ type QueryAccountByLocalpartResponse struct {
672672
type ClientKeyAPI interface {
673673
UploadDeviceKeysAPI
674674
QueryKeys(ctx context.Context, req *QueryKeysRequest, res *QueryKeysResponse)
675-
QueryMasterKeys(ctx context.Context, req *QueryMasterKeysRequest, res *QueryMasterKeysResponse)
676675
PerformUploadKeys(ctx context.Context, req *PerformUploadKeysRequest, res *PerformUploadKeysResponse) error
677676

678677
PerformUploadDeviceSignatures(ctx context.Context, req *PerformUploadDeviceSignaturesRequest, res *PerformUploadDeviceSignaturesResponse)
@@ -934,16 +933,6 @@ type QueryKeysResponse struct {
934933
Error *KeyError
935934
}
936935

937-
type QueryMasterKeysRequest struct {
938-
UserID string
939-
}
940-
941-
type QueryMasterKeysResponse struct {
942-
Key spec.Base64Bytes
943-
// Set if there was a fatal error processing this query
944-
Error *KeyError
945-
}
946-
947936
type QueryKeyChangesRequest struct {
948937
// The offset of the last received key event, or sarama.OffsetOldest if this is from the beginning
949938
Offset int64

userapi/internal/key_api.go

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -234,19 +234,6 @@ func (a *UserInternalAPI) PerformMarkAsStaleIfNeeded(ctx context.Context, req *a
234234
return a.Updater.ManualUpdate(ctx, req.Domain, req.UserID)
235235
}
236236

237-
func (a *UserInternalAPI) QueryMasterKeys(ctx context.Context, req *api.QueryMasterKeysRequest, res *api.QueryMasterKeysResponse) {
238-
crossSigningKeyMap, err := a.KeyDatabase.CrossSigningKeysDataForUserAndKeyType(ctx, req.UserID, fclient.CrossSigningKeyPurposeMaster)
239-
if err != nil {
240-
res.Error = &api.KeyError{
241-
Err: fmt.Sprintf("failed to query user cross signing master keys: %s", err),
242-
}
243-
return
244-
}
245-
if key, ok := crossSigningKeyMap[fclient.CrossSigningKeyPurposeMaster]; ok {
246-
res.Key = key
247-
}
248-
}
249-
250237
// nolint:gocyclo
251238
func (a *UserInternalAPI) QueryKeys(ctx context.Context, req *api.QueryKeysRequest, res *api.QueryKeysResponse) {
252239
var respMu sync.Mutex

userapi/storage/interface.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,6 @@ type KeyDatabase interface {
227227

228228
CrossSigningKeysForUser(ctx context.Context, userID string) (map[fclient.CrossSigningKeyPurpose]fclient.CrossSigningKey, error)
229229
CrossSigningKeysDataForUser(ctx context.Context, userID string) (types.CrossSigningKeyMap, error)
230-
CrossSigningKeysDataForUserAndKeyType(ctx context.Context, userID string, keyType fclient.CrossSigningKeyPurpose) (types.CrossSigningKeyMap, error)
231230
CrossSigningSigsForTarget(ctx context.Context, originUserID, targetUserID string, targetKeyID gomatrixserverlib.KeyID) (types.CrossSigningSigMap, error)
232231

233232
StoreCrossSigningKeysForUser(ctx context.Context, userID string, keyMap types.CrossSigningKeyMap) error

userapi/storage/postgres/cross_signing_keys_table.go

Lines changed: 3 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,15 @@ const selectCrossSigningKeysForUserSQL = "" +
3232
"SELECT key_type, key_data FROM keyserver_cross_signing_keys" +
3333
" WHERE user_id = $1"
3434

35-
const selectCrossSigningKeysForUserAndKeyTypeSQL = "" +
36-
"SELECT key_type, key_data FROM keyserver_cross_signing_keys" +
37-
" WHERE user_id = $1 AND key_type = $2"
38-
3935
const upsertCrossSigningKeysForUserSQL = "" +
4036
"INSERT INTO keyserver_cross_signing_keys (user_id, key_type, key_data)" +
4137
" VALUES($1, $2, $3)" +
4238
" ON CONFLICT (user_id, key_type) DO UPDATE SET key_data = $3"
4339

4440
type crossSigningKeysStatements struct {
45-
db *sql.DB
46-
selectCrossSigningKeysForUserStmt *sql.Stmt
47-
selectCrossSigningKeysForUserAndKeyTypeStmt *sql.Stmt
48-
upsertCrossSigningKeysForUserStmt *sql.Stmt
41+
db *sql.DB
42+
selectCrossSigningKeysForUserStmt *sql.Stmt
43+
upsertCrossSigningKeysForUserStmt *sql.Stmt
4944
}
5045

5146
func NewPostgresCrossSigningKeysTable(db *sql.DB) (tables.CrossSigningKeys, error) {
@@ -63,7 +58,6 @@ func NewPostgresCrossSigningKeysTable(db *sql.DB) (tables.CrossSigningKeys, erro
6358
}
6459
return s, sqlutil.StatementList{
6560
{&s.selectCrossSigningKeysForUserStmt, selectCrossSigningKeysForUserSQL},
66-
{&s.selectCrossSigningKeysForUserAndKeyTypeStmt, selectCrossSigningKeysForUserAndKeyTypeSQL},
6761
{&s.upsertCrossSigningKeysForUserStmt, upsertCrossSigningKeysForUserSQL},
6862
}.Prepare(db)
6963
}
@@ -93,35 +87,6 @@ func (s *crossSigningKeysStatements) SelectCrossSigningKeysForUser(
9387
return
9488
}
9589

96-
func (s *crossSigningKeysStatements) SelectCrossSigningKeysForUserAndKeyType(
97-
ctx context.Context, txn *sql.Tx, userID string, keyType fclient.CrossSigningKeyPurpose,
98-
) (r types.CrossSigningKeyMap, err error) {
99-
keyTypeInt, ok := types.KeyTypePurposeToInt[keyType]
100-
if !ok {
101-
return nil, fmt.Errorf("unknown key purpose %q", keyType)
102-
}
103-
rows, err := sqlutil.TxStmt(txn, s.selectCrossSigningKeysForUserAndKeyTypeStmt).QueryContext(ctx, userID, keyTypeInt)
104-
if err != nil {
105-
return nil, err
106-
}
107-
defer internal.CloseAndLogIfError(ctx, rows, "SelectCrossSigningKeysForUserAndKeyType: rows.close() failed")
108-
r = types.CrossSigningKeyMap{}
109-
for rows.Next() {
110-
var keyTypeInt int16
111-
var keyData spec.Base64Bytes
112-
if err = rows.Scan(&keyTypeInt, &keyData); err != nil {
113-
return nil, err
114-
}
115-
keyType, ok := types.KeyTypeIntToPurpose[keyTypeInt]
116-
if !ok {
117-
return nil, fmt.Errorf("unknown key purpose int %d", keyTypeInt)
118-
}
119-
r[keyType] = keyData
120-
}
121-
err = rows.Err()
122-
return
123-
}
124-
12590
func (s *crossSigningKeysStatements) UpsertCrossSigningKeysForUser(
12691
ctx context.Context, txn *sql.Tx, userID string, keyType fclient.CrossSigningKeyPurpose, keyData spec.Base64Bytes,
12792
) error {

userapi/storage/shared/storage.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,11 +1172,6 @@ func (d *KeyDatabase) CrossSigningKeysDataForUser(ctx context.Context, userID st
11721172
return d.CrossSigningKeysTable.SelectCrossSigningKeysForUser(ctx, nil, userID)
11731173
}
11741174

1175-
// CrossSigningKeysForUserAndKeyType returns the latest known cross-signing keys for a user and key type, if any.
1176-
func (d *KeyDatabase) CrossSigningKeysDataForUserAndKeyType(ctx context.Context, userID string, keyType fclient.CrossSigningKeyPurpose) (types.CrossSigningKeyMap, error) {
1177-
return d.CrossSigningKeysTable.SelectCrossSigningKeysForUserAndKeyType(ctx, nil, userID, keyType)
1178-
}
1179-
11801175
// CrossSigningSigsForTarget returns the signatures for a given user's key ID, if any.
11811176
func (d *KeyDatabase) CrossSigningSigsForTarget(ctx context.Context, originUserID, targetUserID string, targetKeyID gomatrixserverlib.KeyID) (types.CrossSigningSigMap, error) {
11821177
return d.CrossSigningSigsTable.SelectCrossSigningSigsForTarget(ctx, nil, originUserID, targetUserID, targetKeyID)

userapi/storage/sqlite3/cross_signing_keys_table.go

Lines changed: 3 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,14 @@ const selectCrossSigningKeysForUserSQL = "" +
3232
"SELECT key_type, key_data FROM keyserver_cross_signing_keys" +
3333
" WHERE user_id = $1"
3434

35-
const selectCrossSigningKeysForUserAndKeyTypeSQL = "" +
36-
"SELECT key_type, key_data FROM keyserver_cross_signing_keys" +
37-
" WHERE user_id = $1 AND key_type = $2"
38-
3935
const upsertCrossSigningKeysForUserSQL = "" +
4036
"INSERT OR REPLACE INTO keyserver_cross_signing_keys (user_id, key_type, key_data)" +
4137
" VALUES($1, $2, $3)"
4238

4339
type crossSigningKeysStatements struct {
44-
db *sql.DB
45-
selectCrossSigningKeysForUserStmt *sql.Stmt
46-
selectCrossSigningKeysForUserAndKeyTypeStmt *sql.Stmt
47-
upsertCrossSigningKeysForUserStmt *sql.Stmt
40+
db *sql.DB
41+
selectCrossSigningKeysForUserStmt *sql.Stmt
42+
upsertCrossSigningKeysForUserStmt *sql.Stmt
4843
}
4944

5045
func NewSqliteCrossSigningKeysTable(db *sql.DB) (tables.CrossSigningKeys, error) {
@@ -62,7 +57,6 @@ func NewSqliteCrossSigningKeysTable(db *sql.DB) (tables.CrossSigningKeys, error)
6257
}
6358
return s, sqlutil.StatementList{
6459
{&s.selectCrossSigningKeysForUserStmt, selectCrossSigningKeysForUserSQL},
65-
{&s.selectCrossSigningKeysForUserAndKeyTypeStmt, selectCrossSigningKeysForUserAndKeyTypeSQL},
6660
{&s.upsertCrossSigningKeysForUserStmt, upsertCrossSigningKeysForUserSQL},
6761
}.Prepare(db)
6862
}
@@ -92,35 +86,6 @@ func (s *crossSigningKeysStatements) SelectCrossSigningKeysForUser(
9286
return
9387
}
9488

95-
func (s *crossSigningKeysStatements) SelectCrossSigningKeysForUserAndKeyType(
96-
ctx context.Context, txn *sql.Tx, userID string, keyType fclient.CrossSigningKeyPurpose,
97-
) (r types.CrossSigningKeyMap, err error) {
98-
keyTypeInt, ok := types.KeyTypePurposeToInt[keyType]
99-
if !ok {
100-
return nil, fmt.Errorf("unknown key purpose %q", keyType)
101-
}
102-
rows, err := sqlutil.TxStmt(txn, s.selectCrossSigningKeysForUserAndKeyTypeStmt).QueryContext(ctx, userID, keyTypeInt)
103-
if err != nil {
104-
return nil, err
105-
}
106-
defer internal.CloseAndLogIfError(ctx, rows, "SelectCrossSigningKeysForUserAndKeyType: rows.close() failed")
107-
r = types.CrossSigningKeyMap{}
108-
for rows.Next() {
109-
var keyTypeInt int16
110-
var keyData spec.Base64Bytes
111-
if err = rows.Scan(&keyTypeInt, &keyData); err != nil {
112-
return nil, err
113-
}
114-
keyType, ok := types.KeyTypeIntToPurpose[keyTypeInt]
115-
if !ok {
116-
return nil, fmt.Errorf("unknown key purpose int %d", keyTypeInt)
117-
}
118-
r[keyType] = keyData
119-
}
120-
err = rows.Err()
121-
return
122-
}
123-
12489
func (s *crossSigningKeysStatements) UpsertCrossSigningKeysForUser(
12590
ctx context.Context, txn *sql.Tx, userID string, keyType fclient.CrossSigningKeyPurpose, keyData spec.Base64Bytes) error {
12691
keyTypeInt, ok := types.KeyTypePurposeToInt[keyType]

userapi/storage/tables/interface.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,6 @@ type StaleDeviceLists interface {
198198

199199
type CrossSigningKeys interface {
200200
SelectCrossSigningKeysForUser(ctx context.Context, txn *sql.Tx, userID string) (r types.CrossSigningKeyMap, err error)
201-
SelectCrossSigningKeysForUserAndKeyType(ctx context.Context, txn *sql.Tx, userID string, keyType fclient.CrossSigningKeyPurpose) (r types.CrossSigningKeyMap, err error)
202201
UpsertCrossSigningKeysForUser(ctx context.Context, txn *sql.Tx, userID string, keyType fclient.CrossSigningKeyPurpose, keyData spec.Base64Bytes) error
203202
}
204203

0 commit comments

Comments
 (0)