/* Check start of file and remove header from the data. */
len = strlen(SILC_PKCS_PUBLIC_KEYFILE_BEGIN);
- if (filedata_len < len + strlen(SILC_PKCS_PUBLIC_KEYFILE_END))
+ if (filedata_len < len + strlen(SILC_PKCS_PUBLIC_KEYFILE_END)) {
+ SILC_LOG_ERROR(("Malformed SILC public key header"));
return FALSE;
+ }
for (i = 0; i < len; i++) {
- if (*filedata != SILC_PKCS_PUBLIC_KEYFILE_BEGIN[i])
+ if (*filedata != SILC_PKCS_PUBLIC_KEYFILE_BEGIN[i]) {
+ SILC_LOG_ERROR(("Malformed SILC public key header"));
return FALSE;
+ }
filedata++;
}
filedata_len -= (strlen(SILC_PKCS_PUBLIC_KEYFILE_BEGIN) +
case SILC_PKCS_FILE_BASE64:
data = silc_base64_decode(filedata, filedata_len, &filedata_len);
- if (!data)
+ if (!data) {
+ SILC_LOG_ERROR(("Malformed SILC public key encoding"));
return FALSE;
+ }
filedata = data;
break;
}
silc_free(silc_pubkey);
if (asn1)
silc_asn1_free(asn1);
+ SILC_LOG_ERROR(("Malformed SILC public key"));
return 0;
}
/* Check start of file and remove header from the data. */
len = strlen(SILC_PKCS_PRIVATE_KEYFILE_BEGIN);
- if (filedata_len < len + strlen(SILC_PKCS_PRIVATE_KEYFILE_END))
+ if (filedata_len < len + strlen(SILC_PKCS_PRIVATE_KEYFILE_END)) {
+ SILC_LOG_ERROR(("Malformed SILC private key header"));
return FALSE;
+ }
for (i = 0; i < len; i++) {
- if (*filedata != SILC_PKCS_PRIVATE_KEYFILE_BEGIN[i])
+ if (*filedata != SILC_PKCS_PRIVATE_KEYFILE_BEGIN[i]) {
+ SILC_LOG_ERROR(("Malformed SILC private key header"));
return FALSE;
+ }
filedata++;
}
case SILC_PKCS_FILE_BASE64:
data = silc_base64_decode(filedata, filedata_len, &len);
- if (!data)
+ if (!data) {
+ SILC_LOG_ERROR(("Malformed SILC private key encoding"));
return FALSE;
+ }
filedata = data;
break;
}
silc_free(silc_privkey);
if (asn1)
silc_asn1_free(asn1);
+ SILC_LOG_ERROR(("Malformed SILC private key "));
return 0;
}