我目前嘗試在Objective-C中擴展libssh2包裝器。SSH鍵盤交互式身份驗證
我試圖實施libssh2_userauth_keyboard_interactive
方法。我的問題是響應回調。
我發現在網絡上此實現繞過「真正的」互動性和使用的實際密碼進行身份驗證可能:
int error = libssh2_userauth_keyboard_interactive(session, [username UTF8String], &kbdCallback);
static void kbdCallback (const char *name, int name_len, const char *instruction, int instruction_len, int num_prompts, const LIBSSH2_USERAUTH_KBDINT_PROMPT *prompts, LIBSSH2_USERAUTH_KBDINT_RESPONSE *responses, void **abstract)
{
responses[0].text = (char *)[password UTF8String]; // resp. (char *)[@"test" UTF8String]
responses[0].length = strlen([password UTF8String]); // resp. (char *)[@"test" UTF8String]
}
我的一個問題是對static void
中訪問實例變量password
調用和我的另一個問題是,當我嘗試調用該方法時,我得到了SIGABRT(我使用了一個固定字符串來測試它是否有效)。
有沒有可能讓這個工作?
朱利安
更換
其實我不能通過任何上下文函數指針。當我改變傳遞的參數時,我得到了第一行的警告(對應於我上面的代碼):'不兼容的指針類型傳遞'。 'SIABRT'也發生在第一行。 –
@Julian你可能不得不做一些不愉快的事情,比如在等待回調時將用戶名和密碼存儲在'static'變量中。另外,你可以說當參數崩潰時,什麼參數的值被傳遞給'libssh2_userauth_keyboard_interactive'? –