|
1 | 1 | import base64 |
2 | 2 | import logging |
3 | | -from typing import Tuple |
4 | 3 |
|
5 | 4 | import pyoprf |
6 | 5 |
|
7 | 6 | from app.exceptions.exception import CryptoError, InvalidJweError |
8 | 7 | from app.logging.events import PSE_EXCHANGE_FAILED, PSE_EXCHANGE_OK, log_event |
| 8 | +from app.models.pseudonym import PseudonymResponse |
9 | 9 | from app.services.crypto.crypto_service import CryptoService |
10 | 10 |
|
11 | 11 | logger = logging.getLogger(__name__) |
@@ -64,12 +64,22 @@ def decrypt_and_unblind(self, oprf_jwe: str, blind_factor: str) -> bytes: |
64 | 64 | ) |
65 | 65 | return result |
66 | 66 |
|
67 | | - def encrypt_pseudonym(self, pseudonym: bytes, hmac_hash: bytes) -> Tuple[str, str]: |
| 67 | + def encrypt_pseudonym( |
| 68 | + self, pseudonym: bytes, hmac_hash: bytes |
| 69 | + ) -> PseudonymResponse: |
68 | 70 | iv = hmac_hash[:16] |
69 | 71 | logger.debug("encrypting pseudonym") |
70 | 72 | encrypted_data = self._crypto_service.encrypt_aes(pseudonym, iv) |
71 | 73 | logger.debug("Pseudonym encrypted successfully") |
72 | | - return encrypted_data, base64.urlsafe_b64encode(iv).decode() |
| 74 | + |
| 75 | + label = self._crypto_service.aes_key_id |
| 76 | + mechanism = self._crypto_service.aes_mechanism |
| 77 | + return PseudonymResponse( |
| 78 | + encrypted_pseudonym=encrypted_data, |
| 79 | + iv=base64.urlsafe_b64encode(iv).decode(), |
| 80 | + label=label, |
| 81 | + mechanism=mechanism, |
| 82 | + ) |
73 | 83 |
|
74 | 84 | def hash(self, pseudonym: bytes) -> bytes: |
75 | 85 | logger.debug("Hashing pseudonym") |
|
0 commit comments