diff --git a/backend/app/dependencies.py b/backend/app/dependencies.py index 722fdabf..078f36a5 100644 --- a/backend/app/dependencies.py +++ b/backend/app/dependencies.py @@ -1,16 +1,13 @@ from fastapi import Depends, HTTPException, status, Request from fastapi.security import APIKeyHeader, OAuth2PasswordBearer from jose import JWTError, jwe, jwt -from Crypto.Protocol.KDF import HKDF -from Crypto.Hash import SHA256 +from cryptography.hazmat.primitives.kdf.hkdf import HKDF +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.backends import default_backend from typing import Any import json -import logging from app.config import get_settings - - -logger = logging.getLogger(__name__) -logger.setLevel(logging.INFO) +from app.utils import logger api_key_header = APIKeyHeader(name=get_settings().API_KEY_NAME, auto_error=False) @@ -43,14 +40,14 @@ def get_user(user_id: str): def get_derived_encryption_key(secret: str) -> Any: context = str.encode("NextAuth.js Generated Encryption Key") - return HKDF( - master=secret.encode(), - key_len=32, - salt="".encode(), - hashmod=SHA256, - num_keys=1, - context=context, + hkdf = HKDF( + algorithm=hashes.SHA256(), + length=32, + salt=b"", + info=context, + backend=default_backend() ) + return hkdf.derive(secret.encode()) def get_token_payload(token: str, secret: str) -> dict[str, Any]: diff --git a/backend/app/plan/router.py b/backend/app/plan/router.py index 430ba8cd..e0c975b3 100644 --- a/backend/app/plan/router.py +++ b/backend/app/plan/router.py @@ -1,9 +1,9 @@ from fastapi import APIRouter, Depends from app.dependencies import validate_token from app.plan.schemas import PlanTriggerRequest -from app.utils import read_csv_from_s3 +from app.utils import read_csv_from_s3, logger from app.config import get_settings -from app.utils import logger + router = APIRouter( prefix="/plan", diff --git a/backend/app/utils.py b/backend/app/utils.py index 4780a5ca..77d220ae 100644 --- a/backend/app/utils.py +++ b/backend/app/utils.py @@ -3,6 +3,11 @@ import csv from io import StringIO import string import secrets +import logging + + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) def read_csv_from_s3(bucket_name, filepath): diff --git a/backend/docker/Dockerfile.lambda b/backend/docker/Dockerfile.lambda new file mode 100644 index 00000000..4d54befe --- /dev/null +++ b/backend/docker/Dockerfile.lambda @@ -0,0 +1,11 @@ +FROM python:3.10.12-slim-buster + +WORKDIR /var/task + +# Install python dependencies +COPY ./requirements/base.txt ./requirements/base.txt +RUN pip install --upgrade pip +RUN pip install -r requirements/base.txt + +# Copy project +COPY . . diff --git a/backend/requirements/base.txt b/backend/requirements/base.txt index 11cd3326..923f17f9 100644 --- a/backend/requirements/base.txt +++ b/backend/requirements/base.txt @@ -25,5 +25,4 @@ uvicorn==0.22.0 uvloop==0.17.0 watchfiles==0.19.0 websockets==11.0.3 -boto3 -pycryptodome \ No newline at end of file +boto3 \ No newline at end of file