mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-31 21:32:46 +00:00
Cross-signing validation for self-sigs, expose signatures over /user/keys/query
and /user/devices/{userId}
(#1962)
* Enable unstable feature again * Try to verify when a device signs a key * Try to verify when a key signs a device * It's the self-signing key, not the master key * Fix error * Try to verify master key uploads * Actually we can't guarantee we can do that so nevermind * Add signatures into /devices/list request * Fix nil pointer * Reprioritise map creation * Don't skip devices that don't have signatures * Add some debug logging * Fix logic error in QuerySignatures * Fix bugs * Expose master and self-signing keys on /devices/list hopefully * maps are tedious * Expose signatures via /keys/query * Upload signatures when uploading keys * Fixes * Disable the feature again
This commit is contained in:
parent
8e5a0139b5
commit
e95b1fd238
9 changed files with 341 additions and 37 deletions
|
@ -20,6 +20,7 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/matrix-org/dendrite/keyserver/types"
|
||||
userapi "github.com/matrix-org/dendrite/userapi/api"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
)
|
||||
|
@ -38,6 +39,7 @@ type KeyInternalAPI interface {
|
|||
QueryKeyChanges(ctx context.Context, req *QueryKeyChangesRequest, res *QueryKeyChangesResponse)
|
||||
QueryOneTimeKeys(ctx context.Context, req *QueryOneTimeKeysRequest, res *QueryOneTimeKeysResponse)
|
||||
QueryDeviceMessages(ctx context.Context, req *QueryDeviceMessagesRequest, res *QueryDeviceMessagesResponse)
|
||||
QuerySignatures(ctx context.Context, req *QuerySignaturesRequest, res *QuerySignaturesResponse)
|
||||
}
|
||||
|
||||
// KeyError is returned if there was a problem performing/querying the server
|
||||
|
@ -242,6 +244,24 @@ type QueryDeviceMessagesResponse struct {
|
|||
Error *KeyError
|
||||
}
|
||||
|
||||
type QuerySignaturesRequest struct {
|
||||
// A map of target user ID -> target key/device IDs to retrieve signatures for
|
||||
TargetIDs map[string][]gomatrixserverlib.KeyID `json:"target_ids"`
|
||||
}
|
||||
|
||||
type QuerySignaturesResponse struct {
|
||||
// A map of target user ID -> target key/device ID -> origin user ID -> origin key/device ID -> signatures
|
||||
Signatures map[string]map[gomatrixserverlib.KeyID]types.CrossSigningSigMap
|
||||
// A map of target user ID -> cross-signing master key
|
||||
MasterKeys map[string]gomatrixserverlib.CrossSigningKey
|
||||
// A map of target user ID -> cross-signing self-signing key
|
||||
SelfSigningKeys map[string]gomatrixserverlib.CrossSigningKey
|
||||
// A map of target user ID -> cross-signing user-signing key
|
||||
UserSigningKeys map[string]gomatrixserverlib.CrossSigningKey
|
||||
// The request error, if any
|
||||
Error *KeyError
|
||||
}
|
||||
|
||||
type InputDeviceListUpdateRequest struct {
|
||||
Event gomatrixserverlib.DeviceListUpdateEvent
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue