mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-03-03 07:14:27 -06:00
Fix uniqueness
This commit is contained in:
parent
f87064d1fb
commit
811f7e76d4
|
@ -552,35 +552,6 @@ func (a *KeyInternalAPI) QuerySignatures(ctx context.Context, req *api.QuerySign
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, targetSection := range []map[string]gomatrixserverlib.CrossSigningKey{
|
|
||||||
res.MasterKeys,
|
|
||||||
res.SelfSigningKeys,
|
|
||||||
res.UserSigningKeys,
|
|
||||||
} {
|
|
||||||
for targetKeyID, section := range targetSection {
|
|
||||||
// Get own signatures only.
|
|
||||||
sigMap, err := a.DB.CrossSigningSigsForTarget(ctx, targetUserID, targetUserID, gomatrixserverlib.KeyID(targetKeyID))
|
|
||||||
if err != nil && err != sql.ErrNoRows {
|
|
||||||
res.Error = &api.KeyError{
|
|
||||||
Err: fmt.Sprintf("a.DB.CrossSigningSigsForTarget: %s", err),
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
for sourceUserID, forSourceUser := range sigMap {
|
|
||||||
for sourceKeyID, sourceSig := range forSourceUser {
|
|
||||||
if section.Signatures == nil {
|
|
||||||
section.Signatures = map[string]map[gomatrixserverlib.KeyID]gomatrixserverlib.Base64Bytes{}
|
|
||||||
}
|
|
||||||
if _, ok := res.Signatures[sourceUserID]; !ok {
|
|
||||||
section.Signatures[sourceUserID] = map[gomatrixserverlib.KeyID]gomatrixserverlib.Base64Bytes{}
|
|
||||||
}
|
|
||||||
section.Signatures[sourceUserID][sourceKeyID] = sourceSig
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, targetKeyID := range forTargetUser {
|
for _, targetKeyID := range forTargetUser {
|
||||||
// Get own signatures only.
|
// Get own signatures only.
|
||||||
sigMap, err := a.DB.CrossSigningSigsForTarget(ctx, targetUserID, targetUserID, targetKeyID)
|
sigMap, err := a.DB.CrossSigningSigsForTarget(ctx, targetUserID, targetUserID, targetKeyID)
|
||||||
|
|
|
@ -33,8 +33,10 @@ CREATE TABLE IF NOT EXISTS keyserver_cross_signing_sigs (
|
||||||
target_user_id TEXT NOT NULL,
|
target_user_id TEXT NOT NULL,
|
||||||
target_key_id TEXT NOT NULL,
|
target_key_id TEXT NOT NULL,
|
||||||
signature TEXT NOT NULL,
|
signature TEXT NOT NULL,
|
||||||
PRIMARY KEY (origin_user_id, target_user_id, target_key_id)
|
PRIMARY KEY (origin_user_id, origin_key_id, target_user_id, target_key_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS keyserver_cross_signing_sigs_idx ON keyserver_cross_signing_sigs (origin_user_id, target_user_id, target_key_id);
|
||||||
`
|
`
|
||||||
|
|
||||||
const selectCrossSigningSigsForTargetSQL = "" +
|
const selectCrossSigningSigsForTargetSQL = "" +
|
||||||
|
@ -44,7 +46,7 @@ const selectCrossSigningSigsForTargetSQL = "" +
|
||||||
const upsertCrossSigningSigsForTargetSQL = "" +
|
const upsertCrossSigningSigsForTargetSQL = "" +
|
||||||
"INSERT INTO keyserver_cross_signing_sigs (origin_user_id, origin_key_id, target_user_id, target_key_id, signature)" +
|
"INSERT INTO keyserver_cross_signing_sigs (origin_user_id, origin_key_id, target_user_id, target_key_id, signature)" +
|
||||||
" VALUES($1, $2, $3, $4, $5)" +
|
" VALUES($1, $2, $3, $4, $5)" +
|
||||||
" ON CONFLICT (origin_user_id, target_user_id, target_key_id) DO UPDATE SET (origin_key_id, signature) = ($2, $5)"
|
" ON CONFLICT (origin_user_id, origin_key_id, target_user_id, target_key_id) DO UPDATE SET signature = $5"
|
||||||
|
|
||||||
const deleteCrossSigningSigsForTargetSQL = "" +
|
const deleteCrossSigningSigsForTargetSQL = "" +
|
||||||
"DELETE FROM keyserver_cross_signing_sigs WHERE target_user_id=$1 AND target_key_id=$2"
|
"DELETE FROM keyserver_cross_signing_sigs WHERE target_user_id=$1 AND target_key_id=$2"
|
||||||
|
|
|
@ -33,8 +33,10 @@ CREATE TABLE IF NOT EXISTS keyserver_cross_signing_sigs (
|
||||||
target_user_id TEXT NOT NULL,
|
target_user_id TEXT NOT NULL,
|
||||||
target_key_id TEXT NOT NULL,
|
target_key_id TEXT NOT NULL,
|
||||||
signature TEXT NOT NULL,
|
signature TEXT NOT NULL,
|
||||||
PRIMARY KEY (origin_user_id, target_user_id, target_key_id)
|
PRIMARY KEY (origin_user_id, origin_key_id, target_user_id, target_key_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS keyserver_cross_signing_sigs_idx ON keyserver_cross_signing_sigs (origin_user_id, target_user_id, target_key_id);
|
||||||
`
|
`
|
||||||
|
|
||||||
const selectCrossSigningSigsForTargetSQL = "" +
|
const selectCrossSigningSigsForTargetSQL = "" +
|
||||||
|
|
Loading…
Reference in a new issue