#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 */