cipher/gost28147: generate optimized s-boxes from compact ones
[libgcrypt.git] / cipher / gost.h
index 4c03674..3fbd9df 100644 (file)
@@ -1,46 +1,32 @@
-/* gost.h
- *     Copyright (C) 1998 Free Software Foundation, Inc.
+/* gost.h - GOST 28147-89 implementation
+ * Copyright (C) 2012 Free Software Foundation, Inc.
  *
- * This file is part of GNUPG.
+ * This file is part of Libgcrypt.
  *
- * GNUPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * Libgcrypt is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
  *
- * GNUPG is distributed in the hope that it will be useful,
+ * Libgcrypt is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * GNU Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef G10_GOST_H
-#define G10_GOST_H
 
-#include "types.h"
-
-#define GOST_KEYSIZE 16
-#define GOST_BLOCKSIZE 8
-#define GOST_ROUNDS 8
-#define GOST_KEYLEN (6*GOST_ROUNDS+4)
+#ifndef _GCRY_GOST_H
+#define _GCRY_GOST_H
 
 typedef struct {
-    u16 ek[GOST_KEYLEN];
-    u16 dk[GOST_KEYLEN];
-    byte iv[GOST_BLOCKSIZE];
-} GOST_context;
-
-void gost_setkey( GOST_context *c, byte *key );
-void gost_setiv( GOST_context *c, byte *iv );
-void gost_encode( GOST_context *c, byte *out, byte *in, unsigned nblocks );
-void gost_decode( GOST_context *c, byte *out, byte *in, unsigned nblocks );
-void gost_encode_cfb( GOST_context *c, byte *outbuf,
-                                      byte *inbuf, unsigned nbytes);
-void gost_decode_cfb( GOST_context *c, byte *outbuf,
-                                      byte *inbuf, unsigned nbytes);
+  u32 key[8];
+  const u32 *sbox;
+} GOST28147_context;
 
+/* This is a simple interface that will be used by GOST R 34.11-94 */
+extern unsigned int _gcry_gost_enc_one (GOST28147_context *c, const byte *key,
+    byte *out, byte *in);
 
-#endif /*G10_GOST_H*/
+#endif