From: Pekka Riikonen Date: Wed, 4 Dec 2002 18:08:21 +0000 (+0000) Subject: silc_message_signed_get_public_key returns both decoded and X-Git-Tag: silc.client.0.9.10~16 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=71b00580ab1e3b8b4490bf8fa99e6f7e5f0880cf;p=silc.git silc_message_signed_get_public_key returns both decoded and encoded public key. --- diff --git a/lib/silccore/silcmessage.c b/lib/silccore/silcmessage.c index fa9181c3..e8283e7d 100644 --- a/lib/silccore/silcmessage.c +++ b/lib/silccore/silcmessage.c @@ -712,7 +712,9 @@ int silc_message_signed_verify(SilcMessageSignedPayload sig, /* Return the public key from the payload */ SilcPublicKey -silc_message_signed_get_public_key(SilcMessageSignedPayload sig) +silc_message_signed_get_public_key(SilcMessageSignedPayload sig, + unsigned char **pk_data, + SilcUInt32 *pk_data_len) { SilcPublicKey pk; @@ -720,5 +722,10 @@ silc_message_signed_get_public_key(SilcMessageSignedPayload sig) sig->pk_len, &pk)) return NULL; + if (pk_data) + *pk_data = sig->pk_data; + if (pk_data_len) + *pk_data_len = sig->pk_len; + return pk; } diff --git a/lib/silccore/silcmessage.h b/lib/silccore/silcmessage.h index ff77a812..8e1a9f81 100644 --- a/lib/silccore/silcmessage.h +++ b/lib/silccore/silcmessage.h @@ -459,12 +459,16 @@ int silc_message_signed_verify(SilcMessageSignedPayload sig, * * DESCRIPTION * - * Returns the public key from the SilcMessageSignedPayload Payload - * or NULL if it does not include public key. The caller must free - * the returned public key. + * Returns the decoded SilcPublicKey from the SilcMessageSignedPayload + * Payload or NULL if it does not include public key. The caller must + * free the returned public key pointer. This also returns the raw + * public key (before decoding) into `pk_data' and `pk_data_len' if + * they are provided. The caller must not free these pointers. * ***/ SilcPublicKey -silc_message_signed_get_public_key(SilcMessageSignedPayload sig); +silc_message_signed_get_public_key(SilcMessageSignedPayload sig, + unsigned char **pk_data, + SilcUInt32 *pk_data_len); #endif /* SILCMESSAGE_H */