xform_gmac.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /* $OpenBSD: xform.c,v 1.16 2001/08/28 12:20:43 ben Exp $ */
  2. /*-
  3. * The authors of this code are John Ioannidis (ji@tla.org),
  4. * Angelos D. Keromytis (kermit@csd.uch.gr),
  5. * Niels Provos (provos@physnet.uni-hamburg.de) and
  6. * Damien Miller (djm@mindrot.org).
  7. *
  8. * This code was written by John Ioannidis for BSD/OS in Athens, Greece,
  9. * in November 1995.
  10. *
  11. * Ported to OpenBSD and NetBSD, with additional transforms, in December 1996,
  12. * by Angelos D. Keromytis.
  13. *
  14. * Additional transforms and features in 1997 and 1998 by Angelos D. Keromytis
  15. * and Niels Provos.
  16. *
  17. * Additional features in 1999 by Angelos D. Keromytis.
  18. *
  19. * AES XTS implementation in 2008 by Damien Miller
  20. *
  21. * Copyright (C) 1995, 1996, 1997, 1998, 1999 by John Ioannidis,
  22. * Angelos D. Keromytis and Niels Provos.
  23. *
  24. * Copyright (C) 2001, Angelos D. Keromytis.
  25. *
  26. * Copyright (C) 2008, Damien Miller
  27. * Copyright (c) 2014 The FreeBSD Foundation
  28. * All rights reserved.
  29. *
  30. * Portions of this software were developed by John-Mark Gurney
  31. * under sponsorship of the FreeBSD Foundation and
  32. * Rubicon Communications, LLC (Netgate).
  33. *
  34. * Permission to use, copy, and modify this software with or without fee
  35. * is hereby granted, provided that this entire notice is included in
  36. * all copies of any software which is or includes a copy or
  37. * modification of this software.
  38. * You may use this code under the GNU public license if you so wish. Please
  39. * contribute changes back to the authors under this freer than GPL license
  40. * so that we may further the use of strong encryption without limitations to
  41. * all.
  42. *
  43. * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR
  44. * IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY
  45. * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE
  46. * MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR
  47. * PURPOSE.
  48. */
  49. #include <sys/cdefs.h>
  50. __FBSDID("$FreeBSD$");
  51. #include <opencrypto/gmac.h>
  52. #include <opencrypto/xform_auth.h>
  53. /* Encryption instances */
  54. struct enc_xform enc_xform_aes_nist_gmac = {
  55. .type = CRYPTO_AES_NIST_GMAC,
  56. .name = "AES-GMAC",
  57. .blocksize = AES_ICM_BLOCK_LEN,
  58. .ivsize = AES_GCM_IV_LEN,
  59. .minkey = AES_MIN_KEY,
  60. .maxkey = AES_MAX_KEY,
  61. };
  62. /* Authentication instances */
  63. struct auth_hash auth_hash_nist_gmac_aes_128 = {
  64. .type = CRYPTO_AES_NIST_GMAC,
  65. .name = "GMAC-AES-128",
  66. .keysize = AES_128_GMAC_KEY_LEN,
  67. .hashsize = AES_GMAC_HASH_LEN,
  68. .ctxsize = sizeof(struct aes_gmac_ctx),
  69. .blocksize = GMAC_BLOCK_LEN,
  70. .Init = AES_GMAC_Init,
  71. .Setkey = AES_GMAC_Setkey,
  72. .Reinit = AES_GMAC_Reinit,
  73. .Update = AES_GMAC_Update,
  74. .Final = AES_GMAC_Final,
  75. };
  76. struct auth_hash auth_hash_nist_gmac_aes_192 = {
  77. .type = CRYPTO_AES_NIST_GMAC,
  78. .name = "GMAC-AES-192",
  79. .keysize = AES_192_GMAC_KEY_LEN,
  80. .hashsize = AES_GMAC_HASH_LEN,
  81. .ctxsize = sizeof(struct aes_gmac_ctx),
  82. .blocksize = GMAC_BLOCK_LEN,
  83. .Init = AES_GMAC_Init,
  84. .Setkey = AES_GMAC_Setkey,
  85. .Reinit = AES_GMAC_Reinit,
  86. .Update = AES_GMAC_Update,
  87. .Final = AES_GMAC_Final,
  88. };
  89. struct auth_hash auth_hash_nist_gmac_aes_256 = {
  90. .type = CRYPTO_AES_NIST_GMAC,
  91. .name = "GMAC-AES-256",
  92. .keysize = AES_256_GMAC_KEY_LEN,
  93. .hashsize = AES_GMAC_HASH_LEN,
  94. .ctxsize = sizeof(struct aes_gmac_ctx),
  95. .blocksize = GMAC_BLOCK_LEN,
  96. .Init = AES_GMAC_Init,
  97. .Setkey = AES_GMAC_Setkey,
  98. .Reinit = AES_GMAC_Reinit,
  99. .Update = AES_GMAC_Update,
  100. .Final = AES_GMAC_Final,
  101. };