]> andersk Git - openssh.git/blobdiff - cipher.h
- markus@cvs.openbsd.org 2002/02/14 23:41:01
[openssh.git] / cipher.h
index 0223ace3fe919b2c3e6400190950148ae7c6e1b5..0c412b47f956733520f2176f3a71861c0a3ff57f 100644 (file)
--- a/cipher.h
+++ b/cipher.h
@@ -32,7 +32,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/* RCSID("$OpenBSD: cipher.h,v 1.23 2000/12/06 23:05:42 markus Exp $"); */
+/* RCSID("$OpenBSD: cipher.h,v 1.30 2002/02/14 23:41:01 markus Exp $"); */
 
 #ifndef CIPHER_H
 #define CIPHER_H
@@ -41,9 +41,7 @@
 #include <openssl/blowfish.h>
 #include <openssl/rc4.h>
 #include <openssl/cast.h>
-
 #include "rijndael.h"
-
 /*
  * Cipher types for SSH-1.  New types can be added, but old types should not
  * be removed for compatibility.  The maximum allowed value is 31.
 #define SSH_CIPHER_RESERVED    7
 #define SSH_CIPHER_MAX         31
 
+#define CIPHER_ENCRYPT         1
+#define CIPHER_DECRYPT         0
+
 typedef struct Cipher Cipher;
 typedef struct CipherContext CipherContext;
 
+struct Cipher;
 struct CipherContext {
        union {
                struct {
@@ -73,8 +75,9 @@ struct CipherContext {
                struct {
                        des_key_schedule key1;
                        des_key_schedule key2;
-                       des_cblock iv2;
                        des_key_schedule key3;
+                       des_cblock iv1;
+                       des_cblock iv2;
                        des_cblock iv3;
                }       des3;
                struct {
@@ -87,33 +90,27 @@ struct CipherContext {
                } cast;
                struct {
                        u_char iv[16];
-                       rijndael_key enc;
-                       rijndael_key dec;
+                       rijndael_ctx enc;
+                       rijndael_ctx dec;
                } rijndael;
                RC4_KEY rc4;
        }       u;
+       int     plaintext;
+       int     encrypt;
        Cipher *cipher;
 };
-struct Cipher {
-       char    *name;
-       int     number;         /* for ssh1 only */
-       u_int   block_size;
-       u_int   key_len;
-       void    (*setkey)(CipherContext *, const u_char *, u_int);
-       void    (*setiv)(CipherContext *, const u_char *, u_int);
-       void    (*encrypt)(CipherContext *, u_char *, const u_char *, u_int);
-       void    (*decrypt)(CipherContext *, u_char *, const u_char *, u_int);
-};
-
-unsigned int cipher_mask_ssh1(int client);
-Cipher *cipher_by_name(const char *name);
-Cipher *cipher_by_number(int id);
-int cipher_number(const char *name);
-char *cipher_name(int id);
-int ciphers_valid(const char *names);
-void cipher_init(CipherContext *, Cipher *, const u_char *, u_int, const u_char *, u_int);
-void cipher_encrypt(CipherContext *context, u_char *dest, const u_char *src, u_int len);
-void cipher_decrypt(CipherContext *context, u_char *dest, const u_char *src, u_int len);
-void cipher_set_key_string(CipherContext *context, Cipher *cipher, const char *passphrase);
 
+u_int   cipher_mask_ssh1(int);
+Cipher *cipher_by_name(const char *);
+Cipher *cipher_by_number(int);
+int     cipher_number(const char *);
+char   *cipher_name(int);
+int     ciphers_valid(const char *);
+void    cipher_init(CipherContext *, Cipher *, const u_char *, u_int,
+    const u_char *, u_int, int);
+void    cipher_crypt(CipherContext *, u_char *, const u_char *, u_int);
+void    cipher_cleanup(CipherContext *);
+void    cipher_set_key_string(CipherContext *, Cipher *, const char *, int);
+u_int   cipher_blocksize(Cipher *);
+u_int   cipher_keylen(Cipher *);
 #endif                         /* CIPHER_H */
This page took 0.037226 seconds and 4 git commands to generate.