From: Pekka Riikonen Date: Thu, 6 Jul 2000 07:12:18 +0000 (+0000) Subject: Public and private key setting now takes SilcPublicKey and X-Git-Tag: 1.2.beta1~2834 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=eeadc02d5b63272f97039db4928ca80a5c2cfe8d;p=crypto.git Public and private key setting now takes SilcPublicKey and SilcPrivateKey but also they can be set directly from raw data. --- diff --git a/lib/silccrypt/silcpkcs.c b/lib/silccrypt/silcpkcs.c index 5dff154c..9906d7cc 100644 --- a/lib/silccrypt/silcpkcs.c +++ b/lib/silccrypt/silcpkcs.c @@ -136,24 +136,40 @@ unsigned char *silc_pkcs_get_private_key(SilcPKCS pkcs, unsigned int *len) return pkcs->pkcs->get_private_key(pkcs->context, len); } -/* Sets public key */ +/* Sets public key from SilcPublicKey. */ -int silc_pkcs_set_public_key(SilcPKCS pkcs, unsigned char *pk, - unsigned int pk_len) +int silc_pkcs_public_key_set(SilcPKCS pkcs, SilcPublicKey public_key) +{ + return pkcs->pkcs->set_public_key(pkcs->context, public_key->pk, + public_key->pk_len); +} + +/* Sets public key from data. */ + +int silc_pkcs_public_key_data_set(SilcPKCS pkcs, unsigned char *pk, + unsigned int pk_len) { return pkcs->pkcs->set_public_key(pkcs->context, pk, pk_len); } -/* Sets private key */ +/* Sets private key from SilcPrivateKey. */ + +int silc_pkcs_private_key_set(SilcPKCS pkcs, SilcPrivateKey private_key) +{ + return pkcs->pkcs->set_private_key(pkcs->context, private_key->prv, + private_key->prv_len); +} + +/* Sets private key from data. */ -int silc_pkcs_set_private_key(SilcPKCS pkcs, unsigned char *prv, - unsigned int prv_len) +int silc_pkcs_private_key_data_set(SilcPKCS pkcs, unsigned char *prv, + unsigned int prv_len) { return pkcs->pkcs->set_private_key(pkcs->context, prv, prv_len); } /* Encodes and returns SILC public key identifier. If some of the - arguments as NULL those are not encoded into the identifier string. + arguments is NULL those are not encoded into the identifier string. Protocol says that at least username and host must be provided. */ char *silc_pkcs_encode_identifier(char *username, char *host, char *realname, diff --git a/lib/silccrypt/silcpkcs.h b/lib/silccrypt/silcpkcs.h index 8bcc0831..8accedea 100644 --- a/lib/silccrypt/silcpkcs.h +++ b/lib/silccrypt/silcpkcs.h @@ -168,10 +168,12 @@ char *silc_pkcs_get_supported(); unsigned int silc_pkcs_get_key_len(SilcPKCS self); unsigned char *silc_pkcs_get_public_key(SilcPKCS pkcs, unsigned int *len); unsigned char *silc_pkcs_get_private_key(SilcPKCS pkcs, unsigned int *len); -int silc_pkcs_set_public_key(SilcPKCS pkcs, unsigned char *pk, - unsigned int pk_len); -int silc_pkcs_set_private_key(SilcPKCS pkcs, unsigned char *prv, - unsigned int prv_len); +int silc_pkcs_public_key_set(SilcPKCS pkcs, SilcPublicKey public_key); +int silc_pkcs_public_key_data_set(SilcPKCS pkcs, unsigned char *pk, + unsigned int pk_len); +int silc_pkcs_private_key_set(SilcPKCS pkcs, SilcPrivateKey private_key); +int silc_pkcs_private_key_data_set(SilcPKCS pkcs, unsigned char *prv, + unsigned int prv_len); char *silc_pkcs_encode_identifier(char *username, char *host, char *realname, char *email, char *org, char *country); SilcPublicKey silc_pkcs_public_key_alloc(char *name, char *identifier,