=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/cipher.h,v retrieving revision 1.25 retrieving revision 1.25.2.3 diff -u -r1.25 -r1.25.2.3 --- src/usr.bin/ssh/cipher.h 2000/12/19 23:17:56 1.25 +++ src/usr.bin/ssh/cipher.h 2002/06/02 22:56:10 1.25.2.3 @@ -1,3 +1,5 @@ +/* $OpenBSD: cipher.h,v 1.25.2.3 2002/06/02 22:56:10 miod Exp $ */ + /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -32,16 +34,10 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* RCSID("$OpenBSD: cipher.h,v 1.25 2000/12/19 23:17:56 markus Exp $"); */ - #ifndef CIPHER_H #define CIPHER_H -#include -#include -#include -#include -#include "rijndael.h" +#include /* * 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. @@ -59,59 +55,37 @@ #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 { - des_key_schedule key; - des_cblock iv; - } des; - struct { - des_key_schedule key1; - des_key_schedule key2; - des_cblock iv2; - des_key_schedule key3; - des_cblock iv3; - } des3; - struct { - struct bf_key_st key; - u_char iv[8]; - } bf; - struct { - CAST_KEY key; - u_char iv[8]; - } cast; - struct { - u4byte iv[4]; - rijndael_ctx enc; - rijndael_ctx dec; - } rijndael; - RC4_KEY rc4; - } u; + int plaintext; + EVP_CIPHER_CTX evp; 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); -}; -u_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 *); +u_int cipher_get_number(Cipher *); +void cipher_get_keyiv(CipherContext *, u_char *, u_int); +void cipher_set_keyiv(CipherContext *, u_char *); +int cipher_get_keyiv_len(CipherContext *); +int cipher_get_keycontext(CipherContext *, u_char *); +void cipher_set_keycontext(CipherContext *, u_char *); #endif /* CIPHER_H */