summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEtienne Samson <samson.etienne@gmail.com>2019-09-09 17:01:44 +0200
committerEtienne Samson <samson.etienne@gmail.com>2019-09-13 16:54:40 +0200
commit606f6e21a9f08f54d7354e9441f6b6a08abdda3b (patch)
tree487fb0bbe50d1a55796d32afb8aca895cb7b666f /include
parent8bf0f7eb26c65b2b937b1f40a384b9b269b0b76d (diff)
downloadlibgit2-606f6e21a9f08f54d7354e9441f6b6a08abdda3b.tar.gz
cert: move cert enums & struct to its own header
Diffstat (limited to 'include')
-rw-r--r--include/git2.h1
-rw-r--r--include/git2/cert.h127
-rw-r--r--include/git2/proxy.h4
-rw-r--r--include/git2/transport.h53
-rw-r--r--include/git2/types.h49
5 files changed, 133 insertions, 101 deletions
diff --git a/include/git2.h b/include/git2.h
index 82ac1d3e9..7f49f8faf 100644
--- a/include/git2.h
+++ b/include/git2.h
@@ -15,6 +15,7 @@
#include "git2/blame.h"
#include "git2/branch.h"
#include "git2/buffer.h"
+#include "git2/cert.h"
#include "git2/checkout.h"
#include "git2/cherrypick.h"
#include "git2/clone.h"
diff --git a/include/git2/cert.h b/include/git2/cert.h
new file mode 100644
index 000000000..61a92d4d6
--- /dev/null
+++ b/include/git2/cert.h
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+#ifndef INCLUDE_git_cert_h__
+#define INCLUDE_git_cert_h__
+
+#include "common.h"
+
+/**
+ * @file git2/cert.h
+ * @brief Git certificate objects
+ * @defgroup git_cert Certificate objects
+ * @ingroup Git
+ * @{
+ */
+GIT_BEGIN_DECL
+
+/**
+ * Type of host certificate structure that is passed to the check callback
+ */
+typedef enum git_cert_t {
+ /**
+ * No information about the certificate is available. This may
+ * happen when using curl.
+ */
+ GIT_CERT_NONE,
+ /**
+ * The `data` argument to the callback will be a pointer to
+ * the DER-encoded data.
+ */
+ GIT_CERT_X509,
+ /**
+ * The `data` argument to the callback will be a pointer to a
+ * `git_cert_hostkey` structure.
+ */
+ GIT_CERT_HOSTKEY_LIBSSH2,
+ /**
+ * The `data` argument to the callback will be a pointer to a
+ * `git_strarray` with `name:content` strings containing
+ * information about the certificate. This is used when using
+ * curl.
+ */
+ GIT_CERT_STRARRAY,
+} git_cert_t;
+
+/**
+ * Parent type for `git_cert_hostkey` and `git_cert_x509`.
+ */
+struct git_cert {
+ /**
+ * Type of certificate. A `GIT_CERT_` value.
+ */
+ git_cert_t cert_type;
+};
+
+/**
+ * Callback for the user's custom certificate checks.
+ *
+ * @param cert The host certificate
+ * @param valid Whether the libgit2 checks (OpenSSL or WinHTTP) think
+ * this certificate is valid
+ * @param host Hostname of the host libgit2 connected to
+ * @param payload Payload provided by the caller
+ * @return 0 to proceed with the connection, < 0 to fail the connection
+ * or > 0 to indicate that the callback refused to act and that
+ * the existing validity determination should be honored
+ */
+typedef int GIT_CALLBACK(git_transport_certificate_check_cb)(git_cert *cert, int valid, const char *host, void *payload);
+
+/**
+ * Type of SSH host fingerprint
+ */
+typedef enum {
+ /** MD5 is available */
+ GIT_CERT_SSH_MD5 = (1 << 0),
+ /** SHA-1 is available */
+ GIT_CERT_SSH_SHA1 = (1 << 1),
+} git_cert_ssh_t;
+
+/**
+ * Hostkey information taken from libssh2
+ */
+typedef struct {
+ git_cert parent; /**< The parent cert */
+
+ /**
+ * A hostkey type from libssh2, either
+ * `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`
+ */
+ git_cert_ssh_t type;
+
+ /**
+ * Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will
+ * have the MD5 hash of the hostkey.
+ */
+ unsigned char hash_md5[16];
+
+ /**
+ * Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will
+ * have the SHA-1 hash of the hostkey.
+ */
+ unsigned char hash_sha1[20];
+} git_cert_hostkey;
+
+/**
+ * X.509 certificate information
+ */
+typedef struct {
+ git_cert parent; /**< The parent cert */
+
+ /**
+ * Pointer to the X.509 certificate data
+ */
+ void *data;
+
+ /**
+ * Length of the memory block pointed to by `data`.
+ */
+ size_t len;
+} git_cert_x509;
+
+/** @} */
+GIT_END_DECL
+#endif
diff --git a/include/git2/proxy.h b/include/git2/proxy.h
index 0b3b1fac1..f959ae2e2 100644
--- a/include/git2/proxy.h
+++ b/include/git2/proxy.h
@@ -8,6 +8,8 @@
#define INCLUDE_git_proxy_h__
#include "common.h"
+
+#include "cert.h"
#include "cred.h"
GIT_BEGIN_DECL
@@ -67,7 +69,7 @@ typedef struct {
* connection to proceed. Returns 0 to allow the connection
* or a negative value to indicate an error.
*/
- git_transport_certificate_check_cb certificate_check;
+ git_transport_certificate_check_cb certificate_check;
/**
* Payload to be provided to the credentials and certificate
diff --git a/include/git2/transport.h b/include/git2/transport.h
index 5b42634ad..5122bc8d6 100644
--- a/include/git2/transport.h
+++ b/include/git2/transport.h
@@ -10,6 +10,7 @@
#include "indexer.h"
#include "net.h"
#include "types.h"
+#include "cert.h"
#include "cred.h"
/**
@@ -24,58 +25,6 @@ GIT_BEGIN_DECL
/** Signature of a function which creates a transport */
typedef int GIT_CALLBACK(git_transport_cb)(git_transport **out, git_remote *owner, void *param);
-/**
- * Type of SSH host fingerprint
- */
-typedef enum {
- /** MD5 is available */
- GIT_CERT_SSH_MD5 = (1 << 0),
- /** SHA-1 is available */
- GIT_CERT_SSH_SHA1 = (1 << 1),
-} git_cert_ssh_t;
-
-/**
- * Hostkey information taken from libssh2
- */
-typedef struct {
- git_cert parent; /**< The parent cert */
-
- /**
- * A hostkey type from libssh2, either
- * `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`
- */
- git_cert_ssh_t type;
-
- /**
- * Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will
- * have the MD5 hash of the hostkey.
- */
- unsigned char hash_md5[16];
-
- /**
- * Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will
- * have the SHA-1 hash of the hostkey.
- */
- unsigned char hash_sha1[20];
-} git_cert_hostkey;
-
-/**
- * X.509 certificate information
- */
-typedef struct {
- git_cert parent; /**< The parent cert */
-
- /**
- * Pointer to the X.509 certificate data
- */
- void *data;
-
- /**
- * Length of the memory block pointed to by `data`.
- */
- size_t len;
-} git_cert_x509;
-
/** @} */
GIT_END_DECL
diff --git a/include/git2/types.h b/include/git2/types.h
index 9b384ca13..dab46eaf8 100644
--- a/include/git2/types.h
+++ b/include/git2/types.h
@@ -256,56 +256,9 @@ typedef int GIT_CALLBACK(git_transport_message_cb)(const char *str, int len, voi
/**
- * Type of host certificate structure that is passed to the check callback
- */
-typedef enum git_cert_t {
- /**
- * No information about the certificate is available. This may
- * happen when using curl.
- */
- GIT_CERT_NONE,
- /**
- * The `data` argument to the callback will be a pointer to
- * the DER-encoded data.
- */
- GIT_CERT_X509,
- /**
- * The `data` argument to the callback will be a pointer to a
- * `git_cert_hostkey` structure.
- */
- GIT_CERT_HOSTKEY_LIBSSH2,
- /**
- * The `data` argument to the callback will be a pointer to a
- * `git_strarray` with `name:content` strings containing
- * information about the certificate. This is used when using
- * curl.
- */
- GIT_CERT_STRARRAY,
-} git_cert_t;
-
-/**
* Parent type for `git_cert_hostkey` and `git_cert_x509`.
*/
-typedef struct {
- /**
- * Type of certificate. A `GIT_CERT_` value.
- */
- git_cert_t cert_type;
-} git_cert;
-
-/**
- * Callback for the user's custom certificate checks.
- *
- * @param cert The host certificate
- * @param valid Whether the libgit2 checks (OpenSSL or WinHTTP) think
- * this certificate is valid
- * @param host Hostname of the host libgit2 connected to
- * @param payload Payload provided by the caller
- * @return 0 to proceed with the connection, < 0 to fail the connection
- * or > 0 to indicate that the callback refused to act and that
- * the existing validity determination should be honored
- */
-typedef int GIT_CALLBACK(git_transport_certificate_check_cb)(git_cert *cert, int valid, const char *host, void *payload);
+typedef struct git_cert git_cert;
/**
* Opaque structure representing a submodule.