Rewrote crypto library init/uninit. Added silc_crypto_init
[silc.git] / lib / silccrypt / silcpkcs1_i.h
index fd5ecb4fd91822c115d23cbe406938441b555420..ac74848f86002bcc070450235ecdba359bf01ffc 100644 (file)
 #ifndef SILCPKCS1_I_H
 #define SILCPKCS1_I_H
 
-SilcBool silc_pkcs1_generate_key(SilcUInt32 keylen,
+SilcBool silc_pkcs1_generate_key(const struct SilcPKCSAlgorithmStruct *pkcs,
+                                SilcUInt32 keylen,
                                 SilcRng rng,
                                 void **ret_public_key,
                                 void **ret_private_key);
-int silc_pkcs1_import_public_key(unsigned char *key,
+int silc_pkcs1_import_public_key(const struct SilcPKCSAlgorithmStruct *pkcs,
+                                void *key,
                                 SilcUInt32 key_len,
                                 void **ret_public_key);
-unsigned char *silc_pkcs1_export_public_key(void *public_key,
-                                           SilcUInt32 *ret_len);
-SilcUInt32 silc_pkcs1_public_key_bitlen(void *public_key);
-void *silc_pkcs1_public_key_copy(void *public_key);
-SilcBool silc_pkcs1_public_key_compare(void *key1, void *key2);
-void silc_pkcs1_public_key_free(void *public_key);
-int silc_pkcs1_import_private_key(unsigned char *key,
+unsigned char *
+silc_pkcs1_export_public_key(const struct SilcPKCSAlgorithmStruct *pkcs,
+                            SilcStack stack,
+                            void *public_key,
+                            SilcUInt32 *ret_len);
+SilcUInt32
+silc_pkcs1_public_key_bitlen(const struct SilcPKCSAlgorithmStruct *pkcs,
+                            void *public_key);
+void *silc_pkcs1_public_key_copy(const struct SilcPKCSAlgorithmStruct *pkcs,
+                                void *public_key);
+SilcBool
+silc_pkcs1_public_key_compare(const struct SilcPKCSAlgorithmStruct *pkcs,
+                             void *key1, void *key2);
+void silc_pkcs1_public_key_free(const struct SilcPKCSAlgorithmStruct *pkcs,
+                               void *public_key);
+int silc_pkcs1_import_private_key(const struct SilcPKCSAlgorithmStruct *pkcs,
+                                 void *key,
                                  SilcUInt32 key_len,
                                  void **ret_private_key);
-unsigned char *silc_pkcs1_export_private_key(void *private_key,
-                                            SilcUInt32 *ret_len);
-SilcUInt32 silc_pkcs1_private_key_bitlen(void *private_key);
-void silc_pkcs1_private_key_free(void *private_key);
-SilcBool silc_pkcs1_encrypt(void *public_key,
-                           unsigned char *src,
-                           SilcUInt32 src_len,
-                           unsigned char *dst,
-                           SilcUInt32 dst_size,
-                           SilcUInt32 *ret_dst_len,
-                           SilcRng rng);
-SilcBool silc_pkcs1_decrypt(void *private_key,
-                           unsigned char *src,
-                           SilcUInt32 src_len,
-                           unsigned char *dst,
-                           SilcUInt32 dst_size,
-                           SilcUInt32 *ret_dst_len);
-SilcBool silc_pkcs1_sign(void *private_key,
-                        unsigned char *src,
-                        SilcUInt32 src_len,
+unsigned char *
+silc_pkcs1_export_private_key(const struct SilcPKCSAlgorithmStruct *pkcs,
+                             SilcStack stack,
+                             void *private_key,
+                             SilcUInt32 *ret_len);
+SilcUInt32
+silc_pkcs1_private_key_bitlen(const struct SilcPKCSAlgorithmStruct *pkcs,
+                             void *private_key);
+void silc_pkcs1_private_key_free(const struct SilcPKCSAlgorithmStruct *pkcs,
+                                void *private_key);
+SilcAsyncOperation
+silc_pkcs1_encrypt(const struct SilcPKCSAlgorithmStruct *pkcs,
+                  void *public_key,
+                  unsigned char *src,
+                  SilcUInt32 src_len,
+                  SilcRng rng,
+                  SilcPKCSEncryptCb encrypt_cb,
+                  void *context);
+SilcAsyncOperation
+silc_pkcs1_decrypt(const struct SilcPKCSAlgorithmStruct *pkcs,
+                  void *private_key,
+                  unsigned char *src,
+                  SilcUInt32 src_len,
+                  SilcPKCSDecryptCb decrypt_cb,
+                  void *context);
+SilcAsyncOperation silc_pkcs1_sign(const struct SilcPKCSAlgorithmStruct *pkcs,
+                                  void *private_key,
+                                  unsigned char *src,
+                                  SilcUInt32 src_len,
+                                  SilcBool compute_hash,
+                                  SilcHash hash,
+                                  SilcPKCSSignCb sign_cb,
+                                  void *context);
+SilcAsyncOperation silc_pkcs1_verify(const struct SilcPKCSAlgorithmStruct *pkcs,
+                                    void *public_key,
+                                    unsigned char *signature,
+                                    SilcUInt32 signature_len,
+                                    unsigned char *data,
+                                    SilcUInt32 data_len,
+                                    SilcHash hash,
+                                    SilcPKCSVerifyCb verify_cb,
+                                    void *context);
+SilcAsyncOperation
+silc_pkcs1_sign_no_oid(const struct SilcPKCSAlgorithmStruct *pkcs,
+                      void *private_key,
+                      unsigned char *src,
+                      SilcUInt32 src_len,
+                      SilcBool compute_hash,
+                      SilcHash hash,
+                      SilcPKCSSignCb sign_cb,
+                      void *context);
+SilcAsyncOperation
+silc_pkcs1_verify_no_oid(const struct SilcPKCSAlgorithmStruct *pkcs,
+                        void *public_key,
                         unsigned char *signature,
-                        SilcUInt32 signature_size,
-                        SilcUInt32 *ret_signature_len,
-                        SilcBool compute_hash,
-                        SilcHash hash);
-SilcBool silc_pkcs1_verify(void *public_key,
-                          unsigned char *signature,
-                          SilcUInt32 signature_len,
-                          unsigned char *data,
-                          SilcUInt32 data_len,
-                          SilcHash hash);
-SilcBool silc_pkcs1_sign_no_oid(void *private_key,
-                               unsigned char *src,
-                               SilcUInt32 src_len,
-                               unsigned char *signature,
-                               SilcUInt32 signature_size,
-                               SilcUInt32 *ret_signature_len,
-                               SilcBool compute_hash,
-                               SilcHash hash);
-SilcBool silc_pkcs1_verify_no_oid(void *public_key,
-                                 unsigned char *signature,
-                                 SilcUInt32 signature_len,
-                                 unsigned char *data,
-                                 SilcUInt32 data_len,
-                                 SilcHash hash);
+                        SilcUInt32 signature_len,
+                        unsigned char *data,
+                        SilcUInt32 data_len,
+                        SilcHash hash,
+                        SilcPKCSVerifyCb verify_cb,
+                        void *context);
 
 #endif /* SILCPKCS1_I_H */