summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2014-06-30 23:18:37 +0200
committerVicent Marti <tanoku@gmail.com>2014-08-05 02:06:14 +0200
commit63ee946d63d9427f0ef9fbae2e1e8869f7ec8479 (patch)
tree1d1ff34b69335d0e8046953ee24e123d4ea43dd9
parentaa1b62ba14e37d41da444b1ad608c8dd9448a417 (diff)
downloadlibgit2-63ee946d63d9427f0ef9fbae2e1e8869f7ec8479.tar.gz
ssh: always declare the libssh2 types
This lets a user decide they do want to use keyboard-interactive after they've compiled.
-rw-r--r--CMakeLists.txt11
-rw-r--r--include/git2/transport.h (renamed from include/git2/transport.h.in)19
2 files changed, 11 insertions, 19 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 45881d6a..6f1a97ed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -408,17 +408,6 @@ IF (SONAME)
ENDIF()
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libgit2.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libgit2.pc @ONLY)
-IF (LIBSSH2_FOUND)
- SET(INCLUDE_LIBSSH2 "#include <libssh2.h>")
- SET(GIT_SSH_PK_FUNC "typedef LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC((*git_cred_sign_callback));")
- SET(GIT_SSH_KI_FUNC "typedef LIBSSH2_USERAUTH_KBDINT_RESPONSE_FUNC((*git_cred_ssh_interactive_callback));")
-ELSE ()
- SET(GIT_SSH_PK_FUNC "typedef int (*git_cred_sign_callback)(void *, unsigned char **, size_t *, const unsigned char *, size_t, void **);")
- SET(GIT_SSH_KI_FUNC "typedef int (*git_cred_ssh_interactive_callback)(const char *, int, const char *, int, int, const void *, void *, void **);")
-ENDIF ()
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/include/git2/transport.h.in ${CMAKE_CURRENT_SOURCE_DIR}/include/git2/transport.h @ONLY)
-
-
IF (MSVC_IDE)
# Precompiled headers
SET_TARGET_PROPERTIES(git2 PROPERTIES COMPILE_FLAGS "/Yuprecompiled.h /FIprecompiled.h")
diff --git a/include/git2/transport.h.in b/include/git2/transport.h
index 73f0a99a..94407263 100644
--- a/include/git2/transport.h.in
+++ b/include/git2/transport.h
@@ -11,8 +11,6 @@
#include "net.h"
#include "types.h"
-@INCLUDE_LIBSSH2@
-
/**
* @file git2/transport.h
* @brief Git transport interfaces and functions
@@ -59,14 +57,19 @@ typedef struct {
char *password;
} git_cred_userpass_plaintext;
+
/*
- * This defines the callbacks for custom public key signatures and
- * keyboard-interactive authentication. It is replaced at build-time
- * with either the libssh2 signature or a dummy signature that's close
- * enough but with void pointers instead of libssh2 structures.
+ * If the user hasn't included libssh2.h before git2.h, we need to
+ * define a few types for the callback signatures.
*/
-@GIT_SSH_PK_FUNC@
-@GIT_SSH_KI_FUNC@
+#ifndef LIBSSH2_VERSION
+typedef struct _LIBSSH2_SESSION LIBSSH2_SESSION;
+typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT LIBSSH2_USERAUTH_KBDINT_PROMPT;
+typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE LIBSSH2_USERAUTH_KBDINT_RESPONSE;
+#endif
+
+typedef 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);
+typedef int (*git_cred_ssh_interactive_callback)(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);
/**
* A ssh key from disk