[
https://issues.apache.org/jira/browse/GUACAMOLE-594?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mike Jumper closed GUACAMOLE-594.
---------------------------------
Resolution: Cannot Reproduce
This does not appear to still be applicable. Testing the latest, a leading
newline at the beginning of a key is ignored.
> Import Private Key is Failing
> -----------------------------
>
> Key: GUACAMOLE-594
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-594
> Project: Guacamole
> Issue Type: Bug
> Components: guacd
> Affects Versions: 0.9.14
> Reporter: Jean Mousinho
> Priority: Minor
>
> Hi,
> I was trying to use private key in the basic user authentication and was
> failing. After some debugging I found that it is reading the key from XML but
> adding a new line character at the beginning, so when it tries to compare
> with RSA/DSA headers it fails.
> I added the following code just for debugging purposes in common-ssh/key.c
>
> {code:c}
> /* Otherwise, unsupported type */
> else {
> printf("Unsupported/invalid private key!\n");
> key->private_key_length = length+1;
> key->private_key = malloc(length+1);
> memcpy(key->private_key, data, length);
> key->private_key[length] = '\0';
> printf("Key data:\n%s",key->private_key);
> BIO_free(key_bio);
> return NULL;
> }
> {code}
> With the following user-mapping.xml extract:
> {code:c}
> <param name="private-key">-----BEGIN RSA PRIVATE KEY-----
> Proc-Type: 4,ENCRYPTED
> DEK-Info: AES-128-CBC,2EEB73462EA53EFFB1AF2EF62440CEB8
> ...
> {code}
> It gives me:
> {code}
> guacd[19414]: DEBUG: Re-attempting private key import (WITH passphrase)
> key data:
> -----BEGIN RSA PRIVATE KEY-----
> Proc-Type: 4,ENCRYPTED
> DEK-Info: AES-128-CBC,2EEB73462EA53EFFB1AF2EF62440CEB8
> ...
> {code}
> To fix it I simply discard the newline character if there is one in
> common-ssl/user.c
> {code:c}
> int guac_common_ssh_user_import_key(guac_common_ssh_user* user,
> char* private_key, char* passphrase) {
> /* Free existing private key, if present */
> if (user->private_key != NULL)
> guac_common_ssh_key_free(user->private_key);
> + /* Skip extra newline if there is one */
> + if ( *private_key == '\n' )
> + private_key += 1;
> /* Attempt to read key without passphrase if none given */
> if (passphrase == NULL)
> user->private_key = guac_common_ssh_key_alloc(private_key,
> strlen(private_key), "");
> /* Otherwise, use provided passphrase */
> else
> user->private_key = guac_common_ssh_key_alloc(private_key,
> strlen(private_key), passphrase);
> /* Fail if key could not be read */
> return user->private_key == NULL;
> }
> {code}
> I might be doing something wrong, if yes, please let me know.
> Thanks.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)