[gnutls-devel] GnuTLS | AEAD output difference on Mac (#1494)
    Read-only notification of GnuTLS library development activities 
    gnutls-devel at lists.gnutls.org
       
    Tue Jul 18 21:39:06 CEST 2023
    
    
  
Vivien Kraus Would Rather Not Be On Gitlab_com commented on a discussion: https://gitlab.com/gnutls/gnutls/-/issues/1494#note_1475467677
@jas can you try this with gnutls:
```c
#include <gnutls/crypto.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int
main ()
{
  static const gnutls_cipher_algorithm_t algo = GNUTLS_CIPHER_AES_256_GCM;
  static const char *key = "the secret key is 32 bytes long.";
  gnutls_datum_t datum_key;
  datum_key.data = (unsigned char *) key;
  datum_key.size = strlen (key);
  gnutls_aead_cipher_hd_t handle;
  if (gnutls_aead_cipher_init (&handle, algo, &datum_key))
    {
      return EXIT_FAILURE;
    }
  static const char *nonce = "Never encrypt more data with this nonce";
  static const char *auth = "Additional secret data";
  static const int tag_size = 16;
  static const char *data = "Confidential data.";
  size_t used_size = tag_size + strlen (data);
  char output[used_size];
  if (gnutls_aead_cipher_encrypt (handle,
                                  nonce, strlen (nonce),
                                  auth, strlen (auth),
                                  tag_size,
                                  data, strlen (data),
                                  output, &used_size))
    {
      return EXIT_FAILURE;
    }
  if (used_size != 34)
    {
      return EXIT_FAILURE;
    }
  gnutls_aead_cipher_deinit (handle);
  /* Decryption */
  size_t decryption_used_size = strlen (data);
  char decrypted_output[decryption_used_size];
  if (gnutls_aead_cipher_init (&handle, algo, &datum_key))
    {
      return EXIT_FAILURE;
    }
  if (gnutls_aead_cipher_decrypt (handle,
                                  nonce, strlen (nonce),
                                  auth, strlen (auth),
                                  tag_size,
                                  output, used_size,
                                  decrypted_output, &decryption_used_size))
    {
      fprintf (stderr, "Gnutls cannot decrypt, even if we have the exact same nonce.\n");
      return EXIT_FAILURE;
    }
  fprintf (stderr, "Gnutls can decrypt if we have the same nonce.\n");
  return EXIT_SUCCESS;
}
```
-- 
Reply to this email directly or view it on GitLab: https://gitlab.com/gnutls/gnutls/-/issues/1494#note_1475467677
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gnupg.org/pipermail/gnutls-devel/attachments/20230718/8e4cac3d/attachment.html>
    
    
More information about the Gnutls-devel
mailing list