Merge branch 'topic/mm-fixes' of git://208.110.73.182/silc into silc.1.1.branch
[silc.git] / lib / silccrypt / silcpkcs1_i.h
1 /*
2
3   silcpkcs1_i.h
4
5   Author: Pekka Riikonen <priikone@silcnet.org>
6
7   Copyright (C); 2006 Pekka Riikonen
8
9   This program is free software; you can redistribute it and/or modify
10   it under the terms of the GNU General Public License as published by
11   the Free Software Foundation; version 2 of the License.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18 */
19
20 #ifndef SILCPKCS1_I_H
21 #define SILCPKCS1_I_H
22
23 SilcBool silc_pkcs1_generate_key(SilcUInt32 keylen,
24                                  SilcRng rng,
25                                  void **ret_public_key,
26                                  void **ret_private_key);
27 int silc_pkcs1_import_public_key(unsigned char *key,
28                                  SilcUInt32 key_len,
29                                  void **ret_public_key);
30 unsigned char *silc_pkcs1_export_public_key(void *public_key,
31                                             SilcUInt32 *ret_len);
32 SilcUInt32 silc_pkcs1_public_key_bitlen(void *public_key);
33 void *silc_pkcs1_public_key_copy(void *public_key);
34 SilcBool silc_pkcs1_public_key_compare(void *key1, void *key2);
35 void silc_pkcs1_public_key_free(void *public_key);
36 int silc_pkcs1_import_private_key(unsigned char *key,
37                                   SilcUInt32 key_len,
38                                   void **ret_private_key);
39 unsigned char *silc_pkcs1_export_private_key(void *private_key,
40                                              SilcUInt32 *ret_len);
41 SilcUInt32 silc_pkcs1_private_key_bitlen(void *private_key);
42 void silc_pkcs1_private_key_free(void *private_key);
43 SilcBool silc_pkcs1_encrypt(void *public_key,
44                             unsigned char *src,
45                             SilcUInt32 src_len,
46                             unsigned char *dst,
47                             SilcUInt32 dst_size,
48                             SilcUInt32 *ret_dst_len,
49                             SilcRng rng);
50 SilcBool silc_pkcs1_decrypt(void *private_key,
51                             unsigned char *src,
52                             SilcUInt32 src_len,
53                             unsigned char *dst,
54                             SilcUInt32 dst_size,
55                             SilcUInt32 *ret_dst_len);
56 SilcBool silc_pkcs1_sign(void *private_key,
57                          unsigned char *src,
58                          SilcUInt32 src_len,
59                          unsigned char *signature,
60                          SilcUInt32 signature_size,
61                          SilcUInt32 *ret_signature_len,
62                          SilcBool compute_hash,
63                          SilcHash hash);
64 SilcBool silc_pkcs1_verify(void *public_key,
65                            unsigned char *signature,
66                            SilcUInt32 signature_len,
67                            unsigned char *data,
68                            SilcUInt32 data_len,
69                            SilcHash hash);
70 SilcBool silc_pkcs1_sign_no_oid(void *private_key,
71                                 unsigned char *src,
72                                 SilcUInt32 src_len,
73                                 unsigned char *signature,
74                                 SilcUInt32 signature_size,
75                                 SilcUInt32 *ret_signature_len,
76                                 SilcBool compute_hash,
77                                 SilcHash hash);
78 SilcBool silc_pkcs1_verify_no_oid(void *public_key,
79                                   unsigned char *signature,
80                                   SilcUInt32 signature_len,
81                                   unsigned char *data,
82                                   SilcUInt32 data_len,
83                                   SilcHash hash);
84
85 #endif /* SILCPKCS1_I_H */