~ubuntu-branches/ubuntu/edgy/openssh/edgy

« back to all changes in this revision

Viewing changes to cipher.h

  • Committer: Bazaar Package Importer
  • Author(s): Noah Meyerhans
  • Date: 2006-10-31 17:53:38 UTC
  • Revision ID: james.westby@ubuntu.com-20061031175338-kh299ada2qc2kzlb
Tags: upstream-3.8.1p1
ImportĀ upstreamĀ versionĀ 3.8.1p1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*      $OpenBSD: cipher.h,v 1.34 2003/11/10 16:23:41 jakob 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
 
 
61
typedef struct Cipher Cipher;
 
62
typedef struct CipherContext CipherContext;
 
63
 
 
64
struct Cipher;
 
65
struct CipherContext {
 
66
        int     plaintext;
 
67
        EVP_CIPHER_CTX evp;
 
68
        Cipher *cipher;
 
69
};
 
70
 
 
71
u_int    cipher_mask_ssh1(int);
 
72
Cipher  *cipher_by_name(const char *);
 
73
Cipher  *cipher_by_number(int);
 
74
int      cipher_number(const char *);
 
75
char    *cipher_name(int);
 
76
int      ciphers_valid(const char *);
 
77
void     cipher_init(CipherContext *, Cipher *, const u_char *, u_int,
 
78
    const u_char *, u_int, int);
 
79
void     cipher_crypt(CipherContext *, u_char *, const u_char *, u_int);
 
80
void     cipher_cleanup(CipherContext *);
 
81
void     cipher_set_key_string(CipherContext *, Cipher *, const char *, int);
 
82
u_int    cipher_blocksize(const Cipher *);
 
83
u_int    cipher_keylen(const Cipher *);
 
84
 
 
85
u_int    cipher_get_number(const Cipher *);
 
86
void     cipher_get_keyiv(CipherContext *, u_char *, u_int);
 
87
void     cipher_set_keyiv(CipherContext *, u_char *);
 
88
int      cipher_get_keyiv_len(const CipherContext *);
 
89
int      cipher_get_keycontext(const CipherContext *, u_char *);
 
90
void     cipher_set_keycontext(CipherContext *, u_char *);
 
91
#endif                          /* CIPHER_H */