[OpenSEED-CVSlog] [Commit] openseed/src seed_ofb.c Makefile.am seed.c seed.h seed_cbc.c seed_ecb.c
Status: Beta
Brought to you by:
perky
From: Chang <pe...@us...> - 2001-11-16 03:00:53
|
perky 01/11/15 19:00:52 Modified: src Makefile.am seed.c seed.h seed_cbc.c seed_ecb.c Added: src seed_ofb.c Log: . adding OFB framework . change prototype of seed_encrypt & seed_decrypt function to save self copying. Revision Changes Path 1.5 +2 -2 openseed/src/Makefile.am Index: Makefile.am =================================================================== RCS file: /cvsroot/openseed/openseed/src/Makefile.am,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Makefile.am 2001/11/15 15:35:46 1.4 +++ Makefile.am 2001/11/16 03:00:52 1.5 @@ -1,4 +1,4 @@ -# $Id: Makefile.am,v 1.4 2001/11/15 15:35:46 perky Exp $ +# $Id: Makefile.am,v 1.5 2001/11/16 03:00:52 perky Exp $ INCLUDES = -I$(top_srcdir) @@ -6,5 +6,5 @@ seedinclude_HEADERS = seed.h lib_LTLIBRARIES = libseed.la -libseed_la_SOURCES = seed.c seed_cbc.c seed_ecb.c seed_skey.c seed_sl.c seed_lcl.h +libseed_la_SOURCES = seed.c seed_cbc.c seed_ecb.c seed_ofb.c seed_skey.c seed_sl.c seed_lcl.h 1.7 +5 -5 openseed/src/seed.c Index: seed.c =================================================================== RCS file: /cvsroot/openseed/openseed/src/seed.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- seed.c 2001/11/15 21:31:17 1.6 +++ seed.c 2001/11/16 03:00:52 1.7 @@ -25,19 +25,19 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: seed.c,v 1.6 2001/11/15 21:31:17 perky Exp $ + * $Id: seed.c,v 1.7 2001/11/16 03:00:52 perky Exp $ */ #include "seed.h" #include "seed_lcl.h" void -seed_encrypt(const char *d, const SEED_KEY_SCHEDULE key) +seed_encrypt(char *d, const char *s, const SEED_KEY_SCHEDULE key) { u_int32_t x1, x2, x3, x4; union TWord t0, t1; - SPLIT_WORD(d, x1, x2, x3, x4); + SPLIT_WORD(s, x1, x2, x3, x4); E_SEED(x1, x2, x3, x4, 0); E_SEED(x3, x4, x1, x2, 2); @@ -60,12 +60,12 @@ } void -seed_decrypt(const char *d, const SEED_KEY_SCHEDULE key) +seed_decrypt(char *d, const char *s, const SEED_KEY_SCHEDULE key) { u_int32_t x1, x2, x3, x4; union TWord t0, t1; - SPLIT_WORD(d, x1, x2, x3, x4); + SPLIT_WORD(s, x1, x2, x3, x4); E_SEED(x1, x2, x3, x4, 30); E_SEED(x3, x4, x1, x2, 28); 1.6 +6 -3 openseed/src/seed.h Index: seed.h =================================================================== RCS file: /cvsroot/openseed/openseed/src/seed.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- seed.h 2001/11/15 21:31:17 1.5 +++ seed.h 2001/11/16 03:00:52 1.6 @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: seed.h,v 1.5 2001/11/15 21:31:17 perky Exp $ + * $Id: seed.h,v 1.6 2001/11/16 03:00:52 perky Exp $ */ #ifndef HEADER_SEED_H @@ -49,8 +49,8 @@ extern "C" { #endif -inline void seed_encrypt(const char *d, const SEED_KEY_SCHEDULE key); -inline void seed_decrypt(const char *d, const SEED_KEY_SCHEDULE key); +inline void seed_encrypt(char *d, const char *s, const SEED_KEY_SCHEDULE key); +inline void seed_decrypt(char *d, const char *s, const SEED_KEY_SCHEDULE key); SEED_KEY_SCHEDULE seed_create_keyschedule(const unsigned char *rawkey); void seed_destroy_keyschedule(SEED_KEY_SCHEDULE key); @@ -64,6 +64,9 @@ void seed_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t length, SEED_KEY_SCHEDULE ks, SEED_IV iv); void seed_cbc_decrypt(const unsigned char *in, unsigned char *out, size_t length, SEED_KEY_SCHEDULE ks, SEED_IV iv); + +void seed_ofb_encrypt(const unsigned char *in, unsigned char *out, size_t length, SEED_KEY_SCHEDULE ks, SEED_IV iv); +void seed_ofb_decrypt(const unsigned char *in, unsigned char *out, size_t length, SEED_KEY_SCHEDULE ks, SEED_IV iv); #ifdef __cplusplus } 1.4 +9 -6 openseed/src/seed_cbc.c Index: seed_cbc.c =================================================================== RCS file: /cvsroot/openseed/openseed/src/seed_cbc.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- seed_cbc.c 2001/11/15 21:31:17 1.3 +++ seed_cbc.c 2001/11/16 03:00:52 1.4 @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: seed_cbc.c,v 1.3 2001/11/15 21:31:17 perky Exp $ + * $Id: seed_cbc.c,v 1.4 2001/11/16 03:00:52 perky Exp $ */ #include <stdlib.h> @@ -48,11 +48,13 @@ for(; in < e_in; in += SEED_BLOCK, out += SEED_BLOCK) { XOR_SEEDBLOCK(out, prev, in); - seed_encrypt(out, ks); + seed_encrypt(out, out, ks); prev = out; } - if (iv) memcpy(iv, prev, SEED_BLOCK); + if (iv) { + MOV_SEEDBLOCK(iv, prev); + } /* XXX: Padding ?? */ } @@ -67,13 +69,14 @@ else prev = iv; for(; in < e_in; in += SEED_BLOCK, out += SEED_BLOCK) { - MOV_SEEDBLOCK(out, in); - seed_decrypt(out, ks); + seed_decrypt(out, in, ks); XOR_SEEDBLOCK(out, out, prev); prev = in; } - if (iv) memcpy(iv, prev, SEED_BLOCK); + if (iv) { + MOV_SEEDBLOCK(iv, prev); + } /* XXX: Padding ?? */ } 1.4 +7 -7 openseed/src/seed_ecb.c Index: seed_ecb.c =================================================================== RCS file: /cvsroot/openseed/openseed/src/seed_ecb.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- seed_ecb.c 2001/11/15 21:31:17 1.3 +++ seed_ecb.c 2001/11/16 03:00:52 1.4 @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: seed_ecb.c,v 1.3 2001/11/15 21:31:17 perky Exp $ + * $Id: seed_ecb.c,v 1.4 2001/11/16 03:00:52 perky Exp $ */ #include "seed.h" @@ -36,10 +36,10 @@ void seed_ecb_encrypt(const unsigned char *in, unsigned char *out, size_t length, SEED_KEY_SCHEDULE ks) { - memcpy(out, in, length); + unsigned char *e_in; - for(; length > 0; length -= SEED_BLOCK, out += SEED_BLOCK) - seed_encrypt(out, ks); + for(e_in = in; in < e_in; in += SEED_BLOCK, out += SEED_BLOCK) + seed_decrypt(out, in, ks); /* XXX: Padding ?? */ } @@ -47,10 +47,10 @@ void seed_ecb_decrypt(const unsigned char *in, unsigned char *out, size_t length, SEED_KEY_SCHEDULE ks) { - memcpy(out, in, length); + unsigned char *e_in; - for(; length > 0; length -= SEED_BLOCK, out += SEED_BLOCK) - seed_decrypt(out, ks); + for(e_in = in; in < e_in; in += SEED_BLOCK, out += SEED_BLOCK) + seed_decrypt(out, in, ks); } /* 1.1 openseed/src/seed_ofb.c Index: seed_ofb.c =================================================================== /* * Copyright (c) 2001 LinuxKorea Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of author nor the names of its contributors may * be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $Id: seed_ofb.c,v 1.1 2001/11/16 03:00:52 perky Exp $ */ #include <stdlib.h> #include <string.h> #include "seed.h" #include "seed_lcl.h" static const unsigned char NULLIV [SEED_BLOCK]={0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0}; #if 0 void seed_ofb_encrypt(const unsigned char *in, unsigned char *out, size_t length, SEED_KEY_SCHEDULE ks, SEED_IV iv) { const unsigned char *prev, *e_in=in+length; /* XXX: check block size */ if (!iv) prev = NULLIV; else prev = iv; for(; in < e_in; in += SEED_BLOCK, out += SEED_BLOCK) { XOR_SEEDBLOCK(out, prev, in); seed_encrypt(out, ks); prev = out; } if (iv) memcpy(iv, prev, SEED_BLOCK); /* XXX: Padding ?? */ } void seed_ofb_decrypt(const unsigned char *in, unsigned char *out, size_t length, SEED_KEY_SCHEDULE ks, SEED_IV iv) { const unsigned char *prev, *e_in=in+length; /* XXX: check block size */ if (!iv) prev = NULLIV; else prev = iv; for(; in < e_in; in += SEED_BLOCK, out += SEED_BLOCK) { MOV_SEEDBLOCK(out, in); seed_decrypt(out, ks); XOR_SEEDBLOCK(out, out, prev); prev = in; } if (iv) memcpy(iv, prev, SEED_BLOCK); /* XXX: Padding ?? */ } #endif /* * ex:ts=4 */ |