Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-5]: src/crypto/dist/ssh Pull up revisions 1.1-1.1.1.2 (requeste...



details:   https://anonhg.NetBSD.org/src/rev/b94df79cab1c
branches:  netbsd-1-5
changeset: 490712:b94df79cab1c
user:      he <he%NetBSD.org@localhost>
date:      Mon Feb 26 20:27:26 2001 +0000

description:
Pull up revisions 1.1-1.1.1.2 (requested by itojun):
  Update SSH to version found on trunk as of 26 Feb 2001.

diffstat:

 crypto/dist/ssh/cli.h      |   16 +
 crypto/dist/ssh/dh.h       |   37 ++++
 crypto/dist/ssh/rijndael.c |  412 +++++++++++++++++++++++++++++++++++++++++++++
 crypto/dist/ssh/rijndael.h |   33 +++
 crypto/dist/ssh/ssh-dss.h  |   41 ++++
 crypto/dist/ssh/ssh-rsa.h  |   41 ++++
 6 files changed, 580 insertions(+), 0 deletions(-)

diffs (truncated from 604 to 300 lines):

diff -r ace6e0aa1a73 -r b94df79cab1c crypto/dist/ssh/cli.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/dist/ssh/cli.h     Mon Feb 26 20:27:26 2001 +0000
@@ -0,0 +1,16 @@
+/* $OpenBSD: cli.h,v 1.3 2001/01/16 23:58:09 deraadt Exp $ */
+
+#ifndef CLI_H
+#define CLI_H
+
+/*
+ * Presents a prompt and returns the response allocated with xmalloc().
+ * Uses /dev/tty or stdin/out depending on arg.  Optionally disables echo
+ * of response depending on arg.  Tries to ensure that no other userland
+ * buffer is storing the response.
+ */
+char * cli_read_passphrase(char * prompt, int from_stdin, int echo_enable);
+char * cli_prompt(char * prompt, int echo_enable);
+void   cli_mesg(char * mesg);
+
+#endif /* CLI_H */
diff -r ace6e0aa1a73 -r b94df79cab1c crypto/dist/ssh/dh.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/dist/ssh/dh.h      Mon Feb 26 20:27:26 2001 +0000
@@ -0,0 +1,37 @@
+/*     $OpenBSD: dh.h,v 1.2 2001/01/29 01:58:15 niklas Exp $   */
+
+/*
+ * Copyright (c) 2000 Niels Provos.  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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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.
+ */
+#ifndef DH_H
+#define DH_H
+
+struct dhgroup {
+       int size;
+       BIGNUM *g;
+       BIGNUM *p;
+};
+
+DH *choose_dh(int minbits);
+
+#endif
diff -r ace6e0aa1a73 -r b94df79cab1c crypto/dist/ssh/rijndael.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/dist/ssh/rijndael.c        Mon Feb 26 20:27:26 2001 +0000
@@ -0,0 +1,412 @@
+/*     $OpenBSD: rijndael.c,v 1.7 2001/02/04 15:32:24 stevesk Exp $    */
+
+/* This is an independent implementation of the encryption algorithm:   */
+/*                                                                      */
+/*         RIJNDAEL by Joan Daemen and Vincent Rijmen                   */
+/*                                                                      */
+/* which is a candidate algorithm in the Advanced Encryption Standard   */
+/* programme of the US National Institute of Standards and Technology.  */
+/*                                                                      */
+/* Copyright in this implementation is held by Dr B R Gladman but I     */
+/* hereby give permission for its free direct or derivative use subject */
+/* to acknowledgment of its origin and compliance with any conditions   */
+/* that the originators of the algorithm place on its exploitation.     */
+/*                                                                      */
+/* Dr Brian Gladman (gladman%seven77.demon.co.uk@localhost) 14th January 1999     */
+
+/* Timing data for Rijndael (rijndael.c)
+
+Algorithm: rijndael (rijndael.c)
+
+128 bit key:
+Key Setup:    305/1389 cycles (encrypt/decrypt)
+Encrypt:       374 cycles =    68.4 mbits/sec
+Decrypt:       352 cycles =    72.7 mbits/sec
+Mean:          363 cycles =    70.5 mbits/sec
+
+192 bit key:
+Key Setup:    277/1595 cycles (encrypt/decrypt)
+Encrypt:       439 cycles =    58.3 mbits/sec
+Decrypt:       425 cycles =    60.2 mbits/sec
+Mean:          432 cycles =    59.3 mbits/sec
+
+256 bit key:
+Key Setup:    374/1960 cycles (encrypt/decrypt)
+Encrypt:       502 cycles =    51.0 mbits/sec
+Decrypt:       498 cycles =    51.4 mbits/sec
+Mean:          500 cycles =    51.2 mbits/sec
+
+*/
+
+#include <sys/types.h>
+#include "rijndael.h"
+
+void gen_tabs  __P((void));
+
+/* 3. Basic macros for speeding up generic operations               */
+
+/* Circular rotate of 32 bit values                                 */
+
+#define rotr(x,n)   (((x) >> ((int)(n))) | ((x) << (32 - (int)(n))))
+#define rotl(x,n)   (((x) << ((int)(n))) | ((x) >> (32 - (int)(n))))
+
+/* Invert byte order in a 32 bit variable                           */
+
+#define bswap(x)    ((rotl(x, 8) & 0x00ff00ff) | (rotr(x, 8) & 0xff00ff00))
+
+/* Extract byte from a 32 bit quantity (little endian notation)     */
+
+#define byte(x,n)   ((u1byte)((x) >> (8 * n)))
+
+#if BYTE_ORDER != LITTLE_ENDIAN
+#define BYTE_SWAP
+#endif
+
+#ifdef  BYTE_SWAP
+#define io_swap(x)  bswap(x)
+#else
+#define io_swap(x)  (x)
+#endif
+
+#define LARGE_TABLES
+
+u1byte  pow_tab[256];
+u1byte  log_tab[256];
+u1byte  sbx_tab[256];
+u1byte  isb_tab[256];
+u4byte  rco_tab[ 10];
+u4byte  ft_tab[4][256];
+u4byte  it_tab[4][256];
+
+#ifdef  LARGE_TABLES
+  u4byte  fl_tab[4][256];
+  u4byte  il_tab[4][256];
+#endif
+
+u4byte  tab_gen = 0;
+
+#define ff_mult(a,b)    (a && b ? pow_tab[(log_tab[a] + log_tab[b]) % 255] : 0)
+
+#define f_rn(bo, bi, n, k)                          \
+    bo[n] =  ft_tab[0][byte(bi[n],0)] ^             \
+            ft_tab[1][byte(bi[(n + 1) & 3],1)] ^   \
+            ft_tab[2][byte(bi[(n + 2) & 3],2)] ^   \
+            ft_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n)
+
+#define i_rn(bo, bi, n, k)                          \
+    bo[n] =  it_tab[0][byte(bi[n],0)] ^             \
+            it_tab[1][byte(bi[(n + 3) & 3],1)] ^   \
+            it_tab[2][byte(bi[(n + 2) & 3],2)] ^   \
+            it_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n)
+
+#ifdef LARGE_TABLES
+
+#define ls_box(x)                \
+    ( fl_tab[0][byte(x, 0)] ^    \
+      fl_tab[1][byte(x, 1)] ^    \
+      fl_tab[2][byte(x, 2)] ^    \
+      fl_tab[3][byte(x, 3)] )
+
+#define f_rl(bo, bi, n, k)                          \
+    bo[n] =  fl_tab[0][byte(bi[n],0)] ^             \
+            fl_tab[1][byte(bi[(n + 1) & 3],1)] ^   \
+            fl_tab[2][byte(bi[(n + 2) & 3],2)] ^   \
+            fl_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n)
+
+#define i_rl(bo, bi, n, k)                          \
+    bo[n] =  il_tab[0][byte(bi[n],0)] ^             \
+            il_tab[1][byte(bi[(n + 3) & 3],1)] ^   \
+            il_tab[2][byte(bi[(n + 2) & 3],2)] ^   \
+            il_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n)
+
+#else
+
+#define ls_box(x)                            \
+    ((u4byte)sbx_tab[byte(x, 0)] <<  0) ^    \
+    ((u4byte)sbx_tab[byte(x, 1)] <<  8) ^    \
+    ((u4byte)sbx_tab[byte(x, 2)] << 16) ^    \
+    ((u4byte)sbx_tab[byte(x, 3)] << 24)
+
+#define f_rl(bo, bi, n, k)                                      \
+    bo[n] = (u4byte)sbx_tab[byte(bi[n],0)] ^                    \
+       rotl(((u4byte)sbx_tab[byte(bi[(n + 1) & 3],1)]),  8) ^  \
+       rotl(((u4byte)sbx_tab[byte(bi[(n + 2) & 3],2)]), 16) ^  \
+       rotl(((u4byte)sbx_tab[byte(bi[(n + 3) & 3],3)]), 24) ^ *(k + n)
+
+#define i_rl(bo, bi, n, k)                                      \
+    bo[n] = (u4byte)isb_tab[byte(bi[n],0)] ^                    \
+       rotl(((u4byte)isb_tab[byte(bi[(n + 3) & 3],1)]),  8) ^  \
+       rotl(((u4byte)isb_tab[byte(bi[(n + 2) & 3],2)]), 16) ^  \
+       rotl(((u4byte)isb_tab[byte(bi[(n + 1) & 3],3)]), 24) ^ *(k + n)
+
+#endif
+
+void
+gen_tabs(void)
+{
+       u4byte  i, t;
+       u1byte  p, q;
+
+       /* log and power tables for GF(2**8) finite field with  */
+       /* 0x11b as modular polynomial - the simplest prmitive  */
+       /* root is 0x11, used here to generate the tables       */
+
+       for(i = 0,p = 1; i < 256; ++i) {
+               pow_tab[i] = (u1byte)p; log_tab[p] = (u1byte)i;
+
+               p = p ^ (p << 1) ^ (p & 0x80 ? 0x01b : 0);
+       }
+
+       log_tab[1] = 0; p = 1;
+
+       for(i = 0; i < 10; ++i) {
+               rco_tab[i] = p;
+
+               p = (p << 1) ^ (p & 0x80 ? 0x1b : 0);
+       }
+
+       /* note that the affine byte transformation matrix in   */
+       /* rijndael specification is in big endian format with  */
+       /* bit 0 as the most significant bit. In the remainder  */
+       /* of the specification the bits are numbered from the  */
+       /* least significant end of a byte.                     */
+
+       for(i = 0; i < 256; ++i) {
+               p = (i ? pow_tab[255 - log_tab[i]] : 0); q = p;
+               q = (q >> 7) | (q << 1); p ^= q;
+               q = (q >> 7) | (q << 1); p ^= q;
+               q = (q >> 7) | (q << 1); p ^= q;
+               q = (q >> 7) | (q << 1); p ^= q ^ 0x63;
+               sbx_tab[i] = (u1byte)p; isb_tab[p] = (u1byte)i;
+       }
+
+       for(i = 0; i < 256; ++i) {
+               p = sbx_tab[i];
+
+#ifdef  LARGE_TABLES
+
+               t = p; fl_tab[0][i] = t;
+               fl_tab[1][i] = rotl(t,  8);
+               fl_tab[2][i] = rotl(t, 16);
+               fl_tab[3][i] = rotl(t, 24);
+#endif
+               t = ((u4byte)ff_mult(2, p)) |
+                       ((u4byte)p <<  8) |
+                       ((u4byte)p << 16) |
+                       ((u4byte)ff_mult(3, p) << 24);
+
+               ft_tab[0][i] = t;
+               ft_tab[1][i] = rotl(t,  8);
+               ft_tab[2][i] = rotl(t, 16);
+               ft_tab[3][i] = rotl(t, 24);
+
+               p = isb_tab[i];
+
+#ifdef  LARGE_TABLES
+
+               t = p; il_tab[0][i] = t;
+               il_tab[1][i] = rotl(t,  8);
+               il_tab[2][i] = rotl(t, 16);
+               il_tab[3][i] = rotl(t, 24);
+#endif
+               t = ((u4byte)ff_mult(14, p)) |
+                       ((u4byte)ff_mult( 9, p) <<  8) |
+                       ((u4byte)ff_mult(13, p) << 16) |
+                       ((u4byte)ff_mult(11, p) << 24);
+
+               it_tab[0][i] = t;
+               it_tab[1][i] = rotl(t,  8);
+               it_tab[2][i] = rotl(t, 16);
+               it_tab[3][i] = rotl(t, 24);
+       }
+
+       tab_gen = 1;
+}
+
+#define star_x(x) (((x) & 0x7f7f7f7f) << 1) ^ ((((x) & 0x80808080) >> 7) * 0x1b)
+
+#define imix_col(y,x)       \
+    u   = star_x(x);        \
+    v   = star_x(u);        \
+    w   = star_x(v);        \
+    t   = w ^ (x);          \
+   (y)  = u ^ v ^ w;        \
+   (y) ^= rotr(u ^ t,  8) ^ \
+         rotr(v ^ t, 16) ^ \



Home | Main Index | Thread Index | Old Index