Пример #1
0
void
test_main (void)
{
  test_eddsa (&_nettle_curve25519, &nettle_sha512,
	      H("d75a980182b10ab7 d54bfed3c964073a"
		"0ee172f3daa62325 af021a68f707511a"),
	      SHEX(""),
	      H("e5564300c360ac72 9086e2cc806e828a"
		"84877f1eb8e5d974 d873e06522490155"
		"5fb8821590a33bac c61e39701cf9b46b"
		"d25bf5f0595bbe24 655141438e7a100b"));
  test_eddsa (&_nettle_curve25519, &nettle_sha512,
	      H("3d4017c3e843895a 92b70aa74d1b7ebc"
		"9c982ccf2ec4968c c0cd55f12af4660c"),
	      SHEX("72"),
	      H("92a009a9f0d4cab8 720e820b5f642540"
		"a2b27b5416503f8f b3762223ebdb69da"
		"085ac1e43e15996e 458f3613d0f11d8c"
		"387b2eaeb4302aee b00d291612bb0c00"));
  test_eddsa (&_nettle_curve25519, &nettle_sha512,
	      H("1ed506485b09a645 0be7c9337d9fe87e"
		"f99c96f8bd11cd63 1ca160d0fd73067e"),
	      SHEX("fbed2a7df418ec0e 8036312ec239fcee"
		   "6ef97dc8c2df1f2e 14adee287808b788"
		   "a6072143b851d975 c8e8a0299df846b1"
		   "9113e38cee83da71 ea8e9bd6f57bdcd3"
		   "557523f4feb616ca a595aea01eb0b3d4"
		   "90b99b525ea4fbb9 258bc7fbb0deea8f"
		   "568cb2"),
	      H("cbef65b6f3fd5809 69fc3340cfae4f7c"
		"99df1340cce54626 183144ef46887163"
		"4b0a5c0033534108 e1c67c0dc99d3014"
		"f01084e98c95e101 4b309b1dbb2e6704"));
}
Пример #2
0
void
test_main(void)
{
  test_hash(&nettle_sha1, SDATA(""),
	    SHEX("DA39A3EE5E6B4B0D 3255BFEF95601890 AFD80709")); 

  test_hash(&nettle_sha1, SDATA("a"),
	    SHEX("86F7E437FAA5A7FC E15D1DDCB9EAEAEA 377667B8")); 

  test_hash(&nettle_sha1, SDATA("abc"),
	    SHEX("A9993E364706816A BA3E25717850C26C 9CD0D89D"));
  
  test_hash(&nettle_sha1, SDATA("abcdefghijklmnopqrstuvwxyz"),
	    SHEX("32D10C7B8CF96570 CA04CE37F2A19D84 240D3A89"));
  
  test_hash(&nettle_sha1, SDATA("message digest"),
	    SHEX("C12252CEDA8BE899 4D5FA0290A47231C 1D16AAE3")); 

  test_hash(&nettle_sha1,
	    SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
		  "abcdefghijklmnopqrstuvwxyz0123456789"),
	    SHEX("761C457BF73B14D2 7E9E9265C46F4B4D DA11F940"));
  
  test_hash(&nettle_sha1,
	    SDATA("1234567890123456789012345678901234567890"
		  "1234567890123456789012345678901234567890"),
	    SHEX("50ABF5706A150990 A08B2C5EA40FA0E5 85554732"));

  /* Additional test vector, from Daniel Kahn Gillmor */
  test_hash(&nettle_sha1, SDATA("38"),
	    SHEX("5b384ce32d8cdef02bc3a139d4cac0a22bb029e8"));
}
Пример #3
0
void
test_main(void)
{
  /* 208 bit key. Test from GNUPG. */
  test_cipher(&nettle_blowfish128,
	      SDATA("abcdefghijklmnopqrstuvwxyz"),
	      SDATA("BLOWFISH"),
	      SHEX("32 4E D0 FE F4 13 A2 03"));
}
Пример #4
0
void
test_main(void)
{
  struct rsa_public_key pub;
  struct rsa_private_key priv;
  const struct tstring *sexp;

  rsa_public_key_init(&pub);
  rsa_private_key_init(&priv);

  sexp = SHEX("2831313a707269766174652d6b657928"
		"333a72736128313a6e36333a085c3408"
		"989acae4faec3cbbad91c90d34c1d259"
		"cd74121a36f38b0b51424a9b2be514a0"
		"4377113a6cdafe79dd7d5f2ecc8b5e96"
		"61189b86a7b22239907c252928313a65"
		"343a36ad4b1d2928313a6436333a06ee"
		"6d4ff3c239e408150daf8117abfa36a4"
		"0ad4455d9059a86d52f33a2de07418a0"
		"a699594588c64810248c9412d554f74a"
		"f947c73c32007e87c92f0937ed292831"
		"3a7033323a03259879b24315e9cf1425"
		"4824c7935d807cdb6990f414a0f65e60"
		"65130a611f2928313a7133323a02a81b"
		"a73bad45fc73b36deffce52d1b73e074"
		"7f4d8a82648cecd310448ea63b292831"
		"3a6133323a026cbdad5dd0046e093f06"
		"0ecd5b4ac918e098b0278bb752b7cadd"
		"6a8944f0b92928313a6233323a014875"
		"1e622d6d58e3bb094afd6edacf737035"
		"1d068e2ce9f565c5528c4a7473292831"
		"3a6333323a00f8a458ea73a018dc6fa5"
		"6863e3bc6de405f364f77dee6f096267"
	      "9ea1a8282e292929");
  ASSERT(rsa_keypair_from_sexp
	 (&pub, &priv, 0, sexp->length, sexp->data));

  test_rsa_key(&pub, &priv);

  rsa_public_key_clear(&pub);
  rsa_private_key_clear(&priv);
}
Пример #5
0
void
test_main(void)
{
  /* From Applied Cryptography */
  test_des(SHEX("01234567 89ABCDEF"), 1,
	   SHEX("01234567 89ABCDE7"),
	   SHEX("C9574425 6A5ED31D"));

  test_des(SHEX("01 01 01 01 01 01 01 80"), 1,
	   SHEX("00 00 00 00 00 00 00 00"),
	   SHEX("9C C6 2D F4 3B 6E ED 74"));

  test_des(SHEX("80 01 01 01 01 01 01 01"), 1,
	   SHEX("00 00 00 00 00 00 00 40"),
	   SHEX("A3 80 E0 2A 6B E5 46 96"));

  test_des(SHEX("08 19 2A 3B 4C 5D 6E 7F"), 1,
	   SHEX("00 00 00 00 00 00 00 00"),
	   SHEX("25 DD AC 3E 96 17 64 67"));

  test_des(SHEX("01 23 45 67 89 AB CD EF"), 1,
	   SDATA("Now is t"),
	   SHEX("3F A4 0E 8A 98 4D 48 15"));

  /* Same key, but with one bad parity bit, */
  test_des(SHEX("01 23 45 66 89 AB CD EF"), 0,
	   SDATA("Now is t"),
	   SHEX("3F A4 0E 8A 98 4D 48 15"));

  /* Parity check */
  {
    const struct tstring *s = SHEX("01 01 01 01 01 01 01 00");
    ASSERT (des_check_parity(s->length, s->data) == 0);
  }

  /* The four weak keys */
  test_weak(SHEX("01 01 01 01 01 01 01 01"));  
  test_weak(SHEX("FE FE FE FE FE FE FE FE"));
  test_weak(SHEX("1F 1F 1F 1F 0E 0E 0E 0E"));
  test_weak(SHEX("E0 E0 E0 E0 F1 F1 F1 F1"));

  /* Same weak key, but different parity. */
  test_weak(SHEX("E0 E0 E0 E0 F0 F1 F1 F1"));

  /* The six pairs of semiweak keys */
  test_weak(SHEX("01 FE 01 FE 01 FE 01 FE"));
  test_weak(SHEX("FE 01 FE 01 FE 01 FE 01"));

  test_weak(SHEX("1F E0 1F E0 0E F1 0E F1"));
  test_weak(SHEX("E0 1F E0 1F F1 0E F1 0E"));

  test_weak(SHEX("01 E0 01 E0 01 F1 01 F1"));
  test_weak(SHEX("E0 01 E0 01 F1 01 F1 01"));

  test_weak(SHEX("1F FE 1F FE 0E FE 0E FE"));
  test_weak(SHEX("FE 1F FE 1F FE 0E FE 0E"));

  test_weak(SHEX("01 1F 01 1F 01 0E 01 0E"));
  test_weak(SHEX("1F 01 1F 01 0E 01 0E 01"));

  test_weak(SHEX("E0 FE E0 FE F1 FE F1 FE"));
  test_weak(SHEX("FE E0 FE E0 FE F1 FE F1"));
}
Пример #6
0
void
test_main (void)
{
  unsigned i;
  struct knuth_lfib_ctx rctx;
  struct dsa_signature signature;

  struct tstring *digest;

  knuth_lfib_init (&rctx, 4711);
  dsa_signature_init (&signature);

  digest = SHEX (/* sha256("abc") */
		 "BA7816BF 8F01CFEA 414140DE 5DAE2223"
		 "B00361A3 96177A9C B410FF61 F20015AD");

  for (i = 0; ecc_curves[i]; i++)
    {
      const struct ecc_curve *ecc = ecc_curves[i];
      struct ecc_point pub;
      struct ecc_scalar key;

      if (verbose)
	fprintf (stderr, "Curve %d\n", ecc->bit_size);

      ecc_point_init (&pub, ecc);
      ecc_scalar_init (&key, ecc);

      ecdsa_generate_keypair (&pub, &key,
			      &rctx,
			      (nettle_random_func *) knuth_lfib_random);

      if (verbose)
	{
	  gmp_fprintf (stderr,
		       "Public key:\nx = %Nx\ny = %Nx\n",
		       pub.p, ecc->size, pub.p + ecc->size, ecc->size);
	  gmp_fprintf (stderr,
		       "Private key: %Nx\n", key.p, ecc->size);
	}
      if (!ecc_valid_p (&pub))
	die ("ecdsa_generate_keypair produced an invalid point.\n");

      ecdsa_sign (&key,
		  &rctx, (nettle_random_func *) knuth_lfib_random,
		  digest->length, digest->data,
		  &signature);

      if (!ecdsa_verify (&pub, digest->length, digest->data,
			  &signature))
	die ("ecdsa_verify failed.\n");

      digest->data[3] ^= 17;
      if (ecdsa_verify (&pub, digest->length, digest->data,
			 &signature))
	die ("ecdsa_verify  returned success with invalid digest.\n");
      digest->data[3] ^= 17;

      mpz_combit (signature.r, 117);
      if (ecdsa_verify (&pub, digest->length, digest->data,
			 &signature))
	die ("ecdsa_verify  returned success with invalid signature.r.\n");

      mpz_combit (signature.r, 117);
      mpz_combit (signature.s, 93);
      if (ecdsa_verify (&pub, digest->length, digest->data,
			 &signature))
	die ("ecdsa_verify  returned success with invalid signature.s.\n");

      ecc_point_clear (&pub);
      ecc_scalar_clear (&key);
    }
  dsa_signature_clear (&signature);
}
Пример #7
0
void
test_main(void)
{
  test_hash(&nettle_md5, SDATA(""),
	    SHEX("D41D8CD98F00B204 E9800998ECF8427E"));

  test_hash(&nettle_md5, SDATA("a"),
	    SHEX("0CC175B9C0F1B6A8 31C399E269772661"));
	    
  test_hash(&nettle_md5, SDATA("abc"),
	    SHEX("900150983cd24fb0 D6963F7D28E17F72"));

  test_hash(&nettle_md5, SDATA("message digest"),
	    SHEX("F96B697D7CB7938D 525A2F31AAF161D0"));
  
  test_hash(&nettle_md5, SDATA("abcdefghijklmnopqrstuvwxyz"),
	    SHEX("C3FCD3D76192E400 7DFB496CCA67E13B"));
  
  test_hash(&nettle_md5,
	    SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
		  "abcdefghijklmnopqrstuvwxyz"
		  "0123456789"),
	    SHEX("D174AB98D277D9F5 A5611C2C9F419D9F"));

  test_hash(&nettle_md5,
	    SDATA("1234567890123456789012345678901234567890"
		  "1234567890123456789012345678901234567890"),
	    SHEX("57EDF4A22BE3C955 AC49DA2E2107B67A"));

  /* Additional test vector, from Daniel Kahn Gillmor */
  test_hash(&nettle_md5, SDATA("38"),
	    SHEX("a5771bce93e200c3 6f7cd9dfd0e5deaa"));

  /* Collisions, reported by Xiaoyun Wang1, Dengguo Feng2, Xuejia
     Lai3, Hongbo Yu1, http://eprint.iacr.org/2004/199. */

