silc_message_signed_get_public_key returns both decoded and
authorPekka Riikonen <priikone@silcnet.org>
Wed, 4 Dec 2002 18:08:21 +0000 (18:08 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Wed, 4 Dec 2002 18:08:21 +0000 (18:08 +0000)
encoded public key.

lib/silccore/silcmessage.c
lib/silccore/silcmessage.h

index fa9181c3d101780383c152a383ba9b252aae4ebe..e8283e7d5bc313b6f4513d417626edc7091e1349 100644 (file)
@@ -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;
 }
index ff77a81203b1be0ea4478c3eed31f31edbcc1a8a..8e1a9f81ec52dbc08e4ab6b86fdf6cfe8d0a11c8 100644 (file)
@@ -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 */