MCPcopy Create free account
hub / github.com/daodst/chat / fetchServerKeysFromCache

Method fetchServerKeysFromCache

federationapi/internal/query.go:41–65  ·  view source on GitHub ↗
(
	ctx context.Context, req *api.QueryServerKeysRequest,
)

Source from the content-addressed store, hash-verified

39}
40
41func (a *FederationInternalAPI) fetchServerKeysFromCache(
42 ctx context.Context, req *api.QueryServerKeysRequest,
43) ([]gomatrixserverlib.ServerKeys, error) {
44 var results []gomatrixserverlib.ServerKeys
45 for keyID, criteria := range req.KeyIDToCriteria {
46 serverKeysResponses, _ := a.db.GetNotaryKeys(ctx, req.ServerName, []gomatrixserverlib.KeyID{keyID})
47 if len(serverKeysResponses) == 0 {
48 return nil, fmt.Errorf("failed to find server key response for key ID %s", keyID)
49 }
50 // we should only get 1 result as we only gave 1 key ID
51 sk := serverKeysResponses[0]
52 util.GetLogger(ctx).Infof("fetchServerKeysFromCache: minvalid:%v keys: %+v", criteria.MinimumValidUntilTS, sk)
53 if criteria.MinimumValidUntilTS != 0 {
54 // check if it's still valid. if they have the same value that's also valid
55 if sk.ValidUntilTS < criteria.MinimumValidUntilTS {
56 return nil, fmt.Errorf(
57 "found server response for key ID %s but it is no longer valid, min: %v valid_until: %v",
58 keyID, criteria.MinimumValidUntilTS, sk.ValidUntilTS,
59 )
60 }
61 }
62 results = append(results, sk)
63 }
64 return results, nil
65}
66
67func (a *FederationInternalAPI) QueryServerKeys(
68 ctx context.Context, req *api.QueryServerKeysRequest, res *api.QueryServerKeysResponse,

Callers 1

QueryServerKeysMethod · 0.95

Calls 2

InfofMethod · 0.80
GetNotaryKeysMethod · 0.65

Tested by

no test coverage detected