Rewrote crypto library init/uninit. Added silc_crypto_init
[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(const struct SilcPKCSAlgorithmStruct *pkcs,
24                                  SilcUInt32 keylen,
25                                  SilcRng rng,
26                                  void **ret_public_key,
27                                  void **ret_private_key);
28 int silc_pkcs1_import_public_key(const struct SilcPKCSAlgorithmStruct *pkcs,
29                                  void *key,
30                                  SilcUInt32 key_len,
31                                  void **ret_public_key);
32 unsigned char *
33 silc_pkcs1_export_public_key(const struct SilcPKCSAlgorithmStruct *pkcs,
34                              SilcStack stack,
35                              void *public_key,
36                              SilcUInt32 *ret_len);
37 SilcUInt32
38 silc_pkcs1_public_key_bitlen(const struct SilcPKCSAlgorithmStruct *pkcs,
39                              void *public_key);
40 void *silc_pkcs1_public_key_copy(const struct SilcPKCSAlgorithmStruct *pkcs,
41                                  void *public_key);
42 SilcBool
43 silc_pkcs1_public_key_compare(const struct SilcPKCSAlgorithmStruct *pkcs,
44                               void *key1, void *key2);
45 void silc_pkcs1_public_key_free(const struct SilcPKCSAlgorithmStruct *pkcs,
46                                 void *public_key);
47 int silc_pkcs1_import_private_key(const struct SilcPKCSAlgorithmStruct *pkcs,
48                                   void *key,
49                                   SilcUInt32 key_len,
50                                   void **ret_private_key);
51 unsigned char *
52 silc_pkcs1_export_private_key(const struct SilcPKCSAlgorithmStruct *pkcs,
53                               SilcStack stack,
54                               void *private_key,
55                               SilcUInt32 *ret_len);
56 SilcUInt32
57 silc_pkcs1_private_key_bitlen(const struct SilcPKCSAlgorithmStruct *pkcs,
58                               void *private_key);
59 void silc_pkcs1_private_key_free(const struct SilcPKCSAlgorithmStruct *pkcs,
60                                  void *private_key);
61 SilcAsyncOperation
62 silc_pkcs1_encrypt(const struct SilcPKCSAlgorithmStruct *pkcs,
63                    void *public_key,
64                    unsigned char *src,
65                    SilcUInt32 src_len,
66                    SilcRng rng,
67                    SilcPKCSEncryptCb encrypt_cb,
68                    void *context);
69 SilcAsyncOperation
70 silc_pkcs1_decrypt(const struct SilcPKCSAlgorithmStruct *pkcs,
71                    void *private_key,
72                    unsigned char *src,
73                    SilcUInt32 src_len,
74                    SilcPKCSDecryptCb decrypt_cb,
75                    void *context);
76 SilcAsyncOperation silc_pkcs1_sign(const struct SilcPKCSAlgorithmStruct *pkcs,
77                                    void *private_key,
78                                    unsigned char *src,
79                                    SilcUInt32 src_len,
80                                    SilcBool compute_hash,
81                                    SilcHash hash,
82                                    SilcPKCSSignCb sign_cb,
83                                    void *context);
84 SilcAsyncOperation silc_pkcs1_verify(const struct SilcPKCSAlgorithmStruct *pkcs,
85                                      void *public_key,
86                                      unsigned char *signature,
87                                      SilcUInt32 signature_len,
88                                      unsigned char *data,
89                                      SilcUInt32 data_len,
90                                      SilcHash hash,
91                                      SilcPKCSVerifyCb verify_cb,
92                                      void *context);
93 SilcAsyncOperation
94 silc_pkcs1_sign_no_oid(const struct SilcPKCSAlgorithmStruct *pkcs,
95                        void *private_key,
96                        unsigned char *src,
97                        SilcUInt32 src_len,
98                        SilcBool compute_hash,
99                        SilcHash hash,
100                        SilcPKCSSignCb sign_cb,
101                        void *context);
102 SilcAsyncOperation
103 silc_pkcs1_verify_no_oid(const struct SilcPKCSAlgorithmStruct *pkcs,
104                          void *public_key,
105                          unsigned char *signature,
106                          SilcUInt32 signature_len,
107                          unsigned char *data,
108                          SilcUInt32 data_len,
109                          SilcHash hash,
110                          SilcPKCSVerifyCb verify_cb,
111                          void *context);
112
113 #endif /* SILCPKCS1_I_H */