Add ability for ssh2_userkey_loadpub() to return the key comment.
[u/mdw/putty] / sshpubk.c
index 57a4222..923ebe9 100644 (file)
--- a/sshpubk.c
+++ b/sshpubk.c
 #include "ssh.h"
 #include "misc.h"
 
-#define PUT_32BIT(cp, value) do { \
-  (cp)[3] = (value); \
-  (cp)[2] = (value) >> 8; \
-  (cp)[1] = (value) >> 16; \
-  (cp)[0] = (value) >> 24; } while (0)
-
-#define GET_32BIT(cp) \
-    (((unsigned long)(unsigned char)(cp)[0] << 24) | \
-    ((unsigned long)(unsigned char)(cp)[1] << 16) | \
-    ((unsigned long)(unsigned char)(cp)[2] << 8) | \
-    ((unsigned long)(unsigned char)(cp)[3]))
-
 #define rsa_signature "SSH PRIVATE KEY FILE FORMAT 1.1\n"
 
 #define BASE64_TOINT(x) ( (x)-'A'<26 ? (x)-'A'+0 :\
@@ -878,7 +866,8 @@ struct ssh2_userkey *ssh2_load_userkey(const Filename *filename,
 }
 
 char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
-                          int *pub_blob_len, const char **errorstr)
+                          int *pub_blob_len, char **commentptr,
+                          const char **errorstr)
 {
     FILE *fp;
     char header[40], *b;
@@ -887,6 +876,7 @@ char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
     int public_blob_len;
     int i;
     const char *error = NULL;
+    char *comment;
 
     public_blob = NULL;
 
@@ -924,9 +914,13 @@ char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,
     /* Read the Comment header line. */
     if (!read_header(fp, header) || 0 != strcmp(header, "Comment"))
        goto error;
-    if ((b = read_body(fp)) == NULL)
+    if ((comment = read_body(fp)) == NULL)
        goto error;
-    sfree(b);                         /* we don't care */
+
+    if (commentptr)
+       *commentptr = comment;
+    else
+       sfree(comment);
 
     /* Read the Public-Lines header line and the public blob. */
     if (!read_header(fp, header) || 0 != strcmp(header, "Public-Lines"))