fix/variable-encriptado
This commit is contained in:
@@ -28,16 +28,6 @@ from .schemas import (
|
||||
PersonaCove,
|
||||
)
|
||||
|
||||
|
||||
# Clave de encriptado/sal para hash de FIEL.
|
||||
# TODO: mover a configuración (p. ej. variable de entorno) cuando se habilite el flujo real.
|
||||
FIEL_ENCRYPTION_KEY = "6a7f92d3c8d1e5b3b0ac23ff1926a7c9"
|
||||
|
||||
# Flag para, en el futuro, activar el uso real de la FIEL hasheada.
|
||||
# Mientras sea False, se seguirá usando la clave FIEL hardcodeada de pruebas.
|
||||
USE_HASHED_FIEL_FOR_COVE = True
|
||||
|
||||
|
||||
@dataclass
|
||||
class InvoiceContext:
|
||||
invoice: InvoiceHeader
|
||||
@@ -92,13 +82,18 @@ class FacturaCoveDomainService:
|
||||
def _hash_fiel(self, raw_fiel: str) -> str:
|
||||
"""
|
||||
Calcula un hash determinista (base64) de la clave FIEL usando una
|
||||
clave de encriptado fija. Este valor es el que se enviará como
|
||||
`clave_fiel` al API externo cuando se active USE_HASHED_FIEL_FOR_COVE.
|
||||
clave de encriptado fija obtenida desde configuración. Este valor es
|
||||
el que se enviará como `clave_fiel` al API externo cuando exista una
|
||||
clave FIEL capturada en VU.
|
||||
"""
|
||||
if not raw_fiel:
|
||||
return ""
|
||||
|
||||
data = f"{FIEL_ENCRYPTION_KEY}:{raw_fiel}".encode("utf-8")
|
||||
hash_key = (settings.COVE_FIEL_HASH_KEY or "").strip()
|
||||
if not hash_key:
|
||||
return ""
|
||||
|
||||
data = f"{hash_key}:{raw_fiel}".encode("utf-8")
|
||||
digest = hashlib.sha256(data).digest()
|
||||
return base64.b64encode(digest).decode("ascii")
|
||||
|
||||
@@ -121,12 +116,12 @@ class FacturaCoveDomainService:
|
||||
|
||||
# Determinar clave FIEL efectiva.
|
||||
# Orden de prioridad:
|
||||
# 1) Si USE_HASHED_FIEL_FOR_COVE=True y existe vu.fiel_access_key, se hashea.
|
||||
# 1) Si existe vu.fiel_access_key, se hashea.
|
||||
# 2) En caso contrario, se usa la variable de entorno COVE_FIEL_PASSWORD.
|
||||
clave_fiel_value = ""
|
||||
|
||||
if USE_HASHED_FIEL_FOR_COVE and vu and getattr(vu, "fiel_access_key", None):
|
||||
# Usar la clave capturada en VU, hasheada con hashlib + FIEL_ENCRYPTION_KEY
|
||||
if vu and getattr(vu, "fiel_access_key", None):
|
||||
# Usar la clave capturada en VU, hasheada con hashlib + COVE_FIEL_HASH_KEY
|
||||
clave_fiel_value = self._hash_fiel(vu.fiel_access_key or "")
|
||||
|
||||
if not clave_fiel_value:
|
||||
|
||||
Reference in New Issue
Block a user