Как использовать git_cred_ssh_publickey_new()

В настоящее время я обертываю git_cred API в Objective-Git, и я не не понимаю некоторые из ожидаемых аргументов. Для справки, вот "оскорбительные" прототипы:

int git_cred_ssh_publickey_new(
    git_cred **out,
    const char *username,
    const char *publickey, size_t publickey_len,
    git_cred_sign_callback sign_fn, void *sign_data);

int git_cred_sign_callback(
    LIBSSH2_SESSION *session,
    unsigned char **sig, size_t *sig_len,
    const unsigned char *data, size_t data_len,
    void **abstract);

(Последний извлек из #define LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC).

Для чего используется git_cred_sign_callback? Требуется LIBSSH2_SESSION, который довольно низкоуровневый, даже из POV libgit2, и я не уверен, что я должен делать в этом обратном вызове...


person tiennou    schedule 15.09.2013    source источник


Ответы (1)


Требуется LIBSSH2_SESSION, потому что это обратный вызов libssh2; это не низкоуровневый, он ортогонален работе libgit2.

Для вас предусмотрена функция самостоятельной подписи данных. Он предоставляется в основном для полноты, так как базовая функциональность является недокументированной особенностью libssh2.

См., например. http://www.libssh2.org/libssh2_userauth_publickey.html и http://www.libssh2.org/mail/libssh2-devel-archive-2012-10/0071.shtml

person Carlos Martín Nieto    schedule 15.09.2013
comment
Хм, да, извините, я имел в виду низкоуровневый уровень, как в деталях реализации. Мне действительно интересно, что делать с этими двумя ссылками, первая говорит, что эта функция вызывается... и останавливается, а другая, похоже, никто не помнит, как работает этот вызов API, и он не задокументирован. хотя есть ссылка на другой связанный вызов, который имеет sign_callback. Спасибо за этот указатель! - person tiennou; 16.09.2013