X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccrypt%2Fsilcpk.c;h=42aada1c1b7c2d7f6c9c6c924a4d74100c79d332;hb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;hp=939eeaafdd75cd4c02ac86ab639579bd09b52202;hpb=3ed0f4669135b422c1dd094992ec0fe4cb318bca;p=silc.git diff --git a/lib/silccrypt/silcpk.c b/lib/silccrypt/silcpk.c index 939eeaaf..42aada1c 100644 --- a/lib/silccrypt/silcpk.c +++ b/lib/silccrypt/silcpk.c @@ -126,7 +126,7 @@ SilcBool silc_pkcs_silc_decode_identifier(const char *identifier, int len; /* Protocol says that at least UN and HN must be provided as identifier */ - if (!strstr(identifier, "UN=") && !strstr(identifier, "HN=")) { + if (!strstr(identifier, "UN=") || !strstr(identifier, "HN=")) { SILC_LOG_DEBUG(("The public does not have the required UN= and HN= " "identifiers")); return FALSE; @@ -207,8 +207,10 @@ char *silc_pkcs_silc_encode_identifier(SilcStack stack, SilcBufferStruct buf; char *identifier; - if (!username || !host) + if (!username || !host) { + SILC_LOG_ERROR(("Public key identifier is missing UN and/or HN")); return NULL; + } if (strlen(username) < 1 || strlen(host) < 1) return NULL; @@ -264,6 +266,7 @@ char *silc_pkcs_silc_encode_identifier(SilcStack stack, if (version) { if (strlen(version) > 1 || !isdigit(version[0])) { silc_buffer_spurge(stack, &buf); + SILC_LOG_ERROR(("Public key identifier has invalid version (V)")); return NULL; } silc_buffer_sformat(stack, &buf, @@ -324,12 +327,12 @@ SILC_PKCS_IMPORT_PUBLIC_KEY_FILE(silc_pkcs_silc_import_public_key_file) /* 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)) { - SILC_LOG_ERROR(("Malformed SILC public key header")); + SILC_LOG_DEBUG(("Malformed SILC public key header")); return FALSE; } for (i = 0; i < len; i++) { if (*filedata != SILC_PKCS_PUBLIC_KEYFILE_BEGIN[i]) { - SILC_LOG_ERROR(("Malformed SILC public key header")); + SILC_LOG_DEBUG(("Malformed SILC public key header")); return FALSE; } filedata++; @@ -349,7 +352,7 @@ SILC_PKCS_IMPORT_PUBLIC_KEY_FILE(silc_pkcs_silc_import_public_key_file) break; } - ret = silc_pkcs_silc_import_public_key(pkcs, filedata, filedata_len, + ret = silc_pkcs_silc_import_public_key(pkcs, NULL, filedata, filedata_len, ret_public_key, ret_alg); silc_free(data); @@ -360,7 +363,6 @@ SILC_PKCS_IMPORT_PUBLIC_KEY_FILE(silc_pkcs_silc_import_public_key_file) SILC_PKCS_IMPORT_PUBLIC_KEY(silc_pkcs_silc_import_public_key) { - const SilcPKCSAlgorithm *alg; SilcBufferStruct buf, alg_key; SilcSILCPublicKey silc_pubkey = NULL; SilcAsn1 asn1 = NULL; @@ -846,12 +848,12 @@ SILC_PKCS_IMPORT_PRIVATE_KEY_FILE(silc_pkcs_silc_import_private_key_file) /* 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)) { - SILC_LOG_ERROR(("Malformed SILC private key header")); + SILC_LOG_DEBUG(("Malformed SILC private key header")); return FALSE; } for (i = 0; i < len; i++) { if (*filedata != SILC_PKCS_PRIVATE_KEYFILE_BEGIN[i]) { - SILC_LOG_ERROR(("Malformed SILC private key header")); + SILC_LOG_DEBUG(("Malformed SILC private key header")); return FALSE; } filedata++; @@ -963,8 +965,8 @@ SILC_PKCS_IMPORT_PRIVATE_KEY_FILE(silc_pkcs_silc_import_private_key_file) silc_cipher_free(aes); /* Import the private key */ - ret = silc_pkcs_silc_import_private_key(pkcs, filedata, len, ret_private_key, - ret_alg); + ret = silc_pkcs_silc_import_private_key(pkcs, NULL, filedata, + len, ret_private_key, ret_alg); silc_free(data); @@ -980,7 +982,6 @@ SILC_PKCS_IMPORT_PRIVATE_KEY_FILE(silc_pkcs_silc_import_private_key_file) SILC_PKCS_IMPORT_PRIVATE_KEY(silc_pkcs_silc_import_private_key) { SilcBufferStruct buf; - const SilcPKCSAlgorithm *alg; SilcBufferStruct alg_key; SilcSILCPrivateKey silc_privkey = NULL; SilcAsn1 asn1 = NULL; @@ -1636,7 +1637,7 @@ SILC_PKCS_SIGN(silc_pkcs_silc_sign) return silc_privkey->pkcs->sign(silc_privkey->pkcs, silc_privkey->private_key, src, src_len, - compute_hash, hash, + compute_hash, hash, rng, sign_cb, context); } @@ -1654,6 +1655,6 @@ SILC_PKCS_VERIFY(silc_pkcs_silc_verify) return silc_pubkey->pkcs->verify(silc_pubkey->pkcs, silc_pubkey->public_key, signature, signature_len, - data, data_len, hash, + data, data_len, hash, rng, verify_cb, context); }