Annotation of src/usr.bin/ssh/key.h, Revision 1.7
1.5 deraadt 1: /*
2: * Copyright (c) 2000 Markus Friedl. All rights reserved.
3: *
4: * Redistribution and use in source and binary forms, with or without
5: * modification, are permitted provided that the following conditions
6: * are met:
7: * 1. Redistributions of source code must retain the above copyright
8: * notice, this list of conditions and the following disclaimer.
9: * 2. Redistributions in binary form must reproduce the above copyright
10: * notice, this list of conditions and the following disclaimer in the
11: * documentation and/or other materials provided with the distribution.
12: *
13: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
14: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
15: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
16: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
17: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23: */
1.1 markus 24: #ifndef KEY_H
25: #define KEY_H
26:
27: typedef struct Key Key;
28: enum types {
1.6 markus 29: KEY_RSA1,
1.1 markus 30: KEY_RSA,
31: KEY_DSA,
1.6 markus 32: KEY_UNSPEC
1.1 markus 33: };
34: struct Key {
35: int type;
36: RSA *rsa;
37: DSA *dsa;
38: };
39:
40: Key *key_new(int type);
1.6 markus 41: Key *key_new_private(int type);
1.1 markus 42: void key_free(Key *k);
43: int key_equal(Key *a, Key *b);
44: char *key_fingerprint(Key *k);
1.3 markus 45: char *key_type(Key *k);
1.1 markus 46: int key_write(Key *key, FILE *f);
1.6 markus 47: int key_read(Key *key, char **cpp);
48: u_int key_size(Key *k);
49:
1.7 ! markus 50: Key *key_generate(int type, u_int bits);
1.6 markus 51: Key *key_from_private(Key *k);
52: int key_type_from_name(char *name);
53:
54: Key *key_from_blob(char *blob, int blen);
1.7 ! markus 55: int key_to_blob(Key *key, u_char **blobp, u_int *lenp);
1.6 markus 56: char *key_ssh_name(Key *k);
57:
58: int
59: key_sign(
60: Key *key,
1.7 ! markus 61: u_char **sigp, int *lenp,
! 62: u_char *data, int datalen);
1.6 markus 63:
64: int
65: key_verify(
66: Key *key,
1.7 ! markus 67: u_char *signature, int signaturelen,
! 68: u_char *data, int datalen);
1.1 markus 69:
70: #endif