[git] GCRYPT - branch, master, updated. libgcrypt-1.7.3-16-g1a67e31
by Dmitry Eremin-Solenikov
cvs at cvs.gnupg.org
Fri Nov 25 04:39:32 CET 2016
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The GNU crypto library".
The branch, master has been updated
via 1a67e3195896704f8b3ba09e3db1214bab834491 (commit)
via dc8ceb8d2dfef949f3afa14fc75f9de8cd07c7ad (commit)
via 4f5c26c73c66daf2e4aff966e43c22b2db7e0138 (commit)
from 5ca63c92825453fdb369a97bbc19cb95b49b4296 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 1a67e3195896704f8b3ba09e3db1214bab834491
Author: Dmitry Eremin-Solenikov <dbaryshkov at gmail.com>
Date: Wed Nov 23 08:38:33 2016 +0300
Cast oid argument of gcry_cipher_set_sbox to disable compiler warning.
* src/gcrypt.h.in (gcry_cipher_set_sbox): Cast oid to (void *).
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov at gmail.com>
diff --git a/src/gcrypt.h.in b/src/gcrypt.h.in
index f896a78..77ff947 100644
--- a/src/gcrypt.h.in
+++ b/src/gcrypt.h.in
@@ -1062,7 +1062,7 @@ gcry_error_t gcry_cipher_checktag (gcry_cipher_hd_t hd, const void *intag,
NULL, on )
#define gcry_cipher_set_sbox(h,oid) gcry_cipher_ctl( (h), GCRYCTL_SET_SBOX, \
- (oid), 0);
+ (void *) oid, 0);
/* Indicate to the encrypt and decrypt functions that the next call
provides the final data. Only used with some modes. */
commit dc8ceb8d2dfef949f3afa14fc75f9de8cd07c7ad
Author: Dmitry Eremin-Solenikov <dbaryshkov at gmail.com>
Date: Wed Nov 23 08:38:32 2016 +0300
gost: Rename tc26 s-box from A to Z.
* cipher/gost-s-box.c (gost_sboxes): Rename TC26_A to TC26_Z as it is
the name that ended up in all standards.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov at gmail.com>
diff --git a/cipher/gost-s-box.c b/cipher/gost-s-box.c
index 7bf6041..7aa5444 100644
--- a/cipher/gost-s-box.c
+++ b/cipher/gost-s-box.c
@@ -182,7 +182,7 @@ struct gost_sbox
0x3, 0x1, 0x2, 0x8, 0x1, 0x6, 0x7, 0xE,
}
},
- { "TC26_A", "1.2.643.7.1.2.5.1.1", {
+ { "TC26_Z", "1.2.643.7.1.2.5.1.1", {
0xc, 0x6, 0xb, 0xc, 0x7, 0x5, 0x8, 0x1,
0x4, 0x8, 0x3, 0x8, 0xf, 0xd, 0xe, 0x7,
0x6, 0x2, 0x5, 0x2, 0x5, 0xf, 0x2, 0xe,
commit 4f5c26c73c66daf2e4aff966e43c22b2db7e0138
Author: Dmitry Eremin-Solenikov <dbaryshkov at gmail.com>
Date: Wed Nov 23 08:38:31 2016 +0300
tests: Add test to verify GOST 28147-89 against known results.
* tests/basic.c (check_gost28147_cipher): new test function.
--
Currently the only test executed against GOST 28147-89 cipher is a
basic cipher test: it checks that decoding of encoded text returns
the original plaintext. Add a function to verify the cipher against
test vectors.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov at gmail.com>
diff --git a/tests/basic.c b/tests/basic.c
index e5a325b..7f7bce3 100644
--- a/tests/basic.c
+++ b/tests/basic.c
@@ -3874,6 +3874,170 @@ check_ocb_cipher (void)
check_ocb_cipher_splitaad ();
}
+static void
+check_gost28147_cipher (void)
+{
+#if USE_GOST28147
+ static const struct {
+ char key[MAX_DATA_LEN];
+ const char *oid;
+ unsigned char plaintext[MAX_DATA_LEN];
+ int inlen;
+ char out[MAX_DATA_LEN];
+ } tv[] =
+ {
+ {
+ "\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x80"
+ "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xd0",
+ "1.2.643.7.1.2.5.1.1",
+ "\x01\x02\x03\x04\x05\x06\x07\x08",
+ 8,
+ "\xce\x5a\x5e\xd7\xe0\x57\x7a\x5f",
+ }, {
+ "\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x80"
+ "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xd0",
+ "1.2.643.2.2.31.0",
+ "\x01\x02\x03\x04\x05\x06\x07\x08",
+ 8,
+ "\x98\x56\xcf\x8b\xfc\xc2\x82\xf4",
+ }, {
+ "\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x80"
+ "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xd0",
+ "1.2.643.2.2.31.1",
+ "\x01\x02\x03\x04\x05\x06\x07\x08",
+ 8,
+ "\x66\x81\x84\xae\xdc\x48\xc9\x17",
+ }, {
+ "\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x80"
+ "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xd0",
+ "1.2.643.2.2.31.2",
+ "\x01\x02\x03\x04\x05\x06\x07\x08",
+ 8,
+ "\xdb\xee\x81\x14\x7b\x74\xb0\xf2",
+ }, {
+ "\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x80"
+ "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xd0",
+ "1.2.643.2.2.31.3",
+ "\x01\x02\x03\x04\x05\x06\x07\x08",
+ 8,
+ "\x31\xa3\x85\x9d\x0a\xee\xb8\x0e",
+ }, {
+ "\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x80"
+ "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xd0",
+ "1.2.643.2.2.31.4",
+ "\x01\x02\x03\x04\x05\x06\x07\x08",
+ 8,
+ "\xb1\x32\x3e\x0b\x21\x73\xcb\xd1",
+ }, {
+ "\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x80"
+ "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xd0",
+ "1.2.643.2.2.30.0",
+ "\x01\x02\x03\x04\x05\x06\x07\x08",
+ 8,
+ "\xce\xd5\x2a\x7f\xf7\xf2\x60\xd5",
+ }, {
+ "\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x80"
+ "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xd0",
+ "1.2.643.2.2.30.1",
+ "\x01\x02\x03\x04\x05\x06\x07\x08",
+ 8,
+ "\xe4\x21\x75\xe1\x69\x22\xd0\xa8",
+ }
+ };
+
+ gcry_cipher_hd_t hde, hdd;
+ unsigned char out[MAX_DATA_LEN];
+ int i, keylen;
+ gcry_error_t err = 0;
+
+ if (verbose)
+ fprintf (stderr, " Starting GOST28147 cipher checks.\n");
+ keylen = gcry_cipher_get_algo_keylen(GCRY_CIPHER_GOST28147);
+ if (!keylen)
+ {
+ fail ("gost28147, gcry_cipher_get_algo_keylen failed\n");
+ return;
+ }
+
+ for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++)
+ {
+ err = gcry_cipher_open (&hde, GCRY_CIPHER_GOST28147,
+ GCRY_CIPHER_MODE_ECB, 0);
+ if (!err)
+ err = gcry_cipher_open (&hdd, GCRY_CIPHER_GOST28147,
+ GCRY_CIPHER_MODE_ECB, 0);
+ if (err)
+ {
+ fail ("gost28147, gcry_cipher_open failed: %s\n", gpg_strerror (err));
+ return;
+ }
+
+ err = gcry_cipher_setkey (hde, tv[i].key, keylen);
+ if (!err)
+ err = gcry_cipher_setkey (hdd, tv[i].key, keylen);
+ if (err)
+ {
+ fail ("gost28147, gcry_cipher_setkey failed: %s\n",
+ gpg_strerror (err));
+ gcry_cipher_close (hde);
+ gcry_cipher_close (hdd);
+ return;
+ }
+
+ err = gcry_cipher_set_sbox (hde, tv[i].oid);
+ if (!err)
+ err = gcry_cipher_set_sbox (hdd, tv[i].oid);
+ if (err)
+ {
+ fail ("gost28147, gcry_cipher_set_sbox failed: %s\n",
+ gpg_strerror (err));
+ gcry_cipher_close (hde);
+ gcry_cipher_close (hdd);
+ return;
+ }
+
+ err = gcry_cipher_encrypt (hde, out, MAX_DATA_LEN,
+ tv[i].plaintext,
+ tv[i].inlen == -1 ?
+ strlen ((char*)tv[i].plaintext) :
+ tv[i].inlen);
+ if (err)
+ {
+ fail ("gost28147, gcry_cipher_encrypt (%d) failed: %s\n",
+ i, gpg_strerror (err));
+ gcry_cipher_close (hde);
+ gcry_cipher_close (hdd);
+ return;
+ }
+
+ if (memcmp (tv[i].out, out, tv[i].inlen))
+ {
+ fail ("gost28147, encrypt mismatch entry %d\n", i);
+ mismatch (tv[i].out, tv[i].inlen,
+ out, tv[i].inlen);
+ }
+
+ err = gcry_cipher_decrypt (hdd, out, tv[i].inlen, NULL, 0);
+ if (err)
+ {
+ fail ("gost28147, gcry_cipher_decrypt (%d) failed: %s\n",
+ i, gpg_strerror (err));
+ gcry_cipher_close (hde);
+ gcry_cipher_close (hdd);
+ return;
+ }
+
+ if (memcmp (tv[i].plaintext, out, tv[i].inlen))
+ {
+ fail ("gost28147, decrypt mismatch entry %d\n", i);
+ mismatch (tv[i].plaintext, tv[i].inlen,
+ out, tv[i].inlen);
+ }
+ }
+
+#endif
+}
+
static void
check_stream_cipher (void)
@@ -5750,6 +5914,7 @@ check_cipher_modes(void)
check_gcm_cipher ();
check_poly1305_cipher ();
check_ocb_cipher ();
+ check_gost28147_cipher ();
check_stream_cipher ();
check_stream_cipher_large_block ();
-----------------------------------------------------------------------
Summary of changes:
cipher/gost-s-box.c | 2 +-
src/gcrypt.h.in | 2 +-
tests/basic.c | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 167 insertions(+), 2 deletions(-)
hooks/post-receive
--
The GNU crypto library
http://git.gnupg.org
_______________________________________________
Gnupg-commits mailing list
Gnupg-commits at gnupg.org
http://lists.gnupg.org/mailman/listinfo/gnupg-commits
More information about the Gcrypt-devel
mailing list