55#include < cstddef>
66#include < expected>
77#include < optional>
8+ #include < string>
89
910#include " crypto_error.hpp"
11+ #include " crypto_log.hpp"
1012#include " defs.hpp"
1113#include " psa_backend.hpp"
1214#include " random.hpp"
@@ -213,7 +215,20 @@ auto aes256_gcm_encrypt(
213215 const std::optional<SecureBuffer>& aad = std::nullopt )
214216 -> std::expected<AesGcmResult, CryptoError>
215217{
216- return aes256_gcm_encrypt_impl<DefaultProvider>(key, plaintext, aad);
218+ if (crypto_log_enabled (CryptoLogLevel::Debug)) {
219+ crypto_log (CryptoLogLevel::Debug,
220+ crypto_log_detail::msg (" aes256_gcm_encrypt" ,
221+ " input" , plaintext.size (),
222+ " aad" , aad.has_value () ? aad->size () : 0U ));
223+ }
224+ auto result = aes256_gcm_encrypt_impl<DefaultProvider>(key, plaintext, aad);
225+ if (!result.has_value ()) {
226+ crypto_log (CryptoLogLevel::Error, " aes256_gcm_encrypt: " + result.error ().message ());
227+ } else if (crypto_log_enabled (CryptoLogLevel::Debug)) {
228+ crypto_log (CryptoLogLevel::Debug,
229+ crypto_log_detail::msg (" aes256_gcm_encrypt" , " ciphertext" , result->ciphertext .size ()));
230+ }
231+ return result;
217232}
218233
219234[[nodiscard]]
@@ -223,7 +238,20 @@ inline auto aes256_gcm_decrypt(
223238 const std::optional<SecureBuffer>& aad = std::nullopt )
224239 -> std::expected<SecureBuffer, CryptoError>
225240{
226- return aes256_gcm_decrypt_impl<DefaultProvider>(key, ciphertext, aad);
241+ if (crypto_log_enabled (CryptoLogLevel::Debug)) {
242+ crypto_log (CryptoLogLevel::Debug,
243+ crypto_log_detail::msg (" aes256_gcm_decrypt" ,
244+ " ciphertext" , ciphertext.ciphertext .size (),
245+ " aad" , aad.has_value () ? aad->size () : 0U ));
246+ }
247+ auto result = aes256_gcm_decrypt_impl<DefaultProvider>(key, ciphertext, aad);
248+ if (!result.has_value ()) {
249+ crypto_log (CryptoLogLevel::Error, " aes256_gcm_decrypt: " + result.error ().message ());
250+ } else if (crypto_log_enabled (CryptoLogLevel::Debug)) {
251+ crypto_log (CryptoLogLevel::Debug,
252+ crypto_log_detail::msg (" aes256_gcm_decrypt" , " plaintext" , result->size ()));
253+ }
254+ return result;
227255}
228256
229257template <SecureBufferLike Plaintext>
@@ -234,7 +262,20 @@ auto chacha20_poly1305_encrypt(
234262 const std::optional<SecureBuffer>& aad = std::nullopt )
235263 -> std::expected<ChaCha20Poly1305Result, CryptoError>
236264{
237- return chacha20_poly1305_encrypt_impl<DefaultProvider>(key, plaintext, aad);
265+ if (crypto_log_enabled (CryptoLogLevel::Debug)) {
266+ crypto_log (CryptoLogLevel::Debug,
267+ crypto_log_detail::msg (" chacha20_poly1305_encrypt" ,
268+ " input" , plaintext.size (),
269+ " aad" , aad.has_value () ? aad->size () : 0U ));
270+ }
271+ auto result = chacha20_poly1305_encrypt_impl<DefaultProvider>(key, plaintext, aad);
272+ if (!result.has_value ()) {
273+ crypto_log (CryptoLogLevel::Error, " chacha20_poly1305_encrypt: " + result.error ().message ());
274+ } else if (crypto_log_enabled (CryptoLogLevel::Debug)) {
275+ crypto_log (CryptoLogLevel::Debug,
276+ crypto_log_detail::msg (" chacha20_poly1305_encrypt" , " ciphertext" , result->ciphertext .size ()));
277+ }
278+ return result;
238279}
239280
240281[[nodiscard]]
@@ -244,7 +285,20 @@ inline auto chacha20_poly1305_decrypt(
244285 const std::optional<SecureBuffer>& aad = std::nullopt )
245286 -> std::expected<SecureBuffer, CryptoError>
246287{
247- return chacha20_poly1305_decrypt_impl<DefaultProvider>(key, ciphertext, aad);
288+ if (crypto_log_enabled (CryptoLogLevel::Debug)) {
289+ crypto_log (CryptoLogLevel::Debug,
290+ crypto_log_detail::msg (" chacha20_poly1305_decrypt" ,
291+ " ciphertext" , ciphertext.ciphertext .size (),
292+ " aad" , aad.has_value () ? aad->size () : 0U ));
293+ }
294+ auto result = chacha20_poly1305_decrypt_impl<DefaultProvider>(key, ciphertext, aad);
295+ if (!result.has_value ()) {
296+ crypto_log (CryptoLogLevel::Error, " chacha20_poly1305_decrypt: " + result.error ().message ());
297+ } else if (crypto_log_enabled (CryptoLogLevel::Debug)) {
298+ crypto_log (CryptoLogLevel::Debug,
299+ crypto_log_detail::msg (" chacha20_poly1305_decrypt" , " plaintext" , result->size ()));
300+ }
301+ return result;
248302}
249303
250304
@@ -259,7 +313,20 @@ auto symmetric_encrypt(
259313 const std::optional<SecureBuffer>& aad = std::nullopt )
260314 -> std::expected<AesGcmResult, CryptoError>
261315{
262- return aes256_gcm_encrypt_impl<DefaultProvider>(key, plaintext, aad);
316+ if (crypto_log_enabled (CryptoLogLevel::Debug)) {
317+ crypto_log (CryptoLogLevel::Debug,
318+ crypto_log_detail::msg (" symmetric_encrypt" ,
319+ " input" , plaintext.size (),
320+ " aad" , aad.has_value () ? aad->size () : 0U ));
321+ }
322+ auto result = aes256_gcm_encrypt_impl<DefaultProvider>(key, plaintext, aad);
323+ if (!result.has_value ()) {
324+ crypto_log (CryptoLogLevel::Error, " symmetric_encrypt: " + result.error ().message ());
325+ } else if (crypto_log_enabled (CryptoLogLevel::Debug)) {
326+ crypto_log (CryptoLogLevel::Debug,
327+ crypto_log_detail::msg (" symmetric_encrypt" , " ciphertext" , result->ciphertext .size ()));
328+ }
329+ return result;
263330}
264331
265332[[nodiscard]]
@@ -269,5 +336,18 @@ inline auto symmetric_decrypt(
269336 const std::optional<SecureBuffer>& aad = std::nullopt )
270337 -> std::expected<SecureBuffer, CryptoError>
271338{
272- return aes256_gcm_decrypt_impl<DefaultProvider>(key, ciphertext, aad);
339+ if (crypto_log_enabled (CryptoLogLevel::Debug)) {
340+ crypto_log (CryptoLogLevel::Debug,
341+ crypto_log_detail::msg (" symmetric_decrypt" ,
342+ " ciphertext" , ciphertext.ciphertext .size (),
343+ " aad" , aad.has_value () ? aad->size () : 0U ));
344+ }
345+ auto result = aes256_gcm_decrypt_impl<DefaultProvider>(key, ciphertext, aad);
346+ if (!result.has_value ()) {
347+ crypto_log (CryptoLogLevel::Error, " symmetric_decrypt: " + result.error ().message ());
348+ } else if (crypto_log_enabled (CryptoLogLevel::Debug)) {
349+ crypto_log (CryptoLogLevel::Debug,
350+ crypto_log_detail::msg (" symmetric_decrypt" , " plaintext" , result->size ()));
351+ }
352+ return result;
273353}
0 commit comments