]> git.proxmox.com Git - libgit2.git/blobdiff - src/transports/auth.h
New upstream version 1.1.0+dfsg.1
[libgit2.git] / src / transports / auth.h
index 52138cf8fae206421d1d582c2d4e5198a8c74316..9caac4676fc67d813e1088623baaf925d02ebc36 100644 (file)
@@ -5,31 +5,40 @@
  * a Linking Exception. For full terms see the included COPYING file.
  */
 
-#ifndef INCLUDE_http_auth_h__
-#define INCLUDE_http_auth_h__
+#ifndef INCLUDE_transports_auth_h__
+#define INCLUDE_transports_auth_h__
+
+#include "common.h"
 
 #include "git2.h"
 #include "netops.h"
 
 typedef enum {
-       GIT_AUTHTYPE_BASIC = 1,
-       GIT_AUTHTYPE_NEGOTIATE = 2,
-} git_http_authtype_t;
+       GIT_HTTP_AUTH_BASIC = 1,
+       GIT_HTTP_AUTH_NEGOTIATE = 2,
+       GIT_HTTP_AUTH_NTLM = 4,
+} git_http_auth_t;
 
 typedef struct git_http_auth_context git_http_auth_context;
 
 struct git_http_auth_context {
        /** Type of scheme */
-       git_http_authtype_t type;
+       git_http_auth_t type;
 
        /** Supported credentials */
-       git_credtype_t credtypes;
+       git_credential_t credtypes;
+
+       /** Connection affinity or request affinity */
+       unsigned connection_affinity : 1;
 
        /** Sets the challenge on the authentication context */
        int (*set_challenge)(git_http_auth_context *ctx, const char *challenge);
 
        /** Gets the next authentication token from the context */
-       int (*next_token)(git_buf *out, git_http_auth_context *ctx, git_cred *cred);
+       int (*next_token)(git_buf *out, git_http_auth_context *ctx, git_credential *cred);
+
+       /** Examines if all tokens have been presented. */
+       int (*is_complete)(git_http_auth_context *ctx);
 
        /** Frees the authentication context */
        void (*free)(git_http_auth_context *ctx);
@@ -37,27 +46,26 @@ struct git_http_auth_context {
 
 typedef struct {
        /** Type of scheme */
-       git_http_authtype_t type;
+       git_http_auth_t type;
 
        /** Name of the scheme (as used in the Authorization header) */
        const char *name;
 
        /** Credential types this scheme supports */
-       git_credtype_t credtypes;
+       git_credential_t credtypes;
 
        /** Function to initialize an authentication context */
        int (*init_context)(
                git_http_auth_context **out,
-               const gitno_connection_data *connection_data);
+               const git_net_url *url);
 } git_http_auth_scheme;
 
 int git_http_auth_dummy(
        git_http_auth_context **out,
-       const gitno_connection_data *connection_data);
+       const git_net_url *url);
 
 int git_http_auth_basic(
        git_http_auth_context **out,
-       const gitno_connection_data *connection_data);
+       const git_net_url *url);
 
 #endif
-