0 != strcmp(header, "PuTTY-User-Key-File-1")))
0 != strcmp(header, "PuTTY-User-Key-File-1"))) { error = "not a PuTTY SSH-2 private key";
char *ssh2_userkey_loadpub(const Filename *filename, char **algorithm,			   int *pub_blob_len){    FILE *fp;    char header[40], *b;    const struct ssh_signkey *alg;    unsigned char *public_blob;    int public_blob_len;    int i;    public_blob = NULL;    fp = f_open(*filename, "rb");    if (!fp)	goto error;    /* Read the first header line which contains the key type. */    if (!read_header(fp, header)	|| (0 != strcmp(header, "PuTTY-User-Key-File-2") &&	    0 != strcmp(header, "PuTTY-User-Key-File-1")))	goto error;    if ((b = read_body(fp)) == NULL)	goto error;    /* Select key algorithm structure. Currently only ssh-rsa. */    if (!strcmp(b, "ssh-rsa"))	alg = &ssh_rsa;    else if (!strcmp(b, "ssh-dss"))	alg = &ssh_dss;    else {	sfree(b);	goto error;    }    sfree(b);    /* Read the Encryption header line. */    if (!read_header(fp, header) || 0 != strcmp(header, "Encryption"))	goto error;    if ((b = read_body(fp)) == NULL)	goto error;    sfree(b);			       /* we don't care */    /* Read the Comment header line. */    if (!read_header(fp, header) || 0 != strcmp(header, "Comment"))	goto error;    if ((b = read_body(fp)) == NULL)	goto error;    sfree(b);			       /* we don't care */    /* Read the Public-Lines header line and the public blob. */    if (!read_header(fp, header) || 0 != strcmp(header, "Public-Lines"))	goto error;    if ((b = read_body(fp)) == NULL)	goto error;    i = atoi(b);    sfree(b);    if ((public_blob = read_blob(fp, i, &public_blob_len)) == NULL)	goto error;    fclose(fp);    if (pub_blob_len)	*pub_blob_len = public_blob_len;    if (algorithm)	*algorithm = alg->name;    return (char *)public_blob;    /*     * Error processing.     */  error:    if (fp)	fclose(fp);    if (public_blob)	sfree(public_blob);    return NULL;}