mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-28 14:02:57 +00:00
Merge pull request #2588 from swansontec/ssl-cert-path2
Add support for setting the SSL CA location
This commit is contained in:
commit
9b36537de4
@ -138,7 +138,8 @@ typedef enum {
|
||||
GIT_OPT_ENABLE_CACHING,
|
||||
GIT_OPT_GET_CACHED_MEMORY,
|
||||
GIT_OPT_GET_TEMPLATE_PATH,
|
||||
GIT_OPT_SET_TEMPLATE_PATH
|
||||
GIT_OPT_SET_TEMPLATE_PATH,
|
||||
GIT_OPT_SET_SSL_CERT_LOCATIONS,
|
||||
} git_libgit2_opt_t;
|
||||
|
||||
/**
|
||||
@ -223,6 +224,17 @@ typedef enum {
|
||||
* >
|
||||
* > - `path` directory of template.
|
||||
*
|
||||
* * opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)
|
||||
*
|
||||
* > Set the SSL certificate-authority locations.
|
||||
* >
|
||||
* > - `file` is the location of a file containing several
|
||||
* > certificates concatenated together.
|
||||
* > - `path` is the location of a directory holding several
|
||||
* > certificates, one per file.
|
||||
* >
|
||||
* > Either parameter may be `NULL`, but not both.
|
||||
*
|
||||
* @param option Option key
|
||||
* @param ... value to set the option
|
||||
* @return 0 on success, <0 on failure
|
||||
|
@ -5,10 +5,15 @@
|
||||
* a Linking Exception. For full terms see the included COPYING file.
|
||||
*/
|
||||
|
||||
#ifdef GIT_SSL
|
||||
# include <openssl/err.h>
|
||||
#endif
|
||||
|
||||
#include <git2.h>
|
||||
#include "common.h"
|
||||
#include "sysdir.h"
|
||||
#include "cache.h"
|
||||
#include "global.h"
|
||||
|
||||
void git_libgit2_version(int *major, int *minor, int *rev)
|
||||
{
|
||||
@ -131,6 +136,23 @@ int git_libgit2_opts(int key, ...)
|
||||
case GIT_OPT_SET_TEMPLATE_PATH:
|
||||
error = git_sysdir_set(GIT_SYSDIR_TEMPLATE, va_arg(ap, const char *));
|
||||
break;
|
||||
|
||||
case GIT_OPT_SET_SSL_CERT_LOCATIONS:
|
||||
#ifdef GIT_SSL
|
||||
{
|
||||
const char *file = va_arg(ap, const char *);
|
||||
const char *path = va_arg(ap, const char *);
|
||||
if (!SSL_CTX_load_verify_locations(git__ssl_ctx, file, path)) {
|
||||
giterr_set(GITERR_NET, "SSL error: %s",
|
||||
ERR_error_string(ERR_get_error(), NULL));
|
||||
error = -1;
|
||||
}
|
||||
}
|
||||
#else
|
||||
giterr_set(GITERR_NET, "Cannot set certificate locations: OpenSSL is not enabled");
|
||||
error = -1;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
va_end(ap);
|
||||
|
Loading…
Reference in New Issue
Block a user