X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccrypt%2Fsilcpkcs.c;h=74fd6f03ab8b5a3ed35d106a288ec8853d05e7b9;hb=52e57c880aba9c5e89f59d962eb9af75670b76e0;hp=ebf8bbda6c52d0c6c48fbf1f72c691e013a20939;hpb=8dba6fece042388ce16a11d7ed47107d2deb54c8;p=silc.git diff --git a/lib/silccrypt/silcpkcs.c b/lib/silccrypt/silcpkcs.c index ebf8bbda..74fd6f03 100644 --- a/lib/silccrypt/silcpkcs.c +++ b/lib/silccrypt/silcpkcs.c @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 1997 - 2006 Pekka Riikonen + Copyright (C) 1997 - 2007 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,7 +22,7 @@ #include "silcpk_i.h" #include "silcpkcs1_i.h" -#ifndef SILC_EPOC +#ifndef SILC_SYMBIAN /* Dynamically registered list of PKCS. */ SilcDList silc_pkcs_list = NULL; SilcDList silc_pkcs_alg_list = NULL; @@ -31,7 +31,7 @@ SilcDList silc_pkcs_alg_list = NULL; #else #define SILC_PKCS_LIST TRUE #define SILC_PKCS_ALG_LIST TRUE -#endif /* SILC_EPOC */ +#endif /* SILC_SYMBIAN */ /* Static list of PKCS for silc_pkcs_register_default(). */ const SilcPKCSObject silc_default_pkcs[] = @@ -125,7 +125,7 @@ const SilcPKCSAlgorithm silc_default_pkcs_alg[] = SilcBool silc_pkcs_register(const SilcPKCSObject *pkcs) { -#ifndef SILC_EPOC +#ifndef SILC_SYMBIAN SilcPKCSObject *newpkcs; SILC_LOG_DEBUG(("Registering new PKCS")); @@ -150,7 +150,7 @@ SilcBool silc_pkcs_register(const SilcPKCSObject *pkcs) silc_pkcs_list = silc_dlist_init(); silc_dlist_add(silc_pkcs_list, newpkcs); -#endif /* SILC_EPOC */ +#endif /* SILC_SYMBIAN */ return TRUE; } @@ -158,7 +158,7 @@ SilcBool silc_pkcs_register(const SilcPKCSObject *pkcs) SilcBool silc_pkcs_unregister(SilcPKCSObject *pkcs) { -#ifndef SILC_EPOC +#ifndef SILC_SYMBIAN SilcPKCSObject *entry; SILC_LOG_DEBUG(("Unregistering PKCS")); @@ -181,7 +181,7 @@ SilcBool silc_pkcs_unregister(SilcPKCSObject *pkcs) } } -#endif /* SILC_EPOC */ +#endif /* SILC_SYMBIAN */ return FALSE; } @@ -189,7 +189,7 @@ SilcBool silc_pkcs_unregister(SilcPKCSObject *pkcs) SilcBool silc_pkcs_algorithm_register(const SilcPKCSAlgorithm *pkcs) { -#ifndef SILC_EPOC +#ifndef SILC_SYMBIAN SilcPKCSAlgorithm *newalg; SILC_LOG_DEBUG(("Registering new PKCS algorithm %s", @@ -229,7 +229,7 @@ SilcBool silc_pkcs_algorithm_register(const SilcPKCSAlgorithm *pkcs) silc_pkcs_alg_list = silc_dlist_init(); silc_dlist_add(silc_pkcs_alg_list, newalg); -#endif /* SILC_EPOC */ +#endif /* SILC_SYMBIAN */ return TRUE; } @@ -237,7 +237,7 @@ SilcBool silc_pkcs_algorithm_register(const SilcPKCSAlgorithm *pkcs) SilcBool silc_pkcs_algorithm_unregister(SilcPKCSAlgorithm *pkcs) { -#ifndef SILC_EPOC +#ifndef SILC_SYMBIAN SilcPKCSAlgorithm*entry; SILC_LOG_DEBUG(("Unregistering PKCS algorithm")); @@ -263,7 +263,7 @@ SilcBool silc_pkcs_algorithm_unregister(SilcPKCSAlgorithm *pkcs) } } -#endif /* SILC_EPOC */ +#endif /* SILC_SYMBIAN */ return FALSE; } @@ -271,7 +271,7 @@ SilcBool silc_pkcs_algorithm_unregister(SilcPKCSAlgorithm *pkcs) SilcBool silc_pkcs_register_default(void) { -#ifndef SILC_EPOC +#ifndef SILC_SYMBIAN int i; for (i = 0; silc_default_pkcs[i].type; i++) @@ -280,13 +280,13 @@ SilcBool silc_pkcs_register_default(void) for (i = 0; silc_default_pkcs_alg[i].name; i++) silc_pkcs_algorithm_register(&(silc_default_pkcs_alg[i])); -#endif /* SILC_EPOC */ +#endif /* SILC_SYMBIAN */ return TRUE; } SilcBool silc_pkcs_unregister_all(void) { -#ifndef SILC_EPOC +#ifndef SILC_SYMBIAN SilcPKCSObject *entry; SilcPKCSAlgorithm *alg; @@ -308,7 +308,7 @@ SilcBool silc_pkcs_unregister_all(void) } } -#endif /* SILC_EPOC */ +#endif /* SILC_SYMBIAN */ return TRUE; } @@ -320,7 +320,7 @@ char *silc_pkcs_get_supported(void) char *list = NULL; int len = 0; -#ifndef SILC_EPOC +#ifndef SILC_SYMBIAN if (silc_pkcs_alg_list) { silc_dlist_start(silc_pkcs_alg_list); while ((entry = silc_dlist_get(silc_pkcs_alg_list)) != SILC_LIST_END) { @@ -351,7 +351,7 @@ char *silc_pkcs_get_supported(void) len++; } } -#endif /* SILC_EPOC */ +#endif /* SILC_SYMBIAN */ list[len - 1] = 0; @@ -364,7 +364,7 @@ const SilcPKCSObject *silc_pkcs_find_pkcs(SilcPKCSType type) { SilcPKCSObject *entry; -#ifndef SILC_EPOC +#ifndef SILC_SYMBIAN if (silc_pkcs_list) { silc_dlist_start(silc_pkcs_list); while ((entry = silc_dlist_get(silc_pkcs_list)) != SILC_LIST_END) { @@ -375,13 +375,13 @@ const SilcPKCSObject *silc_pkcs_find_pkcs(SilcPKCSType type) #else { int i; - for (i = 0; silc_default_pkcs[i].name; i++) { + for (i = 0; silc_default_pkcs[i].type; i++) { entry = (SilcPKCSObject *)&(silc_default_pkcs[i]); if (entry->type == type) return (const SilcPKCSObject *)entry; } } -#endif /* SILC_EPOC */ +#endif /* SILC_SYMBIAN */ return NULL; } @@ -393,7 +393,7 @@ const SilcPKCSAlgorithm *silc_pkcs_find_algorithm(const char *algorithm, { SilcPKCSAlgorithm *entry; -#ifndef SILC_EPOC +#ifndef SILC_SYMBIAN if (silc_pkcs_alg_list) { silc_dlist_start(silc_pkcs_alg_list); while ((entry = silc_dlist_get(silc_pkcs_alg_list)) != SILC_LIST_END) { @@ -412,7 +412,7 @@ const SilcPKCSAlgorithm *silc_pkcs_find_algorithm(const char *algorithm, return (const SilcPKCSAlgorithm *)entry; } } -#endif /* SILC_EPOC */ +#endif /* SILC_SYMBIAN */ return NULL; } @@ -489,6 +489,7 @@ SilcBool silc_pkcs_public_key_alloc(SilcPKCSType type, void silc_pkcs_public_key_free(SilcPublicKey public_key) { public_key->pkcs->public_key_free(public_key->public_key); + silc_free(public_key); } /* Exports public key */ @@ -512,7 +513,7 @@ SilcUInt32 silc_pkcs_public_key_get_len(SilcPublicKey public_key) void *silc_pkcs_get_context(SilcPKCSType type, SilcPublicKey public_key) { if (public_key->pkcs->type != type) - return FALSE; + return NULL; return public_key->public_key; } @@ -564,6 +565,7 @@ SilcUInt32 silc_pkcs_private_key_get_len(SilcPrivateKey private_key) void silc_pkcs_private_key_free(SilcPrivateKey private_key) { private_key->pkcs->private_key_free(private_key->private_key); + silc_free(private_key); } /* Encrypts */ @@ -571,10 +573,10 @@ void silc_pkcs_private_key_free(SilcPrivateKey private_key) SilcBool silc_pkcs_encrypt(SilcPublicKey public_key, unsigned char *src, SilcUInt32 src_len, unsigned char *dst, SilcUInt32 dst_size, - SilcUInt32 *dst_len) + SilcUInt32 *dst_len, SilcRng rng) { return public_key->pkcs->encrypt(public_key->public_key, src, src_len, - dst, dst_size, dst_len); + dst, dst_size, dst_len, rng); } /* Decrypts */ @@ -593,10 +595,11 @@ SilcBool silc_pkcs_decrypt(SilcPrivateKey private_key, SilcBool silc_pkcs_sign(SilcPrivateKey private_key, unsigned char *src, SilcUInt32 src_len, unsigned char *dst, SilcUInt32 dst_size, - SilcUInt32 *dst_len, SilcHash hash) + SilcUInt32 *dst_len, SilcBool compute_hash, + SilcHash hash) { return private_key->pkcs->sign(private_key->private_key, src, src_len, - dst, dst_size, dst_len, hash); + dst, dst_size, dst_len, compute_hash, hash); } /* Verifies signature */ @@ -690,6 +693,7 @@ SilcBool silc_pkcs_load_public_key(const char *filename, silc_free(data); silc_free(public_key); + *ret_public_key = NULL; return FALSE; } @@ -775,6 +779,7 @@ SilcBool silc_pkcs_load_private_key(const char *filename, silc_free(data); silc_free(private_key); + *ret_private_key = NULL; return FALSE; }