diff options
author | Andrew Godwin | 2022-11-20 18:32:55 -0700 |
---|---|---|
committer | Andrew Godwin | 2022-11-20 18:32:55 -0700 |
commit | 97a841d1bbbc105124e9c0f2b8d8629573743b36 (patch) | |
tree | 73ebe2b784e6f6a1734c4ab753b78919f9d70ee7 /users/models/identity.py | |
parent | 5ddce16213a8e7b4e9d052a14ed8d7e37ac5f068 (diff) | |
download | takahe-97a841d1bbbc105124e9c0f2b8d8629573743b36.tar.gz takahe-97a841d1bbbc105124e9c0f2b8d8629573743b36.tar.bz2 takahe-97a841d1bbbc105124e9c0f2b8d8629573743b36.zip |
Move signed request onto Identity as a shortcut
Diffstat (limited to 'users/models/identity.py')
-rw-r--r-- | users/models/identity.py | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/users/models/identity.py b/users/models/identity.py index 98e7df9..c2edf92 100644 --- a/users/models/identity.py +++ b/users/models/identity.py @@ -1,5 +1,5 @@ from functools import partial -from typing import Optional, Tuple +from typing import Dict, Literal, Optional, Tuple from urllib.parse import urlparse import httpx @@ -13,7 +13,7 @@ from django.utils import timezone from core.exceptions import ActorMismatchError from core.html import sanitize_post from core.ld import canonicalise, media_type_from_filename -from core.signatures import RsaKeys +from core.signatures import HttpSignature, RsaKeys from core.uploads import upload_namer from stator.models import State, StateField, StateGraph, StatorModel from users.models.domain import Domain @@ -384,6 +384,23 @@ class Identity(StatorModel): ### Cryptography ### + async def signed_request( + self, + method: Literal["get", "post"], + uri: str, + body: Optional[Dict] = None, + ): + """ + Performs a signed request on behalf of the System Actor. + """ + return await HttpSignature.signed_request( + method=method, + uri=uri, + body=body, + private_key=self.private_key, + key_id=self.public_key_id, + ) + def generate_keypair(self): if not self.local: raise ValueError("Cannot generate keypair for remote user") |