source: trunk/third/openssh/cipher.h @ 18759

Revision 18759, 3.6 KB checked in by zacheiss, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18758, which included commits to RCS files with non-trunk default branches.
Line 
1/*      $OpenBSD: cipher.h,v 1.33 2002/03/18 17:13:15 markus Exp $      */
2
3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
5 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
6 *                    All rights reserved
7 *
8 * As far as I am concerned, the code I have written for this software
9 * can be used freely for any purpose.  Any derived versions of this
10 * software must be clearly marked as such, and if the derived work is
11 * incompatible with the protocol description in the RFC file, it must be
12 * called by a name other than "ssh" or "Secure Shell".
13 *
14 * Copyright (c) 2000 Markus Friedl.  All rights reserved.
15 *
16 * Redistribution and use in source and binary forms, with or without
17 * modification, are permitted provided that the following conditions
18 * are met:
19 * 1. Redistributions of source code must retain the above copyright
20 *    notice, this list of conditions and the following disclaimer.
21 * 2. Redistributions in binary form must reproduce the above copyright
22 *    notice, this list of conditions and the following disclaimer in the
23 *    documentation and/or other materials provided with the distribution.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
26 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
27 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
28 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
30 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 */
36
37#ifndef CIPHER_H
38#define CIPHER_H
39
40#include <openssl/evp.h>
41/*
42 * Cipher types for SSH-1.  New types can be added, but old types should not
43 * be removed for compatibility.  The maximum allowed value is 31.
44 */
45#define SSH_CIPHER_SSH2         -3
46#define SSH_CIPHER_ILLEGAL      -2      /* No valid cipher selected. */
47#define SSH_CIPHER_NOT_SET      -1      /* None selected (invalid number). */
48#define SSH_CIPHER_NONE         0       /* no encryption */
49#define SSH_CIPHER_IDEA         1       /* IDEA CFB */
50#define SSH_CIPHER_DES          2       /* DES CBC */
51#define SSH_CIPHER_3DES         3       /* 3DES CBC */
52#define SSH_CIPHER_BROKEN_TSS   4       /* TRI's Simple Stream encryption CBC */
53#define SSH_CIPHER_BROKEN_RC4   5       /* Alleged RC4 */
54#define SSH_CIPHER_BLOWFISH     6
55#define SSH_CIPHER_RESERVED     7
56#define SSH_CIPHER_MAX          31
57
58#define CIPHER_ENCRYPT          1
59#define CIPHER_DECRYPT          0
60
61typedef struct Cipher Cipher;
62typedef struct CipherContext CipherContext;
63
64struct Cipher;
65struct CipherContext {
66        int     plaintext;
67        EVP_CIPHER_CTX evp;
68        Cipher *cipher;
69};
70
71u_int    cipher_mask_ssh1(int);
72Cipher  *cipher_by_name(const char *);
73Cipher  *cipher_by_number(int);
74int      cipher_number(const char *);
75char    *cipher_name(int);
76int      ciphers_valid(const char *);
77void     cipher_init(CipherContext *, Cipher *, const u_char *, u_int,
78    const u_char *, u_int, int);
79void     cipher_crypt(CipherContext *, u_char *, const u_char *, u_int);
80void     cipher_cleanup(CipherContext *);
81void     cipher_set_key_string(CipherContext *, Cipher *, const char *, int);
82u_int    cipher_blocksize(Cipher *);
83u_int    cipher_keylen(Cipher *);
84
85u_int    cipher_get_number(Cipher *);
86void     cipher_get_keyiv(CipherContext *, u_char *, u_int);
87void     cipher_set_keyiv(CipherContext *, u_char *);
88int      cipher_get_keyiv_len(CipherContext *);
89int      cipher_get_keycontext(CipherContext *, u_char *);
90void     cipher_set_keycontext(CipherContext *, u_char *);
91#endif                          /* CIPHER_H */
Note: See TracBrowser for help on using the repository browser.