123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- # Copyright 2014 OpenMarket Ltd
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- from typing import TYPE_CHECKING, Any, Dict
- import signedjson.sign
- if TYPE_CHECKING:
- from sydent.sydent import Sydent
- from sydent.threepid import ThreepidAssociation
- class Signer:
- def __init__(self, sydent: "Sydent") -> None:
- self.sydent = sydent
- def signedThreePidAssociation(self, assoc: "ThreepidAssociation") -> Dict[str, Any]:
- """
- Signs a 3PID association.
- :param assoc: The association to sign.
- :return: A signed representation of the association.
- """
- sgassoc = {
- "medium": assoc.medium,
- "address": assoc.address,
- "mxid": assoc.mxid,
- "ts": assoc.ts,
- "not_before": assoc.not_before,
- "not_after": assoc.not_after,
- }
- sgassoc.update(assoc.extra_fields)
- sgassoc = signedjson.sign.sign_json(
- sgassoc, self.sydent.config.general.server_name, self.sydent.keyring.ed25519
- )
- return sgassoc
|