#define M0 \
  /*                                          vv */				\
  "d131dd02 c5e6eec4 693d9a06 98aff95c 2fcab5 87 12467eab 4004583e b8fb7f89"	\
  "55ad3406 09f4b302 83e48883 25 71 415a 085125e8 f7cdc99f d91dbd f2 80373c5b"	\
  /*                             ^^                               ^^ */

#define M1 \
  /*                                          vv */				\
  "d131dd02 c5e6eec4 693d9a06 98aff95c 2fcab5 07 12467eab 4004583e b8fb7f89"	\
  "55ad3406 09f4b302 83e48883 25 f1 415a 085125e8 f7cdc99f d91dbd 72 80373c5b"	\
  /*                             ^^                               ^^ */

#define N0									\
  /*                                          vv */				\
  "960b1dd1 dc417b9c e4d897f4 5a6555d5 35739a c7 f0ebfd0c 3029f166 d109b18f"	\
  "75277f79 30d55ceb 22e8adba 79 cc 155c ed74cbdd 5fc5d36d b19b0a d8 35cca7e3"	\
  /*                             ^^                               ^^ */

#define N1									\
  /*                                          vv */				\
  "960b1dd1 dc417b9c e4d897f4 5a6555d5 35739a 47 f0ebfd0c 3029f166 d109b18f"	\
  "75277f79 30d55ceb 22e8adba 79 4c 155c ed74cbdd 5fc5d36d b19b0a 58 35cca7e3"	\
  /*                             ^^                               ^^ */

  /* Note: The checksum in the paper, 1f160396 efc71ff4 bcff659f
     bf9d0fa3, is incorrect. */

#define H0 "a4c0d35c 95a63a80 5915367d cfe6b751"

#define N2									\
  /*                                          vv */				\
  "d8823e31 56348f5b ae6dacd4 36c919c6 dd53e2 b4 87da03fd 02396306 d248cda0"	\
  "e99f3342 0f577ee8 ce54b670 80 a8 0d1e c69821bc b6a88393 96f965 2b 6ff72a70"	\
  /*                             ^^                               ^^ */

#define N3									\
  /*                                          vv */				\
  "d8823e31 56348f5b ae6dacd4 36c919c6 dd53e2 34 87da03fd 02396306 d248cda0"	\
  "e99f3342 0f577ee8 ce54b670 80 28 0d1e c69821bc b6a88393 96f965 ab 6ff72a70"	\
  /*                             ^^                               ^^ */

  /* Note: Also different from the checksum in the paper */
  
