updates
[silc.git] / lib / silccrypt / silcpkcs.c
index 866662b3e911256f58047c8d363a992c2be503f7..2f9699bb064bdeb51674a554f13b12f9c839d129 100644 (file)
@@ -152,8 +152,10 @@ bool silc_pkcs_alloc(const unsigned char *name, SilcPKCS *new_pkcs)
 
 void silc_pkcs_free(SilcPKCS pkcs)
 {
-  if (pkcs)
+  if (pkcs) {
+    pkcs->pkcs->clear_keys(pkcs->context);
     silc_free(pkcs->context);
+  }
   silc_free(pkcs);
 }
 
@@ -202,9 +204,9 @@ char *silc_pkcs_get_supported(void)
 
 /* Returns the length of the key */
 
-uint32 silc_pkcs_get_key_len(SilcPKCS self)
+uint32 silc_pkcs_get_key_len(SilcPKCS pkcs)
 {
-  return self->key_len;
+  return pkcs->key_len;
 }
 
 /* Returns SILC style public key */
@@ -1037,6 +1039,10 @@ int silc_pkcs_load_public_key(char *filename, SilcPublicKey *public_key,
       break;
     case SILC_PKCS_FILE_PEM:
       data = silc_decode_pem(data, len, &len);
+      memset(old, 0, data_len);
+      silc_free(old);
+      old = data; 
+      data_len = len;
       break;
     }