fixed signature

This commit is contained in:
Oscar Krause 2025-04-14 20:05:43 +02:00
parent f9fccd5502
commit 7b2d61b329
2 changed files with 11 additions and 5 deletions

View File

@ -4,10 +4,9 @@ from calendar import timegm
from contextlib import asynccontextmanager
from datetime import datetime, timedelta, UTC
from hashlib import sha256
from json import loads as json_loads
from json import loads as json_loads, dumps as json_dumps
from os import getenv as env
from os.path import join, dirname, isfile
from random import randbytes
from uuid import uuid4
from dateutil.relativedelta import relativedelta
@ -728,7 +727,8 @@ async def leasing_v1_lessor(request: Request):
logger.debug(response)
signature = f'b\'{randbytes(256).hex()}\''
signature = INSTANCE_KEY_RSA.generate_signature(json_dumps(response).encode('utf-8'))
signature = f'b\'{signature.hex()}\''
return JSONr(response, headers={'access-control-expose-headers': 'X-NLS-Signature', 'X-NLS-Signature': signature})
@ -780,7 +780,8 @@ async def leasing_v1_lease_renew(request: Request, lease_ref: str):
Lease.renew(db, entity, expires, cur_time)
signature = f'b\'{randbytes(256).hex()}\''
signature = INSTANCE_KEY_RSA.generate_signature(json_dumps(response).encode('utf-8'))
signature = f'b\'{signature.hex()}\''
return JSONr(response, headers={'access-control-expose-headers': 'X-NLS-Signature', 'X-NLS-Signature': signature})

View File

@ -1,7 +1,9 @@
import logging
from json import loads as json_loads
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric.padding import PKCS1v15
from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateKey, RSAPublicKey, generate_private_key
from cryptography.hazmat.primitives.hashes import SHA256
from cryptography.hazmat.primitives.serialization import load_pem_private_key, load_pem_public_key
from cryptography.x509 import load_pem_x509_certificate, Certificate
@ -40,6 +42,9 @@ class PrivateKey:
)
return PublicKey(data=data)
def generate_signature(self, data: bytes) -> bytes:
return self.__key.sign(data, PKCS1v15(), SHA256())
@staticmethod
def generate(public_exponent: int = 65537, key_size: int = 2048) -> "PrivateKey":
log = logging.getLogger(__name__)