#define H1 "79054025 255fb1a2 6e4bc422 aef54eb4"
  
  test_hash(&nettle_md5,
	    SHEX(M0 N0), SHEX(H0));

  test_hash(&nettle_md5,
	    SHEX(M1 N1), SHEX(H0));

  test_hash(&nettle_md5,
	    SHEX(M0 N2), SHEX(H1));

  test_hash(&nettle_md5,
	    SHEX(M1 N3), SHEX(H1));
}
Пример #8
0
void
test_main(void)
{
  /* 
   * GCM-AES Test Vectors from
   * http://www.cryptobarn.com/papers/gcm-spec.pdf
   */

  /* Test case 1 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("00000000000000000000000000000000"),	/* key */
	    SHEX(""),					/* auth data */ 
	    SHEX(""),					/* plaintext */
	    SHEX(""),					/* ciphertext*/
	    SHEX("000000000000000000000000"),		/* IV */
	    SHEX("58e2fccefa7e3061367f1d57a4e7455a"));	/* tag */

  /* Test case 2 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("00000000000000000000000000000000"),
	    SHEX(""),
	    SHEX("00000000000000000000000000000000"),
	    SHEX("0388dace60b6a392f328c2b971b2fe78"),
	    SHEX("000000000000000000000000"),
	    SHEX("ab6e47d42cec13bdf53a67b21257bddf"));

  /* Test case 3 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"),
	    SHEX(""),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b391aafd255"),
	    SHEX("42831ec2217774244b7221b784d0d49c"
		 "e3aa212f2c02a4e035c17e2329aca12e"
		 "21d514b25466931c7d8f6a5aac84aa05"
		 "1ba30b396a0aac973d58e091473f5985"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("4d5c2af327cd64a62cf35abd2ba6fab4"));

  /* Test case 4 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("42831ec2217774244b7221b784d0d49c"
		 "e3aa212f2c02a4e035c17e2329aca12e"
		 "21d514b25466931c7d8f6a5aac84aa05"
		 "1ba30b396a0aac973d58e091"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("5bc94fbc3221a5db94fae95ae7121a47"));

  /* Test case 5 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("61353b4c2806934a777ff51fa22a4755"
		 "699b2a714fcdc6f83766e5f97b6c7423"
		 "73806900e49f24b22b097544d4896b42"
		 "4989b5e1ebac0f07c23f4598"),
	    SHEX("cafebabefacedbad"),
	    SHEX("3612d2e79e3b0785561be14aaca2fccb"));

  /* Test case 6 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("8ce24998625615b603a033aca13fb894"
		 "be9112a5c3a211a8ba262a3cca7e2ca7"
		 "01e4a9a4fba43c90ccdcb281d48c7c6f"
		 "d62875d2aca417034c34aee5"),
	    SHEX("9313225df88406e555909c5aff5269aa"
		 "6a7a9538534f7da1e4c303d2a318a728"
		 "c3c0c95156809539fcf0e2429a6b5254"
		 "16aedbf5a0de6a57a637b39b"),
	    SHEX("619cc5aefffe0bfa462af43c1699d050"));
  
  /* Test case 7 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("00000000000000000000000000000000"
		 "0000000000000000"),
	    SHEX(""),
	    SHEX(""),
	    SHEX(""),
	    SHEX("000000000000000000000000"),
	    SHEX("cd33b28ac773f74ba00ed1f312572435"));

  /* Test case 8 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("00000000000000000000000000000000"
		 "0000000000000000"),
	    SHEX(""),
	    SHEX("00000000000000000000000000000000"),
	    SHEX("98e7247c07f0fe411c267e4384b0f600"),
	    SHEX("000000000000000000000000"),
	    SHEX("2ff58d80033927ab8ef4d4587514f0fb"));

  /* Test case 9 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c"),
	    SHEX(""),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b391aafd255"),
	    SHEX("3980ca0b3c00e841eb06fac4872a2757"
		 "859e1ceaa6efd984628593b40ca1e19c"
		 "7d773d00c144c525ac619d18c84a3f47"
		 "18e2448b2fe324d9ccda2710acade256"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("9924a7c8587336bfb118024db8674a14"));

  /* Test case 10 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("3980ca0b3c00e841eb06fac4872a2757"
		 "859e1ceaa6efd984628593b40ca1e19c"
		 "7d773d00c144c525ac619d18c84a3f47"
		 "18e2448b2fe324d9ccda2710"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("2519498e80f1478f37ba55bd6d27618c"));

  /* Test case 11 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("0f10f599ae14a154ed24b36e25324db8"
		 "c566632ef2bbb34f8347280fc4507057"
		 "fddc29df9a471f75c66541d4d4dad1c9"
		 "e93a19a58e8b473fa0f062f7"),
	    SHEX("cafebabefacedbad"),
	    SHEX("65dcc57fcf623a24094fcca40d3533f8"));

  /* Test case 12 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("d27e88681ce3243c4830165a8fdcf9ff"
		 "1de9a1d8e6b447ef6ef7b79828666e45"
		 "81e79012af34ddd9e2f037589b292db3"
		 "e67c036745fa22e7e9b7373b"),
	    SHEX("9313225df88406e555909c5aff5269aa"
		 "6a7a9538534f7da1e4c303d2a318a728"
		 "c3c0c95156809539fcf0e2429a6b5254"
		 "16aedbf5a0de6a57a637b39b"),
	    SHEX("dcf566ff291c25bbb8568fc3d376a6d9"));

  /* Test case 13 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("00000000000000000000000000000000"
		 "00000000000000000000000000000000"),
	    SHEX(""),
	    SHEX(""),
	    SHEX(""),
	    SHEX("000000000000000000000000"),
	    SHEX("530f8afbc74536b9a963b4f1c4cb738b"));

  /* Test case 14 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("00000000000000000000000000000000"
		 "00000000000000000000000000000000"),
	    SHEX(""),
	    SHEX("00000000000000000000000000000000"),
	    SHEX("cea7403d4d606b6e074ec5d3baf39d18"),
	    SHEX("000000000000000000000000"),
	    SHEX("d0d1c8a799996bf0265b98b5d48ab919"));

  /* Test case 15 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c6d6a8f9467308308"),
	    SHEX(""),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b391aafd255"),
	    SHEX("522dc1f099567d07f47f37a32a84427d"
		 "643a8cdcbfe5c0c97598a2bd2555d1aa"
		 "8cb08e48590dbb3da7b08b1056828838"
		 "c5f61e6393ba7a0abcc9f662898015ad"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("b094dac5d93471bdec1a502270e3cc6c"));

  /* Test case 16 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("522dc1f099567d07f47f37a32a84427d"
		 "643a8cdcbfe5c0c97598a2bd2555d1aa"
		 "8cb08e48590dbb3da7b08b1056828838"
		 "c5f61e6393ba7a0abcc9f662"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("76fc6ece0f4e1768cddf8853bb2d551b"));

  /* Test case 17 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("c3762df1ca787d32ae47c13bf19844cb"
		 "af1ae14d0b976afac52ff7d79bba9de0"
		 "feb582d33934a4f0954cc2363bc73f78"
		 "62ac430e64abe499f47c9b1f"),
	    SHEX("cafebabefacedbad"),
	    SHEX("3a337dbf46a792c45e454913fe2ea8f2"));

  /* Test case 18 */
  test_aead(&nettle_gcm_aes128,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("5a8def2f0c9e53f1f75d7853659e2a20"
		 "eeb2b22aafde6419a058ab4f6f746bf4"
		 "0fc0c3b780f244452da3ebf1c5d82cde"
		 "a2418997200ef82e44ae7e3f"),
	    SHEX("9313225df88406e555909c5aff5269aa"
		 "6a7a9538534f7da1e4c303d2a318a728"
		 "c3c0c95156809539fcf0e2429a6b5254"
		 "16aedbf5a0de6a57a637b39b"),
	    SHEX("a44a8266ee1c8eb0c8b5d4cf5ae9f19a"));
}
Пример #9
0
void
test_main(void)
{
  /* Intermediate values:
   *   iv XOR first message block:
   *       "a5 ce 55 d4 21 15 a1 c6 4a a4 0c b2 ca a6 d1 37"
   *   First ciphertext block, c1:
   *       "1f 94 fc 85 f2 36 21 06 4a ea e3 c9 cc 38 01 0e"
   *   c1 XOR second message block:
   *       "3f e0 94 ec 81 16 4e 68 26 93 c3 a6 a2 5b 64 2f"
   *   Second ciphertext block, c1:
   *       "7b f6 5f c5 02 59 2e 71 af bf 34 87 c0 36 2a 16"
   */

  test_cipher_cbc(&nettle_aes256,
		  SHEX("8d ae 93 ff fc 78 c9 44"
		       "2a bd 0c 1e 68 bc a6 c7"
		       "05 c7 84 e3 5a a9 11 8b"
		       "d3 16 aa 54 9b 44 08 9e"),
		  SDATA("Listen, I'll say this only once!"),
		  SHEX("1f 94 fc 85 f2 36 21 06"
		       "4a ea e3 c9 cc 38 01 0e"
		       "7b f6 5f c5 02 59 2e 71"
		       "af bf 34 87 c0 36 2a 16"),
		  SHEX("e9 a7 26 a0 44 7b 8d e6  03 83 60 de ea d5 b0 4e"));

  /* From NIST spec 800-38a on AES modes.
   *
   * F.2  CBC Example Vectors 
   * F.2.1 CBC-AES128.Encrypt
   */

  /* Intermediate values, blocks input to AES:
   *
   *   6bc0bce12a459991e134741a7f9e1925 
   *   d86421fb9f1a1eda505ee1375746972c 
   *   604ed7ddf32efdff7020d0238b7c2a5d 
   *   8521f2fd3c8eef2cdc3da7e5c44ea206 
   */
  test_cipher_cbc(&nettle_aes128,
		  SHEX("2b7e151628aed2a6abf7158809cf4f3c"),
		  SHEX("6bc1bee22e409f96e93d7e117393172a"
		       "ae2d8a571e03ac9c9eb76fac45af8e51"
		       "30c81c46a35ce411e5fbc1191a0a52ef"
		       "f69f2445df4f9b17ad2b417be66c3710"),
		  SHEX("7649abac8119b246cee98e9b12e9197d"
		       "5086cb9b507219ee95db113a917678b2"
		       "73bed6b8e3c1743b7116e69e22229516"
		       "3ff1caa1681fac09120eca307586e1a7"),
		  SHEX("000102030405060708090a0b0c0d0e0f"));
  
  /* F.2.3 CBC-AES192.Encrypt */
  
  /* Intermediate values, blcoks input to AES:
   *
   *   6bc0bce12a459991e134741a7f9e1925 
   *   e12f97e55dbfcfa1efcf7796da0fffb9
   *   8411b1ef0e2109e5001cf96f256346b5 
   *   a1840065cdb4e1f7d282fbd7db9d35f0
   */

  test_cipher_cbc(&nettle_aes192,
		  SHEX("8e73b0f7da0e6452c810f32b809079e5"
		       "62f8ead2522c6b7b"),
		  SHEX("6bc1bee22e409f96e93d7e117393172a"
		       "ae2d8a571e03ac9c9eb76fac45af8e51"
		       "30c81c46a35ce411e5fbc1191a0a52ef"
		       "f69f2445df4f9b17ad2b417be66c3710"),
		  SHEX("4f021db243bc633d7178183a9fa071e8"
		       "b4d9ada9ad7dedf4e5e738763f69145a"
		       "571b242012fb7ae07fa9baac3df102e0"
		       "08b0e27988598881d920a9e64f5615cd"),
		  SHEX("000102030405060708090a0b0c0d0e0f"));
   
  /* F.2.5 CBC-AES256.Encrypt */

  /* Intermediate values, blcoks input to AES:
   *
   *   6bc0bce12a459991e134741a7f9e1925 
   *   5ba1c653c8e65d26e929c4571ad47587 
   *   ac3452d0dd87649c8264b662dc7a7e92
   *   cf6d172c769621d8081ba318e24f2371 
   */

  test_cipher_cbc(&nettle_aes256,
		  SHEX("603deb1015ca71be2b73aef0857d7781"
		       "1f352c073b6108d72d9810a30914dff4"),
		  SHEX("6bc1bee22e409f96e93d7e117393172a"
		       "ae2d8a571e03ac9c9eb76fac45af8e51"
		       "30c81c46a35ce411e5fbc1191a0a52ef"
		       "f69f2445df4f9b17ad2b417be66c3710"),
		  SHEX("f58c4c04d6e5f1ba779eabfb5f7bfbd6"
		       "9cfc4e967edb808d679f777bc6702c7d"
		       "39f23369a9d9bacfa530e26304231461"
		       "b2eb05e2c39be9fcda6c19078c6a9d1b"),
		  SHEX("000102030405060708090a0b0c0d0e0f"));

  test_cbc_bulk();
}
Пример #10
0
void
test_main(void)
{
  /* From the EAX specification,
     http://www.cs.ucdavis.edu/~rogaway/papers/eax.pdf */
  test_aead(&nettle_eax_aes128, NULL,
	    SHEX("233952DEE4D5ED5F9B9C6D6FF80FF478"),	/* key */
	    SHEX("6BFB914FD07EAE6B"),			/* auth data */
	    SHEX(""),					/* plaintext */
	    SHEX(""),					/* ciphertext */
	    SHEX("62EC67F9C3A4A407FCB2A8C49031A8B3"),	/* nonce */
	    SHEX("E037830E8389F27B025A2D6527E79D01"));	/* tag */

  test_aead(&nettle_eax_aes128, NULL,
	    SHEX("91945D3F4DCBEE0BF45EF52255F095A4"),
	    SHEX("FA3BFD4806EB53FA"),
	    SHEX("F7FB"),
	    SHEX("19DD"),
	    SHEX("BECAF043B0A23D843194BA972C66DEBD"),
	    SHEX("5C4C9331049D0BDAB0277408F67967E5"));
  
  test_aead(&nettle_eax_aes128, NULL,
	    SHEX("01F74AD64077F2E704C0F60ADA3DD523"),
	    SHEX("234A3463C1264AC6"),
	    SHEX("1A47CB4933"),
	    SHEX("D851D5BAE0"),
	    SHEX("70C3DB4F0D26368400A10ED05D2BFF5E"),
	    SHEX("3A59F238A23E39199DC9266626C40F80"));

  test_aead(&nettle_eax_aes128, NULL,
	    SHEX("D07CF6CBB7F313BDDE66B727AFD3C5E8"),
	    SHEX("33CCE2EABFF5A79D"),
	    SHEX("481C9E39B1"),
	    SHEX("632A9D131A"),
	    SHEX("8408DFFF3C1A2B1292DC199E46B7D617"),
	    SHEX("D4C168A4225D8E1FF755939974A7BEDE"));

  test_aead(&nettle_eax_aes128, NULL,
	    SHEX("35B6D0580005BBC12B0587124557D2C2"),
	    SHEX("AEB96EAEBE2970E9"),
	    SHEX("40D0C07DA5E4"),
	    SHEX("071DFE16C675"),
	    SHEX("FDB6B06676EEDC5C61D74276E1F8E816"),
	    SHEX("CB0677E536F73AFE6A14B74EE49844DD"));

  test_aead(&nettle_eax_aes128, NULL,
	    SHEX("BD8E6E11475E60B268784C38C62FEB22"),
	    SHEX("D4482D1CA78DCE0F"),
	    SHEX("4DE3B35C3FC039245BD1FB7D"),
	    SHEX("835BB4F15D743E350E728414"),
	    SHEX("6EAC5C93072D8E8513F750935E46DA1B"),
	    SHEX("ABB8644FD6CCB86947C5E10590210A4F"));

  test_aead(&nettle_eax_aes128, NULL,
	    SHEX("7C77D6E813BED5AC98BAA417477A2E7D"),
	    SHEX("65D2017990D62528"),
	    SHEX("8B0A79306C9CE7ED99DAE4F87F8DD61636"),
	    SHEX("02083E3979DA014812F59F11D52630DA30"),
	    SHEX("1A8C98DCD73D38393B2BF1569DEEFC19"),
	    SHEX("137327D10649B0AA6E1C181DB617D7F2"));
  
  test_aead(&nettle_eax_aes128, NULL,
	    SHEX("5FFF20CAFAB119CA2FC73549E20F5B0D"),
	    SHEX("54B9F04E6A09189A"),
	    SHEX("1BDA122BCE8A8DBAF1877D962B8592DD2D56"),
	    SHEX("2EC47B2C4954A489AFC7BA4897EDCDAE8CC3"),
	    SHEX("DDE59B97D722156D4D9AFF2BC7559826"),
	    SHEX("3B60450599BD02C96382902AEF7F832A"));
  
  test_aead(&nettle_eax_aes128, NULL,
	    SHEX("A4A4782BCFFD3EC5E7EF6D8C34A56123"),
	    SHEX("899A175897561D7E"),
	    SHEX("6CF36720872B8513F6EAB1A8A44438D5EF11"),
	    SHEX("0DE18FD0FDD91E7AF19F1D8EE8733938B1E8"),
	    SHEX("B781FCF2F75FA5A8DE97A9CA48E522EC"),
	    SHEX("E7F6D2231618102FDB7FE55FF1991700"));
  
  test_aead(&nettle_eax_aes128, NULL,
	    SHEX("8395FCF1E95BEBD697BD010BC766AAC3"),
	    SHEX("126735FCC320D25A"),
	    SHEX("CA40D7446E545FFAED3BD12A740A659FFBBB3CEAB7"),
	    SHEX("CB8920F87A6C75CFF39627B56E3ED197C552D295A7"),
	    SHEX("22E7ADD93CFC6393C57EC0B3C17D6B44"),
	    SHEX("CFC46AFC253B4652B1AF3795B124AB6E"));
}
Пример #11
0
void
test_main(void)
{
  /* HKDF test vectors from RFC5869 */
  test_hkdf_sha256(SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"),
	SHEX("000102030405060708090a0b0c"),
	SHEX("f0f1f2f3f4f5f6f7f8f9"),
	SHEX("077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5"),
	SHEX("3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865"));

  test_hkdf_sha256(SHEX("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f"),
	SHEX("606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf"),
	SHEX("b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"),
	SHEX("06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244"),
	SHEX("b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87"));

  test_hkdf_sha256(SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"),
	SDATA(""),
	SDATA(""),
	SHEX("19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04"),
	SHEX("8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8"));

  test_hkdf_sha1(SHEX("0b0b0b0b0b0b0b0b0b0b0b"),
	SHEX("000102030405060708090a0b0c"),
	SHEX("f0f1f2f3f4f5f6f7f8f9"),
	SHEX("9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243"),
	SHEX("085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896"));

  test_hkdf_sha1(SHEX("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f"),
	SHEX("606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf"),
	SHEX("b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"),
	SHEX("8adae09a2a307059478d309b26c4115a224cfaf6"),
	SHEX("0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4"));

  test_hkdf_sha1(SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"),
	SDATA(""),
	SDATA(""),
	SHEX("da8c8a73c7fa77288ec6f5e7c297786aa0d32d01"),
	SHEX("0ac1af7002b3d761d1e55298da9d0506b9ae52057220a306e07b6b87e8df21d0ea00033de03984d34918"));

  test_hkdf_sha1(SHEX("0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c"),
	SHEX(""),
	SHEX(""),
	SHEX("2adccada18779e7c2077ad2eb19d3f3e731385dd"),
	SHEX("2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48"));
}
Пример #12
0
void
test_main(void)
{
  /* Test vectors from RFC 3713 */
  /* 128 bit keys */
  test_cipher(&nettle_camellia128,
	      SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
	      SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
	      SHEX("67 67 31 38 54 96 69 73 08 57 06 56 48 ea be 43"));

  /* 192 bit keys */
  test_cipher(&nettle_camellia192, 
	      SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"
		   "00 11 22 33 44 55 66 77"),
	      SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
	      SHEX("b4 99 34 01 b3 e9 96 f8 4e e5 ce e7 d7 9b 09 b9"));

  /* 256 bit keys */
  test_cipher(&nettle_camellia256, 
	      SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"
		   "00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff"),
	      SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
	      SHEX("9a cc 23 7d ff 16 d7 6c 20 ef 7c 91 9e 3a 75 09"));

  /* Test camellia_invert_key with src != dst */
  test_invert(SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
	      SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
	      SHEX("67 67 31 38 54 96 69 73 08 57 06 56 48 ea be 43"));
  
  test_invert(SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"
		   "00 11 22 33 44 55 66 77"),
	      SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
	      SHEX("b4 99 34 01 b3 e9 96 f8 4e e5 ce e7 d7 9b 09 b9"));

  test_invert(SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"
		   "00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff"),
	      SHEX("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
	      SHEX("9a cc 23 7d ff 16 d7 6c 20 ef 7c 91 9e 3a 75 09"));
}
Пример #13
0
	gnutls_datum_t seed = dseed; \
	gnutls_datum_t label = dlabel; \
	gnutls_datum_t output = doutput; \
	int _rval; \
	_rval = _gnutls_prf_raw(GNUTLS_MAC_MD5_SHA1, secret.size, secret.data, \
		label.size, (char*)label.data, seed.size, seed.data, output.size, tmp); \
	assert_int_equal(_rval, 0); \
	assert_int_equal(memcmp(tmp, output.data, output.size), 0); \
	gnutls_free(secret.data); \
	gnutls_free(label.data); \
	gnutls_free(seed.data); \
	gnutls_free(output.data); \
}


