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 contextlib import asynccontextmanager
from datetime import datetime, timedelta, UTC from datetime import datetime, timedelta, UTC
from hashlib import sha256 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 import getenv as env
from os.path import join, dirname, isfile from os.path import join, dirname, isfile
from random import randbytes
from uuid import uuid4 from uuid import uuid4
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
@ -728,7 +727,8 @@ async def leasing_v1_lessor(request: Request):
logger.debug(response) 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}) 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) 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}) return JSONr(response, headers={'access-control-expose-headers': 'X-NLS-Signature', 'X-NLS-Signature': signature})

View File

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