From abf02bc7d79dfb7b0bbcd404ebecb202cff2a18e Mon Sep 17 00:00:00 2001 From: lhchavez Date: Sun, 6 Dec 2020 11:55:04 -0800 Subject: Add `NewCredentialSSHKeyFromSigner` (#706) This change adds `NewCredentialSSHKeyFromSigner`, which allows idiomatic use of SSH keys from Go. This also lets us spin off an SSH server in the tests. --- wrapper.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'wrapper.c') diff --git a/wrapper.c b/wrapper.c index cee8d00..f168425 100644 --- a/wrapper.c +++ b/wrapper.c @@ -437,6 +437,29 @@ git_credential_t _go_git_credential_credtype(git_credential *cred) return cred->credtype; } +static int credential_ssh_sign_callback( + LIBSSH2_SESSION *session, + unsigned char **sig, size_t *sig_len, + const unsigned char *data, size_t data_len, + void **abstract) +{ + char *error_message = NULL; + const int ret = credentialSSHSignCallback( + &error_message, + sig, + sig_len, + (unsigned char *)data, + data_len, + (void *)*(uintptr_t *)abstract); + return set_callback_error(error_message, ret); +} + +void _go_git_populate_credential_ssh_custom(git_credential_ssh_custom *cred) +{ + cred->parent.free = (void (*)(git_credential *))credentialSSHCustomFree; + cred->sign_callback = credential_ssh_sign_callback; +} + int _go_git_odb_write_pack(git_odb_writepack **out, git_odb *db, void *progress_payload) { return git_odb_write_pack(out, db, transfer_progress_callback, progress_payload); -- cgit v1.2.3