MATCH_FUNC(test1, SHEX("263bdbbb6f6d4c664e058d0aa9d321be"), SHEX("b920573b199601024f04d6dc61966e65"),
	SDATA("test label"), SHEX("6617993765fa6ca703d19ec70dd5dd160ffcc07725fafb714a9f815a2a30bfb7e3bbfb7eee574b3b613eb7fe80eec9691d8c1b0e2d9b3c8b4b02b6b6d6db88e2094623ef6240607eda7abe3c846e82a3"));
MATCH_FUNC(test2, SHEX("bf31fe6c78ebf0ff9ce8bb5dd9d1f83d"), SHEX("7fc4583d19871d962760f358a18696c8"),
	SDATA("test label"), SHEX("8318f382c49fd5af7d6fdb4cbb31dfef"));
MATCH_FUNC(test3, SHEX("0addfc84435b9ac1ef523ef44791a784bf55757dea17837c1a72beec1bdb1850"),
	SHEX("74e849d11ad8a98d9bc2291dbceec26ff9"),
	SDATA("test label"), SHEX("3c221520c48bcb3a0eb3734a"));
MATCH_FUNC(test4, SHEX("4074939b440a08a285bc7208485c531f0bbd4c101d71bdba33ec066791e4678c"),
	SHEX("8aff0c770c1d60455ee48f220c9adb471e5fee27c88c1f33"),
	SDATA("test label"), SHEX("3a9aee040bbf3cf7009210e64bbdad1775ccf1b46b3a965d5f15168e9ddaa7cc6a7c0c117848"));

