projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
PKCS import routines now return the bytes imported.
[silc.git]
/
lib
/
silccrypt
/
silcpkcs1.c
diff --git
a/lib/silccrypt/silcpkcs1.c
b/lib/silccrypt/silcpkcs1.c
index e3c6b68f38f75e305728f57c0d0fed4f7c1dd494..6fd603ed0b54524e7dee702a93f109cf908ce32c 100644
(file)
--- a/
lib/silccrypt/silcpkcs1.c
+++ b/
lib/silccrypt/silcpkcs1.c
@@
-20,6
+20,7
@@
#include "silc.h"
#include "rsa.h"
#include "silc.h"
#include "rsa.h"
+#include "silcpkcs1_i.h"
/************************** PKCS #1 message format ***************************/
/************************** PKCS #1 message format ***************************/
@@
-204,7
+205,7
@@
SilcBool silc_pkcs1_generate_key(SilcUInt32 keylen,
}
/* Generate the actual keys */
}
/* Generate the actual keys */
- if (!rsa_generate_keys(keylen, &p, &q, ret_public_key, ret_private_key))
+ if (!
silc_
rsa_generate_keys(keylen, &p, &q, ret_public_key, ret_private_key))
return FALSE;
silc_mp_uninit(&p);
return FALSE;
silc_mp_uninit(&p);
@@
-215,20
+216,20
@@
SilcBool silc_pkcs1_generate_key(SilcUInt32 keylen,
/* Import PKCS #1 compliant public key */
/* Import PKCS #1 compliant public key */
-
SilcBool
silc_pkcs1_import_public_key(unsigned char *key,
-
SilcUInt32 key_len,
-
void **ret_public_key)
+
int
silc_pkcs1_import_public_key(unsigned char *key,
+ SilcUInt32 key_len,
+ void **ret_public_key)
{
SilcAsn1 asn1 = NULL;
SilcBufferStruct alg_key;
RsaPublicKey *pubkey;
if (!ret_public_key)
{
SilcAsn1 asn1 = NULL;
SilcBufferStruct alg_key;
RsaPublicKey *pubkey;
if (!ret_public_key)
- return
FALSE
;
+ return
0
;
asn1 = silc_asn1_alloc();
if (!asn1)
asn1 = silc_asn1_alloc();
if (!asn1)
- return
FALSE
;
+ return
0
;
/* Allocate RSA public key */
*ret_public_key = pubkey = silc_calloc(1, sizeof(*pubkey));
/* Allocate RSA public key */
*ret_public_key = pubkey = silc_calloc(1, sizeof(*pubkey));
@@
-250,11
+251,12
@@
SilcBool silc_pkcs1_import_public_key(unsigned char *key,
silc_asn1_free(asn1);
silc_asn1_free(asn1);
- return
TRUE
;
+ return
key_len
;
err:
err:
+ silc_free(pubkey);
silc_asn1_free(asn1);
silc_asn1_free(asn1);
- return
FALSE
;
+ return
0
;
}
/* Export PKCS #1 compliant public key */
}
/* Export PKCS #1 compliant public key */
@@
-348,9
+350,9
@@
void silc_pkcs1_public_key_free(void *public_key)
/* Import PKCS #1 compliant private key */
/* Import PKCS #1 compliant private key */
-
SilcBool
silc_pkcs1_import_private_key(unsigned char *key,
-
SilcUInt32 key_len,
-
void **ret_private_key)
+
int
silc_pkcs1_import_private_key(unsigned char *key,
+ SilcUInt32 key_len,
+ void **ret_private_key)
{
SilcAsn1 asn1;
SilcBufferStruct alg_key;
{
SilcAsn1 asn1;
SilcBufferStruct alg_key;
@@
-358,11
+360,11
@@
SilcBool silc_pkcs1_import_private_key(unsigned char *key,
SilcUInt32 ver;
if (!ret_private_key)
SilcUInt32 ver;
if (!ret_private_key)
- return
FALSE
;
+ return
0
;
asn1 = silc_asn1_alloc();
if (!asn1)
asn1 = silc_asn1_alloc();
if (!asn1)
- return
FALSE
;
+ return
0
;
/* Allocate RSA private key */
*ret_private_key = privkey = silc_calloc(1, sizeof(*privkey));
/* Allocate RSA private key */
*ret_private_key = privkey = silc_calloc(1, sizeof(*privkey));
@@
-394,11
+396,12
@@
SilcBool silc_pkcs1_import_private_key(unsigned char *key,
silc_asn1_free(asn1);
silc_asn1_free(asn1);
- return
TRUE
;
+ return
key_len
;
err:
err:
+ silc_free(privkey);
silc_asn1_free(asn1);
silc_asn1_free(asn1);
- return
FALSE
;
+ return
0
;
}
/* Export PKCS #1 compliant private key */
}
/* Export PKCS #1 compliant private key */
@@
-500,7
+503,7
@@
SilcBool silc_pkcs1_encrypt(void *public_key,
silc_mp_bin2mp(padded, len, &mp_tmp);
/* Encrypt */
silc_mp_bin2mp(padded, len, &mp_tmp);
/* Encrypt */
- rsa_public_operation(key, &mp_tmp, &mp_dst);
+
silc_
rsa_public_operation(key, &mp_tmp, &mp_dst);
/* MP to data */
silc_mp_mp2bin_noalloc(&mp_dst, dst, len);
/* MP to data */
silc_mp_mp2bin_noalloc(&mp_dst, dst, len);
@@
-536,7
+539,7
@@
SilcBool silc_pkcs1_decrypt(void *private_key,
silc_mp_bin2mp(src, src_len, &mp_tmp);
/* Decrypt */
silc_mp_bin2mp(src, src_len, &mp_tmp);
/* Decrypt */
- rsa_private_operation(key, &mp_tmp, &mp_dst);
+
silc_
rsa_private_operation(key, &mp_tmp, &mp_dst);
/* MP to data */
padded = silc_mp_mp2bin(&mp_dst, (key->bits + 7) / 8, &padded_len);
/* MP to data */
padded = silc_mp_mp2bin(&mp_dst, (key->bits + 7) / 8, &padded_len);
@@
-624,7
+627,7
@@
SilcBool silc_pkcs1_sign_no_oid(void *private_key,
silc_mp_bin2mp(padded, len, &mp_tmp);
/* Sign */
silc_mp_bin2mp(padded, len, &mp_tmp);
/* Sign */
- rsa_private_operation(key, &mp_tmp, &mp_dst);
+
silc_
rsa_private_operation(key, &mp_tmp, &mp_dst);
/* MP to data */
silc_mp_mp2bin_noalloc(&mp_dst, signature, len);
/* MP to data */
silc_mp_mp2bin_noalloc(&mp_dst, signature, len);
@@
-662,7
+665,7
@@
SilcBool silc_pkcs1_verify_no_oid(void *public_key,
silc_mp_bin2mp(signature, signature_len, &mp_tmp2);
/* Verify */
silc_mp_bin2mp(signature, signature_len, &mp_tmp2);
/* Verify */
- rsa_public_operation(key, &mp_tmp2, &mp_dst);
+
silc_
rsa_public_operation(key, &mp_tmp2, &mp_dst);
/* MP to data */
verify = silc_mp_mp2bin(&mp_dst, len, &verify_len);
/* MP to data */
verify = silc_mp_mp2bin(&mp_dst, len, &verify_len);