From 64cedcdf296024180e46ddaa4dea2e7d9557c8b4 Mon Sep 17 00:00:00 2001 From: Zhi Guan Date: Sun, 26 Mar 2017 15:23:37 +0800 Subject: [PATCH] update speck module --- Configure | 4 +++- crypto/speck/build.info | 2 ++ {demos/mycipher => crypto/speck}/speck.c | 4 ++-- {demos/mycipher => include/openssl}/speck.h | 4 ++-- test/build.info | 6 +++++- test/recipes/05-test_speck.t | 12 +++++++++++ {demos/mycipher => test}/specktest.c | 22 ++++++++++++++++++--- 7 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 crypto/speck/build.info rename {demos/mycipher => crypto/speck}/speck.c (93%) rename {demos/mycipher => include/openssl}/speck.h (90%) create mode 100644 test/recipes/05-test_speck.t rename {demos/mycipher => test}/specktest.c (54%) diff --git a/Configure b/Configure index 63c6049a..44cccee4 100755 --- a/Configure +++ b/Configure @@ -313,7 +313,7 @@ $config{sdirs} = [ "cms", "ts", "srp", "cmac", "ct", "async", "kdf", "sm3", "sms4", "kdf2", "ecies", "ffx", "sm2", "paillier", "cpk", "otp", "gmapi", "ec2", "bfibe", "bb1ibe", "sm9", "saf", "sdf", "skf", "sof", "zuc", - "serpent" + "serpent", "speck" ]; # Known TLS and DTLS protocols @@ -434,6 +434,7 @@ my @disablables = ( "pkcs7", "pkcs12", "serpent", + "speck", ); foreach my $proto ((@tls, @dtls)) { @@ -477,6 +478,7 @@ our %disabled = ( # "what" => "comment" "saf" => "default", "sof" => "default", "serpent" => "default", + # "speck" => "default", ); # Note: => pair form used for aesthetics, not to truly make a hash table diff --git a/crypto/speck/build.info b/crypto/speck/build.info new file mode 100644 index 00000000..f3cc909c --- /dev/null +++ b/crypto/speck/build.info @@ -0,0 +1,2 @@ +LIBS=../../libcrypto +SOURCE[../../libcrypto]=speck.c diff --git a/demos/mycipher/speck.c b/crypto/speck/speck.c similarity index 93% rename from demos/mycipher/speck.c rename to crypto/speck/speck.c index 8b43983e..c717d394 100644 --- a/demos/mycipher/speck.c +++ b/crypto/speck/speck.c @@ -1,4 +1,4 @@ -#include "speck.h" +#include #define ROR(x, r) ((x >> r) | (x << ((sizeof(SPECK_TYPE) * 8) - r)))//循环右移 #define ROL(x, r) ((x << r) | (x >> ((sizeof(SPECK_TYPE) * 8) - r)))//循环左移 @@ -11,7 +11,7 @@ #define RR(x, y, k) (y ^= x, y = ROR(y, 3), x ^= k, x -= y, x = ROL(x, 8)) #endif -void mycipher_set_encrypt_key(mycipher_key_t *key, const unsigned char *user_key) +void speck_set_encrypt_key(speck_key_t *key, const unsigned char *user_key) { int i; for (i = 0; i < num_word; i++) diff --git a/demos/mycipher/speck.h b/include/openssl/speck.h similarity index 90% rename from demos/mycipher/speck.h rename to include/openssl/speck.h index 7307955c..899373a8 100644 --- a/demos/mycipher/speck.h +++ b/include/openssl/speck.h @@ -35,9 +35,9 @@ extern "C" { typedef struct { unsigned char rk[num_word]; - } mycipher_key_t; + } speck_key_t; - void mycipher_set_encrypt_key(mycipher_key_t *key, const unsigned char *user_key); + void speck_set_encrypt_key(speck_key_t *key, const unsigned char *user_key); void speck_expand(SPECK_TYPE const K[SPECK_KEY_LEN], SPECK_TYPE S[SPECK_ROUNDS]); void speck_encrypt(SPECK_TYPE const pt[2], SPECK_TYPE ct[2], SPECK_TYPE const K[SPECK_ROUNDS]); void speck_decrypt(SPECK_TYPE const ct[2], SPECK_TYPE pt[2], SPECK_TYPE const K[SPECK_ROUNDS]); diff --git a/test/build.info b/test/build.info index 066e2b70..341792b9 100644 --- a/test/build.info +++ b/test/build.info @@ -21,7 +21,7 @@ IF[{- !$disabled{tests} -}] pailliertest cpktest otptest gmapitest ec2test \ bfibetest bb1ibetest sm9test \ saftest sdftest skftest softest zuctest \ - serpenttest + serpenttest specktest SOURCE[aborttest]=aborttest.c INCLUDE[aborttest]=../include @@ -368,6 +368,10 @@ IF[{- !$disabled{tests} -}] INCLUDE[serpenttest]=../include DEPEND[serpenttest]=../libcrypto + SOURCE[specktest]=specktest.c + INCLUDE[specktest]=../include + DEPEND[specktest]=../libcrypto + IF[{- !$disabled{shared} -}] PROGRAMS_NO_INST=shlibloadtest SOURCE[shlibloadtest]=shlibloadtest.c diff --git a/test/recipes/05-test_speck.t b/test/recipes/05-test_speck.t new file mode 100644 index 00000000..c35584bb --- /dev/null +++ b/test/recipes/05-test_speck.t @@ -0,0 +1,12 @@ +#! /usr/bin/env perl +# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the OpenSSL license (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + + +use OpenSSL::Test::Simple; + +simple_test("test_speck", "specktest", "speck"); diff --git a/demos/mycipher/specktest.c b/test/specktest.c similarity index 54% rename from demos/mycipher/specktest.c rename to test/specktest.c index 59adfa16..00dbe7f7 100644 --- a/demos/mycipher/specktest.c +++ b/test/specktest.c @@ -1,7 +1,22 @@ -#include"speck.h" +#include +#include +#include + +#include "../e_os.h" + +#ifdef OPENSSL_NO_SPECK int main(int argc, char **argv) { - mycipher_key_t key; + printf("No Speck support\n"); + return 0; +} +#else + +#include + +int main(int argc, char **argv) +{ + speck_key_t key; unsigned char userkey[2] = { 0x01, 0x02, }; unsigned char msg[2] = { 0xab, 0xcd, }; SPECK_TYPE S[SPECK_ROUNDS]; @@ -9,7 +24,7 @@ int main(int argc, char **argv) unsigned char cbuf[2]; unsigned char mbuf[2]; - mycipher_set_encrypt_key(&key, userkey); + speck_set_encrypt_key(&key, userkey); speck_expand(&key, S); speck_encrypt(msg, cbuf, S); speck_decrypt(cbuf, mbuf, S); @@ -20,3 +35,4 @@ int main(int argc, char **argv) return 0; } +#endif