int main(void)
{
	const struct CMUnitTest tests[] = {
		cmocka_unit_test(test1),
		cmocka_unit_test(test2),
Пример #14
0
void
test_main(void)
{
  /* From NIST spec 800-38a on AES modes.
   *
   * F.3  CFB Example Vectors
   * F.3.7 CFB8-AES128.Encrypt
   */

  test_cipher_cfb8(&nettle_aes128,
		   SHEX("2b7e151628aed2a6abf7158809cf4f3c"),
		   SHEX("6bc1bee22e409f96e93d7e117393172a"
		        "ae2d"),
		   SHEX("3b79424c9c0dd436bace9e0ed4586a4f"
		        "32b9"),
		   SHEX("000102030405060708090a0b0c0d0e0f"));

  /* From NIST spec 800-38a on AES modes.
   *
   * F.3  CFB Example Vectors
   * F.3.9 CFB8-AES192.Encrypt
   */

  test_cipher_cfb8(&nettle_aes192,
		   SHEX("8e73b0f7da0e6452c810f32b809079e5"
			"62f8ead2522c6b7b"),
		   SHEX("6bc1bee22e409f96e93d7e117393172a"
		        "ae2d"),
		   SHEX("cda2521ef0a905ca44cd057cbf0d47a0"
			"678a"),
		   SHEX("000102030405060708090a0b0c0d0e0f"));

  /* From NIST spec 800-38a on AES modes.
   *
   * F.3  CFB Example Vectors
   * F.3.11 CFB8-AES256.Encrypt
   */

  test_cipher_cfb8(&nettle_aes256,
		   SHEX("603deb1015ca71be2b73aef0857d7781"
                        "1f352c073b6108d72d9810a30914dff4"),
		   SHEX("6bc1bee22e409f96e93d7e117393172a"
		        "ae2d"),
		   SHEX("dc1f1a8520a64db55fcc8ac554844e88"
			"9700"),
		   SHEX("000102030405060708090a0b0c0d0e0f"));

  /* From NIST spec 800-38a on AES modes.
   *
   * F.3  CFB Example Vectors
   * F.3.13 CFB128-AES128.Encrypt
   */

  /* Intermediate values, blocks input to AES:
   *
   *   000102030405060708090a0b0c0d0e0f
   *   3b3fd92eb72dad20333449f8e83cfb4a
   *   c8a64537a0b3a93fcde3cdad9f1ce58b
   *   26751f67a3cbb140b1808cf187a4f4df
   */
  test_cipher_cfb(&nettle_aes128,
		  SHEX("2b7e151628aed2a6abf7158809cf4f3c"),
		  SHEX("6bc1bee22e409f96e93d7e117393172a"
		       "ae2d8a571e03ac9c9eb76fac45af8e51"
		       "30c81c46a35ce411e5fbc1191a0a52ef"
		       "f69f2445df4f9b17ad2b417be66c3710"),
		  SHEX("3b3fd92eb72dad20333449f8e83cfb4a"
		       "c8a64537a0b3a93fcde3cdad9f1ce58b"
		       "26751f67a3cbb140b1808cf187a4f4df"
		       "c04b05357c5d1c0eeac4c66f9ff7f2e6"),
		  SHEX("000102030405060708090a0b0c0d0e0f"));

  /* F.3.15 CFB128-AES192.Encrypt */

  /* Intermediate values, blocks input to AES:
   *
   *   000102030405060708090a0b0c0d0e0f
   *   cdc80d6fddf18cab34c25909c99a4174
   *   67ce7f7f81173621961a2b70171d3d7a
   *   2e1e8a1dd59b88b1c8e60fed1efac4c9
   */

  test_cipher_cfb(&nettle_aes192,
		  SHEX("8e73b0f7da0e6452c810f32b809079e5"
		       "62f8ead2522c6b7b"),
		  SHEX("6bc1bee22e409f96e93d7e117393172a"
		       "ae2d8a571e03ac9c9eb76fac45af8e51"
		       "30c81c46a35ce411e5fbc1191a0a52ef"
		       "f69f2445df4f9b17ad2b417be66c3710"),
		  SHEX("cdc80d6fddf18cab34c25909c99a4174"
		       "67ce7f7f81173621961a2b70171d3d7a"
		       "2e1e8a1dd59b88b1c8e60fed1efac4c9"
		       "c05f9f9ca9834fa042ae8fba584b09ff"),
		  SHEX("000102030405060708090a0b0c0d0e0f"));

  /* F.3.17 CFB128-AES256.Encrypt */

  /* Intermediate values, blcoks input to AES:
   *
   *   000102030405060708090a0b0c0d0e0f
   *   dc7e84bfda79164b7ecd8486985d3860
   *   39ffed143b28b1c832113c6331e5407b
   *   df10132415e54b92a13ed0a8267ae2f9
   */

  test_cipher_cfb(&nettle_aes256,
		  SHEX("603deb1015ca71be2b73aef0857d7781"
		       "1f352c073b6108d72d9810a30914dff4"),
		  SHEX("6bc1bee22e409f96e93d7e117393172a"
		       "ae2d8a571e03ac9c9eb76fac45af8e51"
		       "30c81c46a35ce411e5fbc1191a0a52ef"
		       "f69f2445df4f9b17ad2b417be66c3710"),
		  SHEX("dc7e84bfda79164b7ecd8486985d3860"
		       "39ffed143b28b1c832113c6331e5407b"
		       "df10132415e54b92a13ed0a8267ae2f9"
		       "75a385741ab9cef82031623d55b1e471"),
		  SHEX("000102030405060708090a0b0c0d0e0f"));

  test_cfb_bulk();
  test_cfb8_bulk();
}
Пример #15
0
void
test_main(void)
{
  /* 
   * GCM-AES Test Vectors from
   * http://www.cryptobarn.com/papers/gcm-spec.pdf
   */

  /* Test case 1 */
  test_aead(&nettle_gcm_aes128, NULL,
	    SHEX("00000000000000000000000000000000"),	/* key */
	    SHEX(""),					/* auth data */ 
	    SHEX(""),					/* plaintext */
	    SHEX(""),					/* ciphertext*/
	    SHEX("000000000000000000000000"),		/* IV */
	    SHEX("58e2fccefa7e3061367f1d57a4e7455a"));	/* tag */

  /* Test case 2 */
  test_aead(&nettle_gcm_aes128, NULL,
	    SHEX("00000000000000000000000000000000"),
	    SHEX(""),
	    SHEX("00000000000000000000000000000000"),
	    SHEX("0388dace60b6a392f328c2b971b2fe78"),
	    SHEX("000000000000000000000000"),
	    SHEX("ab6e47d42cec13bdf53a67b21257bddf"));

  /* Test case 3 */
  test_aead(&nettle_gcm_aes128, NULL,
	    SHEX("feffe9928665731c6d6a8f9467308308"),
	    SHEX(""),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b391aafd255"),
	    SHEX("42831ec2217774244b7221b784d0d49c"
		 "e3aa212f2c02a4e035c17e2329aca12e"
		 "21d514b25466931c7d8f6a5aac84aa05"
		 "1ba30b396a0aac973d58e091473f5985"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("4d5c2af327cd64a62cf35abd2ba6fab4"));

  /* Test case 4 */
  test_aead(&nettle_gcm_aes128, NULL,
	    SHEX("feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("42831ec2217774244b7221b784d0d49c"
		 "e3aa212f2c02a4e035c17e2329aca12e"
		 "21d514b25466931c7d8f6a5aac84aa05"
		 "1ba30b396a0aac973d58e091"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("5bc94fbc3221a5db94fae95ae7121a47"));

  /* Test case 5 */
  test_aead(&nettle_gcm_aes128,
	    (nettle_hash_update_func *) gcm_aes128_set_iv,
	    SHEX("feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("61353b4c2806934a777ff51fa22a4755"
		 "699b2a714fcdc6f83766e5f97b6c7423"
		 "73806900e49f24b22b097544d4896b42"
		 "4989b5e1ebac0f07c23f4598"),
	    SHEX("cafebabefacedbad"),
	    SHEX("3612d2e79e3b0785561be14aaca2fccb"));

  /* Test case 6 */
  test_aead(&nettle_gcm_aes128,
	    (nettle_hash_update_func *) gcm_aes128_set_iv,
	    SHEX("feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("8ce24998625615b603a033aca13fb894"
		 "be9112a5c3a211a8ba262a3cca7e2ca7"
		 "01e4a9a4fba43c90ccdcb281d48c7c6f"
		 "d62875d2aca417034c34aee5"),
	    SHEX("9313225df88406e555909c5aff5269aa"
		 "6a7a9538534f7da1e4c303d2a318a728"
		 "c3c0c95156809539fcf0e2429a6b5254"
		 "16aedbf5a0de6a57a637b39b"),
	    SHEX("619cc5aefffe0bfa462af43c1699d050"));

  /* Same test, but with old gcm_aes interface */
  test_aead(&nettle_gcm_unified_aes128,
	    (nettle_hash_update_func *) gcm_aes_set_iv,
	    SHEX("feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("8ce24998625615b603a033aca13fb894"
		 "be9112a5c3a211a8ba262a3cca7e2ca7"
		 "01e4a9a4fba43c90ccdcb281d48c7c6f"
		 "d62875d2aca417034c34aee5"),
	    SHEX("9313225df88406e555909c5aff5269aa"
		 "6a7a9538534f7da1e4c303d2a318a728"
		 "c3c0c95156809539fcf0e2429a6b5254"
		 "16aedbf5a0de6a57a637b39b"),
	    SHEX("619cc5aefffe0bfa462af43c1699d050"));

  /* Test case 7 */
  test_aead(&nettle_gcm_aes192, NULL,
	    SHEX("00000000000000000000000000000000"
		 "0000000000000000"),
	    SHEX(""),
	    SHEX(""),
	    SHEX(""),
	    SHEX("000000000000000000000000"),
	    SHEX("cd33b28ac773f74ba00ed1f312572435"));

  /* Test case 8 */
  test_aead(&nettle_gcm_aes192, NULL,
	    SHEX("00000000000000000000000000000000"
		 "0000000000000000"),
	    SHEX(""),
	    SHEX("00000000000000000000000000000000"),
	    SHEX("98e7247c07f0fe411c267e4384b0f600"),
	    SHEX("000000000000000000000000"),
	    SHEX("2ff58d80033927ab8ef4d4587514f0fb"));

  /* Test case 9 */
  test_aead(&nettle_gcm_aes192, NULL,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c"),
	    SHEX(""),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b391aafd255"),
	    SHEX("3980ca0b3c00e841eb06fac4872a2757"
		 "859e1ceaa6efd984628593b40ca1e19c"
		 "7d773d00c144c525ac619d18c84a3f47"
		 "18e2448b2fe324d9ccda2710acade256"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("9924a7c8587336bfb118024db8674a14"));

  /* Test case 10 */
  test_aead(&nettle_gcm_aes192, NULL,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("3980ca0b3c00e841eb06fac4872a2757"
		 "859e1ceaa6efd984628593b40ca1e19c"
		 "7d773d00c144c525ac619d18c84a3f47"
		 "18e2448b2fe324d9ccda2710"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("2519498e80f1478f37ba55bd6d27618c"));

  /* Test case 11 */
  test_aead(&nettle_gcm_aes192,
	    (nettle_hash_update_func *) gcm_aes192_set_iv,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("0f10f599ae14a154ed24b36e25324db8"
		 "c566632ef2bbb34f8347280fc4507057"
		 "fddc29df9a471f75c66541d4d4dad1c9"
		 "e93a19a58e8b473fa0f062f7"),
	    SHEX("cafebabefacedbad"),
	    SHEX("65dcc57fcf623a24094fcca40d3533f8"));

  /* Test case 12 */
  test_aead(&nettle_gcm_aes192,
	    (nettle_hash_update_func *) gcm_aes192_set_iv,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("d27e88681ce3243c4830165a8fdcf9ff"
		 "1de9a1d8e6b447ef6ef7b79828666e45"
		 "81e79012af34ddd9e2f037589b292db3"
		 "e67c036745fa22e7e9b7373b"),
	    SHEX("9313225df88406e555909c5aff5269aa"
		 "6a7a9538534f7da1e4c303d2a318a728"
		 "c3c0c95156809539fcf0e2429a6b5254"
		 "16aedbf5a0de6a57a637b39b"),
	    SHEX("dcf566ff291c25bbb8568fc3d376a6d9"));

  /* Test case 13 */
  test_aead(&nettle_gcm_aes256, NULL,
	    SHEX("00000000000000000000000000000000"
		 "00000000000000000000000000000000"),
	    SHEX(""),
	    SHEX(""),
	    SHEX(""),
	    SHEX("000000000000000000000000"),
	    SHEX("530f8afbc74536b9a963b4f1c4cb738b"));

  /* Test case 14 */
  test_aead(&nettle_gcm_aes256, NULL,
	    SHEX("00000000000000000000000000000000"
		 "00000000000000000000000000000000"),
	    SHEX(""),
	    SHEX("00000000000000000000000000000000"),
	    SHEX("cea7403d4d606b6e074ec5d3baf39d18"),
	    SHEX("000000000000000000000000"),
	    SHEX("d0d1c8a799996bf0265b98b5d48ab919"));

  /* Test case 15 */
  test_aead(&nettle_gcm_aes256, NULL,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c6d6a8f9467308308"),
	    SHEX(""),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b391aafd255"),
	    SHEX("522dc1f099567d07f47f37a32a84427d"
		 "643a8cdcbfe5c0c97598a2bd2555d1aa"
		 "8cb08e48590dbb3da7b08b1056828838"
		 "c5f61e6393ba7a0abcc9f662898015ad"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("b094dac5d93471bdec1a502270e3cc6c"));

  /* Test case 16 */
  test_aead(&nettle_gcm_aes256, NULL,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("522dc1f099567d07f47f37a32a84427d"
		 "643a8cdcbfe5c0c97598a2bd2555d1aa"
		 "8cb08e48590dbb3da7b08b1056828838"
		 "c5f61e6393ba7a0abcc9f662"),
	    SHEX("cafebabefacedbaddecaf888"),
	    SHEX("76fc6ece0f4e1768cddf8853bb2d551b"));

  /* Test case 17 */
  test_aead(&nettle_gcm_aes256,
	    (nettle_hash_update_func *) gcm_aes256_set_iv,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("c3762df1ca787d32ae47c13bf19844cb"
		 "af1ae14d0b976afac52ff7d79bba9de0"
		 "feb582d33934a4f0954cc2363bc73f78"
		 "62ac430e64abe499f47c9b1f"),
	    SHEX("cafebabefacedbad"),
	    SHEX("3a337dbf46a792c45e454913fe2ea8f2"));

  /* Test case 18 */
  test_aead(&nettle_gcm_aes256,
	    (nettle_hash_update_func *) gcm_aes256_set_iv,
	    SHEX("feffe9928665731c6d6a8f9467308308"
		 "feffe9928665731c6d6a8f9467308308"),
	    SHEX("feedfacedeadbeeffeedfacedeadbeef"
		 "abaddad2"),
	    SHEX("d9313225f88406e5a55909c5aff5269a"
		 "86a7a9531534f7da2e4c303d8a318a72"
		 "1c3c0c95956809532fcf0e2449a6b525"
		 "b16aedf5aa0de657ba637b39"),
	    SHEX("5a8def2f0c9e53f1f75d7853659e2a20"
		 "eeb2b22aafde6419a058ab4f6f746bf4"
		 "0fc0c3b780f244452da3ebf1c5d82cde"
		 "a2418997200ef82e44ae7e3f"),
	    SHEX("9313225df88406e555909c5aff5269aa"
		 "6a7a9538534f7da1e4c303d2a318a728"
		 "c3c0c95156809539fcf0e2429a6b5254"
		 "16aedbf5a0de6a57a637b39b"),
	    SHEX("a44a8266ee1c8eb0c8b5d4cf5ae9f19a"));



  /* 
   * GCM-Camellia Test Vectors obtained from the authors
   */

  /* Test case 1 */
  test_aead(&nettle_gcm_camellia128,
	    (nettle_hash_update_func *) gcm_camellia128_set_iv,
	    SHEX("00000000000000000000000000000000"),	/* key */
	    SHEX(""),					/* auth data */ 
	    SHEX(""),					/* plaintext */
	    SHEX(""),					/* ciphertext*/
	    SHEX("000000000000000000000000"),		/* IV */
	    SHEX("f5574acc3148dfcb9015200631024df9"));	/* tag */

  /* Test case 3 */
  test_aead(&nettle_gcm_camellia128,
	    (nettle_hash_update_func *) gcm_camellia128_set_iv,
	    SHEX("feffe9928665731c6d6a8f9467308308"),	/* key */
	    SHEX(""),					/* auth data */ 
	    SHEX("d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72"
	         "1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255"),					/* plaintext */
	    SHEX("d0d94a13b632f337a0cc9955b94fa020c815f903aab12f1efaf2fe9d90f729a6"
	         "cccbfa986ef2ff2c33de418d9a2529091cf18fe652c1cfde13f8260614bab815"),					/* ciphertext*/
	    SHEX("cafebabefacedbaddecaf888"),		/* IV */
	    SHEX("86e318012dd8329dc9dae6a170f61b24"));	/* tag */

  /* Test case 4 */
  test_aead(&nettle_gcm_camellia128,
	    (nettle_hash_update_func *) gcm_camellia128_set_iv,
	    SHEX("feffe9928665731c6d6a8f9467308308"),	/* key */
	    SHEX("feedfacedeadbeeffeedfacedeadbeefabaddad2"),					/* auth data */ 
	    SHEX("d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72"
	         "1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39"),					/* plaintext */
	    SHEX("d0d94a13b632f337a0cc9955b94fa020c815f903aab12f1efaf2fe9d90f729a6"
	         "cccbfa986ef2ff2c33de418d9a2529091cf18fe652c1cfde13f82606"),					/* ciphertext*/
	    SHEX("cafebabefacedbaddecaf888"),		/* IV */
	    SHEX("9f458869431576ea6a095456ec6b8101"));	/* tag */

  /* Test case 5 */
  test_aead(&nettle_gcm_camellia128,
	    (nettle_hash_update_func *) gcm_camellia128_set_iv,
	    SHEX("feffe9928665731c6d6a8f9467308308"),	/* key */
	    SHEX("feedfacedeadbeeffeedfacedeadbeefabaddad2"),					/* auth data */ 
	    SHEX("d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72"
	         "1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39"),					/* plaintext */
	    SHEX("28fd7434d5cd424a5353818fc21a982460d20cf632eb1e6c4fbfca17d5abcf6a"
	         "52111086162fe9570e7774c7a912aca3dfa10067ddaad40688645bdd"),					/* ciphertext*/
	    SHEX("cafebabefacedbad"),		/* IV */
	    SHEX("e86f8f2e730c49d536f00fb5225d28b1"));	/* tag */

  /* Test case 6 */
  test_aead(&nettle_gcm_camellia128,
	    (nettle_hash_update_func *) gcm_camellia128_set_iv,
	    SHEX("feffe9928665731c6d6a8f9467308308"),	/* key */
	    SHEX("feedfacedeadbeeffeedfacedeadbeefabaddad2"),					/* auth data */ 
	    SHEX("d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a72"
	         "1c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39"),					/* plaintext */
	    SHEX("2e582b8417c93f2ff4f6f7ee3c361e4496e710ee12433baa964987d02f42953e"
	         "402e6f4af407fe08cd2f35123696014c34db19128df4056faebcd647"),					/* ciphertext*/
	    SHEX("9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728"
	         "c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b"),		/* IV */
	    SHEX("ceae5569b2af8641572622731aed3e53"));	/* tag */

  /* gcm-camellia256 */

  /* Test case 13 */
  test_aead(&nettle_gcm_camellia256,
	    (nettle_hash_update_func *) gcm_camellia256_set_iv,
	    SHEX("0000000000000000 0000000000000000"
		 "0000000000000000 0000000000000000"),	/* key */
	    SHEX(""),	/* auth data */
	    SHEX(""),	/* plaintext */
	    SHEX(""),	/* ciphertext */
	    SHEX("000000000000000000000000"),	/* iv */
	    SHEX("9cdb269b5d293bc5db9c55b057d9b591"));	/* tag */

  /* Test case 14 */
  test_aead(&nettle_gcm_camellia256,
	    (nettle_hash_update_func *) gcm_camellia256_set_iv,
	    SHEX("0000000000000000 0000000000000000"
		 "0000000000000000 0000000000000000"),	/* key */
	    SHEX(""),	/* auth data */
	    SHEX("0000000000000000 0000000000000000"),	/* plaintext */
	    SHEX("3d4b2cde666761ba 5dfb305178e667fb"),	/* ciphertext */
	    SHEX("000000000000000000000000"),	/* iv */
	    SHEX("284b63bb143c40ce100fb4dea6bb617b"));	/* tag */

  /* Test case 15 */
  test_aead(&nettle_gcm_camellia256,
	    (nettle_hash_update_func *) gcm_camellia256_set_iv,
	    SHEX("feffe9928665731c 6d6a8f9467308308"
		 "feffe9928665731c 6d6a8f9467308308"),	/* key */
	    SHEX(""),	/* auth data */
	    SHEX("d9313225f88406e5 a55909c5aff5269a"
		 "86a7a9531534f7da 2e4c303d8a318a72"
		 "1c3c0c9595680953 2fcf0e2449a6b525"
		 "b16aedf5aa0de657 ba637b391aafd255"),	/* plaintext */
	    SHEX("ad142c11579dd95e 41f3c1f324dabc25"
		 "5864d920f1b65759 d8f560d4948d4477"
		 "58dfdcf77aa9f625 81c7ff572a037f81"
		 "0cb1a9c4b3ca6ed6 38179b776549e092"),	/* ciphertext */
	    SHEX("cafebabefacedbaddecaf888"),	/* iv */
	    SHEX("c912686270a2b9966415fca3be75c468"));	/* tag */

  /* Test case 16 */
  test_aead(&nettle_gcm_camellia256,
	    (nettle_hash_update_func *) gcm_camellia256_set_iv,
	    SHEX("feffe9928665731c 6d6a8f9467308308"
		 "feffe9928665731c 6d6a8f9467308308"),	/* key */
	    SHEX("feedfacedeadbeef feedfacedeadbeef"
		 "abaddad2"),	/* auth data */
	    SHEX("d9313225f88406e5 a55909c5aff5269a"
		 "86a7a9531534f7da 2e4c303d8a318a72"
		 "1c3c0c9595680953 2fcf0e2449a6b525"
		 "b16aedf5aa0de657 ba637b39"),	/* plaintext */
	    SHEX("ad142c11579dd95e 41f3c1f324dabc25"
		 "5864d920f1b65759 d8f560d4948d4477"
		 "58dfdcf77aa9f625 81c7ff572a037f81"
		 "0cb1a9c4b3ca6ed6 38179b77"),	/* ciphertext */
	    SHEX("cafebabefacedbaddecaf888"),	/* iv */
	    SHEX("4e4b178d8fe26fdc95e2e7246dd94bec"));	/* tag */

  /* Test case 17 */
  test_aead(&nettle_gcm_camellia256,
	    (nettle_hash_update_func *) gcm_camellia256_set_iv,
	    SHEX("feffe9928665731c 6d6a8f9467308308"
		 "feffe9928665731c 6d6a8f9467308308"),	/* key */
	    SHEX("feedfacedeadbeef feedfacedeadbeef"
		 "abaddad2"),	/* auth data */
	    SHEX("d9313225f88406e5 a55909c5aff5269a"
		 "86a7a9531534f7da 2e4c303d8a318a72"
		 "1c3c0c9595680953 2fcf0e2449a6b525"
		 "b16aedf5aa0de657 ba637b39"),	/* plaintext */
	    SHEX("6ca95fbb7d16577a 9ef2fded94dc85b5"
		 "d40c629f6bef2c64 9888e3cbb0ededc7"
		 "810c04b12c2983bb bbc482e16e45c921"
		 "5ae12c15c55f2f48 09d06652"),	/* ciphertext */
	    SHEX("cafebabefacedbad"),	/* iv */
	    SHEX("e6472b8ebd331bfcc7c0fa63ce094461"));	/* tag */

  /* Test case 18 */
  test_aead(&nettle_gcm_camellia256,
	    (nettle_hash_update_func *) gcm_camellia256_set_iv,
	    SHEX("feffe9928665731c 6d6a8f9467308308"
		 "feffe9928665731c 6d6a8f9467308308"),	/* key */
	    SHEX("feedfacedeadbeef feedfacedeadbeef"
		 "abaddad2"),	/* auth data */
	    SHEX("d9313225f88406e5 a55909c5aff5269a"
		 "86a7a9531534f7da 2e4c303d8a318a72"
		 "1c3c0c9595680953 2fcf0e2449a6b525"
		 "b16aedf5aa0de657 ba637b39"),	/* plaintext */
	    SHEX("e0cddd7564d09c4d c522dd65949262bb"
		 "f9dcdb07421cf67f 3032becb7253c284"
		 "a16e5bf0f556a308 043f53fab9eebb52"
		 "6be7f7ad33d697ac 77c67862"),	/* ciphertext */
	    SHEX("9313225df88406e5 55909c5aff5269aa"
		 "6a7a9538534f7da1 e4c303d2a318a728"
		 "c3c0c95156809539 fcf0e2429a6b5254"
		 "16aedbf5a0de6a57 a637b39b"),	/* iv */
	    SHEX("5791883f822013f8bd136fc36fb9946b"));	/* tag */

  /* Test gcm_hash, with varying message size, keys and iv all zero.
     Not compared to any other implementation. */
  test_gcm_hash (SDATA("a"),
		 SHEX("1521c9a442bbf63b 2293a21d4874a5fd"));
  test_gcm_hash (SDATA("ab"),
		 SHEX("afb4592d2c7c1687 37f27271ee30412a"));
  test_gcm_hash (SDATA("abc"), 
		 SHEX("9543ca3e1662ba03 9a921ec2a20769be"));
  test_gcm_hash (SDATA("abcd"),
		 SHEX("8f041cc12bcb7e1b 0257a6da22ee1185"));
  test_gcm_hash (SDATA("abcde"),
		 SHEX("0b2376e5fed58ffb 717b520c27cd5c35"));
  test_gcm_hash (SDATA("abcdef"), 
		 SHEX("9679497a1eafa161 4942963380c1a76f"));
  test_gcm_hash (SDATA("abcdefg"),
		 SHEX("83862e40339536bc 723d9817f7df8282"));
  test_gcm_hash (SDATA("abcdefgh"), 
		 SHEX("b73bcc4d6815c4dc d7424a04e61b87c5"));
  test_gcm_hash (SDATA("abcdefghi"), 
		 SHEX("8e7846a383f0b3b2 07b01160a5ef993d"));
  test_gcm_hash (SDATA("abcdefghij"),
		 SHEX("37651643b6f8ecac 4ea1b320e6ea308c"));
  test_gcm_hash (SDATA("abcdefghijk"), 
		 SHEX("c1ce10106ee23286 f00513f55e2226b0"));
  test_gcm_hash (SDATA("abcdefghijkl"),
		 SHEX("c6a3e32a90196cdf b2c7a415d637e6ca"));
  test_gcm_hash (SDATA("abcdefghijklm"), 
		 SHEX("6cca29389d4444fa 3d20e65497088fd8"));
  test_gcm_hash (SDATA("abcdefghijklmn"),
		 SHEX("19476a997ec0a824 2022db0f0e8455ce"));
  test_gcm_hash (SDATA("abcdefghijklmno"), 
		 SHEX("f66931cee7eadcbb d42753c3ac3c4c16"));
  test_gcm_hash (SDATA("abcdefghijklmnop"),
		 SHEX("a79699ce8bed61f9 b8b1b4c5abb1712e"));
  test_gcm_hash (SDATA("abcdefghijklmnopq"), 
		 SHEX("65f8245330febf15 6fd95e324304c258"));
  test_gcm_hash (SDATA("abcdefghijklmnopqr"),
		 SHEX("d07259e85d4fc998 5a662eed41c8ed1d"));
}
Пример #16
0
void
test_main(void)
{
  /* http://www.ecrypt.eu.org/stream/svn/viewcvs.cgi/ecrypt/trunk/submissions/salsa20/reduced/12-rounds/verified.test-vectors?logsort=rev&rev=210&view=markup */
  test_salsa20r12(SHEX("80000000 00000000 00000000 00000000"),
		  SHEX("00000000 00000000"),
		  SHEX("00000000 00000000"),
		  SHEX("FC207DBF C76C5E17"));

  test_salsa20r12(SHEX("00400000 00000000 00000000 00000000"),
		  SHEX("00000000 00000000"),
		  SHEX("00000000 00000000"),
		  SHEX("6C11A3F9 5FEC7F48"));

  test_salsa20r12(SHEX("09090909090909090909090909090909"),
		  SHEX("0000000000000000"),
		  SHEX("00000000 00000000"),
		  SHEX("78E11FC3 33DEDE88"));

  test_salsa20r12(SHEX("1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B"),
		  SHEX("00000000 00000000"),
		  SHEX("00000000 00000000"),
		  SHEX("A6747461 1DF551FF"));

  test_salsa20r12(SHEX("80000000000000000000000000000000"
		       "00000000000000000000000000000000"),
		  SHEX("00000000 00000000"),
		  SHEX("00000000 00000000"),
		  SHEX("AFE411ED 1C4E07E4"));

  test_salsa20r12(SHEX("0053A6F94C9FF24598EB3E91E4378ADD"
		       "3083D6297CCF2275C81B6EC11467BA0D"),
		  SHEX("0D74DB42A91077DE"),
		  SHEX("00000000 00000000"),
		  SHEX("52E20CF8 775AE882"));

  /* http://www.ecrypt.eu.org/stream/svn/viewcvs.cgi/ecrypt/trunk/submissions/salsa20/full/verified.test-vectors?logsort=rev&rev=210&view=markup */

  test_salsa20(SHEX("80000000 00000000 00000000 00000000"),
	       SHEX("00000000 00000000"),
	       SHEX("00000000 00000000"),
	       SHEX("4DFA5E48 1DA23EA0"));

  test_salsa20(SHEX("00000000 00000000 00000000 00000000"),
	       SHEX("80000000 00000000"),
	       SHEX("00000000 00000000"),
	       SHEX("B66C1E44 46DD9557"));

  test_salsa20(SHEX("0053A6F94C9FF24598EB3E91E4378ADD"),
	       SHEX("0D74DB42A91077DE"),
	       SHEX("00000000 00000000"),
	       SHEX("05E1E7BE B697D999"));

  test_salsa20(SHEX("80000000 00000000 00000000 00000000"
		    "00000000 00000000 00000000 00000000"),
	       SHEX("00000000 00000000"),
	       SHEX("00000000 00000000"),
	       SHEX("E3BE8FDD 8BECA2E3"));

  test_salsa20(SHEX("00000000 00000000 00000000 00000000"
		    "00000000 00000000 00000000 00000000"),
	       SHEX("80000000 00000000"),
	       SHEX("00000000 00000000"),
	       SHEX("2ABA3DC45B494700"));

  test_salsa20(SHEX("0053A6F94C9FF24598EB3E91E4378ADD"
		    "3083D6297CCF2275C81B6EC11467BA0D"),
	       SHEX("0D74DB42A91077DE"),
	       SHEX("00000000 00000000"),
	       SHEX("F5FAD53F 79F9DF58"));

  test_salsa20_stream(SHEX("80000000000000000000000000000000"),
		      SHEX("00000000 00000000"),
		      SHEX("4DFA5E481DA23EA09A31022050859936"
			   "DA52FCEE218005164F267CB65F5CFD7F"
			   "2B4F97E0FF16924A52DF269515110A07"
			   "F9E460BC65EF95DA58F740B7D1DBB0AA"
			   "DA9C1581F429E0A00F7D67E23B730676"
			   "783B262E8EB43A25F55FB90B3E753AEF"
			   "8C6713EC66C51881111593CCB3E8CB8F"
			   "8DE124080501EEEB389C4BCB6977CF95"
			   "7D5789631EB4554400E1E025935DFA7B"
			   "3E9039D61BDC58A8697D36815BF1985C"
			   "EFDF7AE112E5BB81E37ECF0616CE7147"
			   "FC08A93A367E08631F23C03B00A8DA2F"
			   "B375703739DACED4DD4059FD71C3C47F"
			   "C2F9939670FAD4A46066ADCC6A564578"
			   "3308B90FFB72BE04A6B147CBE38CC0C3"
			   "B9267C296A92A7C69873F9F263BE9703"),
		      SHEX("F7A274D268316790A67EC058F45C0F2A"
			   "067A99FCDE6236C0CEF8E056349FE54C"
			   "5F13AC74D2539570FD34FEAB06C57205"
			   "3949B59585742181A5A760223AFA22D4"));

  test_salsa20_stream(SHEX("48494A4B4C4D4E4F5051525354555657"
			   "58595A5B5C5D5E5F6061626364656667"),
		      SHEX("0000000000000000"),
		      SHEX("53AD3698A011F779AD71030F3EFBEBA0"
			   "A7EE3C55789681B1591EF33A7BE521ED"
			   "68FC36E58F53FFD6E1369B00E390E973"
			   "F656ACB097E0D603BE59A0B8F7975B98"
			   "A04698274C6AC6EC03F66ED3F94C08B7"
			   "9FFDBF2A1610E6F5814905E73AD6D0D2"
			   "8164EEB8450D8ED0BB4B644761B43512"
			   "52DD5DDF00C31E3DABA0BC17691CCFDC"
			   "B826C7F071E796D34E3BFFB3C96E76A1"
			   "209388392806947C7F19B86D379FA3AE"
			   "DFCD19EBF49803DACC6E577E5B97B0F6"
			   "D2036B6624D8196C96FCF02C865D30C1"
			   "B505D41E2C207FA1C0A0E93413DDCFFC"
			   "9BECA8030AFFAC2466E56482DA0EF428"
			   "E63880B5021D3051F18679505A2B9D4F"
			   "9B2C5A2D271D276DE3F51DBEBA934436"),
		      SHEX("7849651A820B1CDFE36D5D6632716534"
			   "E0635EDEFD538122D80870B60FB055DB"
			   "637C7CA2B78B116F83AFF46E40F8F71D"
			   "4CD6D2E1B750D5E011D1DF2E80F7210A"));
}
Пример #17
0
void
test_main(void)
{
  test_cipher_stream(&nettle_arcfour128,
		     SHEX("01234567 89ABCDEF 00000000 00000000"),
		     SHEX("01234567 89ABCDEF"),
		     SHEX("69723659 1B5242B1"));

  /* More data. This ensures that we get some collisions between the S
     accesses at index i,j and the access at si + sj. I.e. the cases
     where the ordering of loads and stores matter. */
  test_cipher_stream(&nettle_arcfour128,
		     SHEX("aaaaaaaa bbbbbbbb cccccccc dddddddd"),
		     SHEX("00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"

			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"
			  "00000000 00000000 00000000 00000000"),
		     SHEX("a2b35dc7 bf95ae1e 1c432d15 f4fb8c1c"
			  "f264e1d0 bd090831 6caa7d17 5401ae67"
			  "3cfbd140 fd3dee42 1012d674 2fb69fa3"
			  "6522631e bb3d4703 535de1ce 4a81ddce"

			  "5780cfe0 b5fc9fae ebe14c96 26451bd9"
			  "992f2204 119cbe37 cbdc453c 7afa08c7"
			  "1380ccf8 48f81e53 a535cdfb 96c64faa"
			  "c3f759d0 fa1ff920 008d95cf 39d52324"

			  "d0aac3f9 749b22e2 6a065145 06fb249d"
			  "ffb8e05e cb0381fe 5346a04a 63dac61c"
			  "10b6683e 3ab427de d4c6bc60 6366545e"
			  "77d0e121 96037717 a745d49e e72a70aa"

			  "a50a612d 879b0580 fd4a89ae 3ee49871"
			  "2cf6c98d a62dfbc7 d7b2d901 2c3aaf27"
			  "42b7e089 ef2466ac 450b440c 138daa1a"
			  "cf9ebef6 f66a7a64 2677b213 06640130"

			  "de6651df 0065180d 4db366ba 9c377712"
			  "53d21cac 82ed72a4 c6c4d81e 4375fea3"
			  "1f935909 95322c83 13c64d8e 829c93a6"
			  "d540a1b3 20f41541 96800888 1a7afc9b"

			  "e39e89fc 3ac78be5 cdbbf774 33c36863"
			  "da2a3b1b d06e54a9 aa4b7edd 70b34941"
			  "b886f7db f36c3def f9fc4c80 7ce55ea5"
			  "98a7257b f68a9e1d caf4bfd6 43bd9853"

			  "c966629d 54e34221 6e140780 d48c69bb"
			  "5e77e886 86f2ebcb 807732d5 d29bc384"
			  "a4ca1c31 c7c1b5b9 85dbfcf1 8d845905"
			  "a0ff487a b4a3f252 a75caebf 857ba48b"

			  "613e3067 92cada3e 0e07f599 2f4794f3"
			  "af01f15a 491732fb 22aa09a3 d2e1e408"
			  "fe94bdb4 993c68b1 1bb79eb1 bb7ec446"
			  "760ef7bf 2caa8713 479760e5 a6e143cd"));
}
Пример #18
0
void
test_main (void)
{
  /* Test cases for the smaller groups, verified with a
     proof-of-concept implementation done for Yubico AB. */
  test_ecdsa (&nettle_secp_192r1,
	      "DC51D3866A15BACDE33D96F992FCA99D"
	      "A7E6EF0934E70975", /* z */

	      "9E56F509196784D963D1C0A401510EE7"
	      "ADA3DCC5DEE04B15", /* k */

	      SHEX("BA7816BF8F01CFEA414140DE5DAE2223"
		   "B00361A396177A9C"), /* h */

	      "8c478db6a5c131540cebc739f9c0a9a8"
	      "c720c2abdd14a891", /* r */

	      "a91fb738f9f175d72f9c98527e881c36"
	      "8de68cb55ffe589"); /* s */

  test_ecdsa (&nettle_secp_224r1,
	      "446df0a771ed58403ca9cb316e617f6b"
	      "158420465d00a69601e22858",  /* z */

	      "4c13f1905ad7eb201178bc08e0c9267b"
	      "4751c15d5e1831ca214c33f4",  /* z */

	      SHEX("1b28a611fe62ab3649350525d06703ba"
		   "4b979a1e543566fd5caa85c6"),  /* h */

	      "2cc280778f3d067df6d3adbe3a6aad63"
	      "bc75f08f5c5f915411902a99",  /* r */ 

	      "d0f069fd0f108eb07b7bbc54c8d6c88d"
	      "f2715c38a95c31a2b486995f"); /* s */

  /* From RFC 4754 */
  test_ecdsa (&nettle_secp_256r1,
	      "DC51D386 6A15BACD E33D96F9 92FCA99D"
	      "A7E6EF09 34E70975 59C27F16 14C88A7F",  /* z */

	      "9E56F509 196784D9 63D1C0A4 01510EE7"
	      "ADA3DCC5 DEE04B15 4BF61AF1 D5A6DECE",  /* k */

	      SHEX("BA7816BF 8F01CFEA 414140DE 5DAE2223"
		   "B00361A3 96177A9C B410FF61 F20015AD"),  /* h */
	      
	      "CB28E099 9B9C7715 FD0A80D8 E47A7707"
	      "9716CBBF 917DD72E 97566EA1 C066957C",  /* r */
	      "86FA3BB4 E26CAD5B F90B7F81 899256CE"
	      "7594BB1E A0C89212 748BFF3B 3D5B0315"); /* s */

  test_ecdsa (&nettle_secp_384r1,
	      "0BEB6466 34BA8773 5D77AE48 09A0EBEA"
	      "865535DE 4C1E1DCB 692E8470 8E81A5AF"
	      "62E528C3 8B2A81B3 5309668D 73524D9F",  /* z */

	      "B4B74E44 D71A13D5 68003D74 89908D56"
	      "4C7761E2 29C58CBF A1895009 6EB7463B"
	      "854D7FA9 92F934D9 27376285 E63414FA",  /* k */

	      SHEX("CB00753F 45A35E8B B5A03D69 9AC65007"
		   "272C32AB 0EDED163 1A8B605A 43FF5BED"
		   "8086072B A1E7CC23 58BAECA1 34C825A7"),  /* h */

	      "FB017B91 4E291494 32D8BAC2 9A514640"
	      "B46F53DD AB2C6994 8084E293 0F1C8F7E"
	      "08E07C9C 63F2D21A 07DCB56A 6AF56EB3",  /* r */
	      "B263A130 5E057F98 4D38726A 1B468741"
	      "09F417BC A112674C 528262A4 0A629AF1"
	      "CBB9F516 CE0FA7D2 FF630863 A00E8B9F"); /* s*/

  test_ecdsa (&nettle_secp_521r1,
	      "0065FDA3 409451DC AB0A0EAD 45495112"
	      "A3D813C1 7BFD34BD F8C1209D 7DF58491"
	      "20597779 060A7FF9 D704ADF7 8B570FFA"
	      "D6F062E9 5C7E0C5D 5481C5B1 53B48B37"
	      "5FA1", /* z */
	      
	      "00C1C2B3 05419F5A 41344D7E 4359933D"
	      "734096F5 56197A9B 244342B8 B62F46F9"
	      "373778F9 DE6B6497 B1EF825F F24F42F9"
	      "B4A4BD73 82CFC337 8A540B1B 7F0C1B95"
	      "6C2F", /* k */

	      SHEX("DDAF35A1 93617ABA CC417349 AE204131"
		   "12E6FA4E 89A97EA2 0A9EEEE6 4B55D39A"
		   "2192992A 274FC1A8 36BA3C23 A3FEEBBD"
		   "454D4423 643CE80E 2A9AC94F A54CA49F"), /* h */

	      "0154FD38 36AF92D0 DCA57DD5 341D3053"
	      "988534FD E8318FC6 AAAAB68E 2E6F4339"
	      "B19F2F28 1A7E0B22 C269D93C F8794A92"
	      "78880ED7 DBB8D936 2CAEACEE 54432055"
	      "2251", /* r */
	      "017705A7 030290D1 CEB605A9 A1BB03FF"
	      "9CDD521E 87A696EC 926C8C10 C8362DF4"
	      "97536710 1F67D1CF 9BCCBF2F 3D239534"
	      "FA509E70 AAC851AE 01AAC68D 62F86647"
	      "2660"); /* s */
}