feat(backup): chiffrement Fernet des sauvegardes
- Ajouter encrypt() et decrypt() avec clés Fernet urlsafe-base64 - Tests de roundtrip et échec avec mauvaise clé Fixes #89
This commit is contained in:
@@ -0,0 +1,9 @@
|
|||||||
|
from cryptography.fernet import Fernet
|
||||||
|
|
||||||
|
|
||||||
|
def encrypt(data: bytes, key: str) -> bytes:
|
||||||
|
return Fernet(key.encode()).encrypt(data)
|
||||||
|
|
||||||
|
|
||||||
|
def decrypt(token: bytes, key: str) -> bytes:
|
||||||
|
return Fernet(key.encode()).decrypt(token)
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import pytest
|
||||||
|
from cryptography.fernet import Fernet
|
||||||
|
|
||||||
|
from src.backup.crypto import decrypt, encrypt
|
||||||
|
|
||||||
|
|
||||||
|
def test_roundtrip():
|
||||||
|
key = Fernet.generate_key().decode()
|
||||||
|
data = b"contenu de la base sqlite"
|
||||||
|
assert decrypt(encrypt(data, key), key) == data
|
||||||
|
|
||||||
|
|
||||||
|
def test_wrong_key_fails():
|
||||||
|
data = b"secret"
|
||||||
|
token = encrypt(data, Fernet.generate_key().decode())
|
||||||
|
with pytest.raises(Exception):
|
||||||
|
decrypt(token, Fernet.generate_key().decode())
|
||||||
Reference in New Issue
Block a user