From eeadc02d5b63272f97039db4928ca80a5c2cfe8d Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Thu, 6 Jul 2000 07:12:18 +0000 Subject: [PATCH] Public and private key setting now takes SilcPublicKey and SilcPrivateKey but also they can be set directly from raw data. --- lib/silccrypt/silcpkcs.c | 30 +++++++++++++++++++++++------- lib/silccrypt/silcpkcs.h | 10 ++++++---- 2 files changed, 29 insertions(+), 11 deletions(-) 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, -- 2.24.0