Annotation of src/usr.bin/ssh/cipher.h, Revision 1.55
1.55 ! dtucker 1: /* $OpenBSD: cipher.h,v 1.54 2019/09/06 05:23:55 djm Exp $ */
1.32 stevesk 2:
1.1 deraadt 3: /*
1.9 deraadt 4: * Author: Tatu Ylonen <ylo@cs.hut.fi>
5: * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
6: * All rights reserved
1.16 markus 7: *
1.19 deraadt 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".
1.20 markus 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.
1.9 deraadt 35: */
1.1 deraadt 36:
37: #ifndef CIPHER_H
38: #define CIPHER_H
39:
1.46 djm 40: #include <sys/types.h>
1.54 djm 41: #ifdef WITH_OPENSSL
1.31 markus 42: #include <openssl/evp.h>
1.54 djm 43: #endif
1.42 djm 44: #include "cipher-chachapoly.h"
1.45 markus 45: #include "cipher-aesctr.h"
1.42 djm 46:
1.30 markus 47: #define CIPHER_ENCRYPT 1
48: #define CIPHER_DECRYPT 0
49:
1.46 djm 50: struct sshcipher;
1.49 djm 51: struct sshcipher_ctx;
1.46 djm 52:
53: const struct sshcipher *cipher_by_name(const char *);
1.47 markus 54: const char *cipher_warning_message(const struct sshcipher_ctx *);
1.28 markus 55: int ciphers_valid(const char *);
1.42 djm 56: char *cipher_alg_list(char, int);
1.55 ! dtucker 57: const char *compression_alg_list(int);
1.49 djm 58: int cipher_init(struct sshcipher_ctx **, const struct sshcipher *,
1.46 djm 59: const u_char *, u_int, const u_char *, u_int, int);
60: int cipher_crypt(struct sshcipher_ctx *, u_int, u_char *, const u_char *,
1.39 markus 61: u_int, u_int, u_int);
1.46 djm 62: int cipher_get_length(struct sshcipher_ctx *, u_int *, u_int,
1.42 djm 63: const u_char *, u_int);
1.49 djm 64: void cipher_free(struct sshcipher_ctx *);
1.46 djm 65: u_int cipher_blocksize(const struct sshcipher *);
66: u_int cipher_keylen(const struct sshcipher *);
67: u_int cipher_seclen(const struct sshcipher *);
68: u_int cipher_authlen(const struct sshcipher *);
69: u_int cipher_ivlen(const struct sshcipher *);
70: u_int cipher_is_cbc(const struct sshcipher *);
71:
1.49 djm 72: u_int cipher_ctx_is_plaintext(struct sshcipher_ctx *);
73:
1.53 djm 74: int cipher_get_keyiv(struct sshcipher_ctx *, u_char *, size_t);
75: int cipher_set_keyiv(struct sshcipher_ctx *, const u_char *, size_t);
1.46 djm 76: int cipher_get_keyiv_len(const struct sshcipher_ctx *);
1.49 djm 77:
1.9 deraadt 78: #endif /* CIPHER_H */