projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added preliminary Symbian support.
[silc.git]
/
lib
/
silccrypt
/
silcpk.c
diff --git
a/lib/silccrypt/silcpk.c
b/lib/silccrypt/silcpk.c
index 0de35d6a57f7cb78425a6c5781bbc5ef1db259e6..cb9ef4229f3c695674728d7b91fcc3d14df41a2c 100644
(file)
--- a/
lib/silccrypt/silcpk.c
+++ b/
lib/silccrypt/silcpk.c
@@
-4,7
+4,7
@@
Author: Pekka Riikonen <priikone@silcnet.org>
Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 1997 - 200
6
Pekka Riikonen
+ Copyright (C) 1997 - 200
7
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
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
@@
-370,6
+370,10
@@
SilcBool silc_pkcs_silc_import_public_key(unsigned char *key,
if (ret == -1)
goto err;
if (ret == -1)
goto err;
+ /* Backwards compatibility */
+ if (totlen == key_len)
+ totlen -= 4;
+
if (totlen + 4 != key_len)
goto err;
if (totlen + 4 != key_len)
goto err;
@@
-816,7
+820,7
@@
SilcBool silc_pkcs_silc_import_private_key_file(unsigned char *filedata,
/* Check file magic */
SILC_GET32_MSB(magic, filedata);
if (magic != SILC_PKCS_PRIVATE_KEY_MAGIC) {
/* Check file magic */
SILC_GET32_MSB(magic, filedata);
if (magic != SILC_PKCS_PRIVATE_KEY_MAGIC) {
- SILC_LOG_
ERROR
(("Private key does not have correct magic"));
+ SILC_LOG_
DEBUG
(("Private key does not have correct magic"));
return FALSE;
}
return FALSE;
}
@@
-859,7
+863,7
@@
SilcBool silc_pkcs_silc_import_private_key_file(unsigned char *filedata,
silc_hash_final(sha1, keymat + 16);
/* Set the key to the cipher */
silc_hash_final(sha1, keymat + 16);
/* Set the key to the cipher */
- silc_cipher_set_key(aes, keymat, 256);
+ silc_cipher_set_key(aes, keymat, 256
, FALSE
);
/* First, verify the MAC of the private key data */
mac_len = silc_hmac_len(sha1hmac);
/* First, verify the MAC of the private key data */
mac_len = silc_hmac_len(sha1hmac);
@@
-971,7
+975,6
@@
SilcBool silc_pkcs_silc_import_private_key(unsigned char *key,
/* Parse the RSA SILC private key */
SilcBufferStruct k;
SilcMPInt n, e, d, dp, dq, qp, p, q;
/* Parse the RSA SILC private key */
SilcBufferStruct k;
SilcMPInt n, e, d, dp, dq, qp, p, q;
- SilcMPInt version;
unsigned char *tmp;
SilcUInt32 len, ver;
unsigned char *tmp;
SilcUInt32 len, ver;
@@
-1147,12
+1150,10
@@
SilcBool silc_pkcs_silc_import_private_key(unsigned char *key,
}
/* Encode to PKCS #1 format */
}
/* Encode to PKCS #1 format */
- silc_mp_init(&version);
- silc_mp_set_ui(&version, 0);
memset(&alg_key, 0, sizeof(alg_key));
if (!silc_asn1_encode(asn1, &alg_key,
SILC_ASN1_SEQUENCE,
memset(&alg_key, 0, sizeof(alg_key));
if (!silc_asn1_encode(asn1, &alg_key,
SILC_ASN1_SEQUENCE,
- SILC_ASN1_
INT(&version
),
+ SILC_ASN1_
SHORT_INT(0
),
SILC_ASN1_INT(&n),
SILC_ASN1_INT(&e),
SILC_ASN1_INT(&d),
SILC_ASN1_INT(&n),
SILC_ASN1_INT(&e),
SILC_ASN1_INT(&d),
@@
-1164,7
+1165,6
@@
SilcBool silc_pkcs_silc_import_private_key(unsigned char *key,
SILC_ASN1_END, SILC_ASN1_END))
goto err;
SILC_ASN1_END, SILC_ASN1_END))
goto err;
- silc_mp_uninit(&version);
silc_mp_uninit(&n);
silc_mp_uninit(&e);
silc_mp_uninit(&e);
silc_mp_uninit(&n);
silc_mp_uninit(&e);
silc_mp_uninit(&e);
@@
-1275,7
+1275,7
@@
silc_pkcs_silc_export_private_key_file(void *private_key,
silc_hash_final(sha1, keymat + 16);
/* Set the key to the cipher */
silc_hash_final(sha1, keymat + 16);
/* Set the key to the cipher */
- silc_cipher_set_key(aes, keymat, 256);
+ silc_cipher_set_key(aes, keymat, 256
, TRUE
);
/* Encode the buffer to be encrypted. Add padding to it too, at least
block size of the cipher. */
/* Encode the buffer to be encrypted. Add padding to it too, at least
block size of the cipher. */
@@
-1529,7
+1529,8
@@
SilcBool silc_pkcs_silc_encrypt(void *public_key,
SilcUInt32 src_len,
unsigned char *dst,
SilcUInt32 dst_size,
SilcUInt32 src_len,
unsigned char *dst,
SilcUInt32 dst_size,
- SilcUInt32 *ret_dst_len)
+ SilcUInt32 *ret_dst_len,
+ SilcRng rng)
{
SilcSILCPublicKey silc_pubkey = public_key;
{
SilcSILCPublicKey silc_pubkey = public_key;
@@
-1538,7
+1539,7
@@
SilcBool silc_pkcs_silc_encrypt(void *public_key,
return silc_pubkey->pkcs->encrypt(silc_pubkey->public_key,
src, src_len,
return silc_pubkey->pkcs->encrypt(silc_pubkey->public_key,
src, src_len,
- dst, dst_size, ret_dst_len);
+ dst, dst_size, ret_dst_len
, rng
);
}
/* Decrypts as specified in SILC protocol specification */
}
/* Decrypts as specified in SILC protocol specification */