|
13 | 13 | from aleph_message.models import ItemHash |
14 | 14 | from eth_account import Account |
15 | 15 | from eth_account.messages import encode_defunct |
16 | | -from jwskate import Jwk |
| 16 | +from jwcrypto import jwk, jws |
17 | 17 | from pydantic import root_validator, validator |
18 | 18 | from pydantic.main import BaseModel |
19 | 19 |
|
@@ -77,12 +77,12 @@ class SignedPubKeyPayload(BaseModel): |
77 | 77 | # alg: Literal["ECDSA"] |
78 | 78 | domain: str |
79 | 79 | address: str |
80 | | - expires: str |
| 80 | + expires: str |
81 | 81 |
|
82 | 82 | @property |
83 | | - def json_web_key(self) -> Jwk: |
| 83 | + def json_web_key(self) -> jwk.JWK: |
84 | 84 | """Return the ephemeral public key as Json Web Key""" |
85 | | - return Jwk(self.pubkey) |
| 85 | + return jwk.JWK.from_json(self.pubkey) |
86 | 86 |
|
87 | 87 |
|
88 | 88 | class SignedPubKeyHeader(BaseModel): |
@@ -188,12 +188,9 @@ def get_signed_operation(request: web.Request) -> SignedOperation: |
188 | 188 | async def authenticate_jwk(request: web.Request) -> str: |
189 | 189 | signed_pubkey = get_signed_pubkey(request) |
190 | 190 | signed_operation = get_signed_operation(request) |
| 191 | + jws = jws.JWSCore(alg="ES256", key=signed_pubkey.content.json_web_key, payload=signed_operation.payload) |
191 | 192 |
|
192 | | - if signed_pubkey.content.json_web_key.verify( |
193 | | - data=signed_operation.payload, |
194 | | - signature=signed_operation.signature, |
195 | | - alg="ES256", |
196 | | - ): |
| 193 | + if jws.verify(signature=signed_operation.signature): |
197 | 194 | logger.debug("Signature verified") |
198 | 195 | return signed_pubkey.content.address |
199 | 196 | else: |
|
0 commit comments