Added preliminary Symbian support.
[silc.git] / lib / silccrypt / silcpk_i.h
1 /*
2
3   silcpk_i.h
4
5   Author: Pekka Riikonen <priikone@silcnet.org>
6
7   Copyright (C) 2005, 2007 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 SILCPK_I_H
21 #define SILCPK_I_H
22
23 /* Public and private key file headers */
24 #define SILC_PKCS_PUBLIC_KEYFILE_BEGIN "-----BEGIN SILC PUBLIC KEY-----\n"
25 #define SILC_PKCS_PUBLIC_KEYFILE_END "\n-----END SILC PUBLIC KEY-----\n"
26 #define SILC_PKCS_PRIVATE_KEYFILE_BEGIN "-----BEGIN SILC PRIVATE KEY-----\n"
27 #define SILC_PKCS_PRIVATE_KEYFILE_END "\n-----END SILC PRIVATE KEY-----\n"
28
29 const SilcPKCSAlgorithm *silc_pkcs_silc_get_algorithm(void *public_key);
30 SilcBool silc_pkcs_silc_import_public_key_file(unsigned char *filedata,
31                                                SilcUInt32 filedata_len,
32                                                SilcPKCSFileEncoding encoding,
33                                                void **ret_public_key);
34 SilcBool silc_pkcs_silc_import_public_key(unsigned char *key,
35                                           SilcUInt32 key_len,
36                                           void **ret_public_key);
37 unsigned char *
38 silc_pkcs_silc_export_public_key_file(void *public_key,
39                                       SilcPKCSFileEncoding encoding,
40                                       SilcUInt32 *ret_len);
41 unsigned char *silc_pkcs_silc_export_public_key(void *public_key,
42                                                 SilcUInt32 *ret_len);
43 SilcUInt32 silc_pkcs_silc_public_key_bitlen(void *public_key);
44 void *silc_pkcs_silc_public_key_copy(void *public_key);
45 SilcBool silc_pkcs_silc_public_key_compare(void *key1, void *key2);
46 void silc_pkcs_silc_public_key_free(void *public_key);
47 SilcBool silc_pkcs_silc_import_private_key_file(unsigned char *filedata,
48                                                 SilcUInt32 filedata_len,
49                                                 const char *passphrase,
50                                                 SilcUInt32 passphrase_len,
51                                                 SilcPKCSFileEncoding encoding,
52                                                 void **ret_private_key);
53 SilcBool silc_pkcs_silc_import_private_key(unsigned char *key,
54                                            SilcUInt32 key_len,
55                                            void **ret_private_key);
56 unsigned char *
57 silc_pkcs_silc_export_private_key_file(void *private_key,
58                                        const char *passphrase,
59                                        SilcUInt32 passphrase_len,
60                                        SilcPKCSFileEncoding encoding,
61                                        SilcRng rng,
62                                        SilcUInt32 *ret_len);
63 unsigned char *silc_pkcs_silc_export_private_key(void *private_key,
64                                                  SilcUInt32 *ret_len);
65 SilcUInt32 silc_pkcs_silc_private_key_bitlen(void *private_key);
66 void silc_pkcs_silc_private_key_free(void *private_key);
67 SilcBool silc_pkcs_silc_encrypt(void *public_key,
68                                 unsigned char *src,
69                                 SilcUInt32 src_len,
70                                 unsigned char *dst,
71                                 SilcUInt32 dst_size,
72                                 SilcUInt32 *ret_dst_len,
73                                 SilcRng rng);
74 SilcBool silc_pkcs_silc_decrypt(void *private_key,
75                                 unsigned char *src,
76                                 SilcUInt32 src_len,
77                                 unsigned char *dst,
78                                 SilcUInt32 dst_size,
79                                 SilcUInt32 *ret_dst_len);
80 SilcBool silc_pkcs_silc_sign(void *private_key,
81                              unsigned char *src,
82                              SilcUInt32 src_len,
83                              unsigned char *signature,
84                              SilcUInt32 signature_size,
85                              SilcUInt32 *ret_signature_len,
86                              SilcHash hash);
87 SilcBool silc_pkcs_silc_verify(void *public_key,
88                                unsigned char *signature,
89                                SilcUInt32 signature_len,
90                                unsigned char *data,
91                                SilcUInt32 data_len,
92                                SilcHash hash);
93
94 #endif /* SILCPK_I_H */