Hash :
9b940586
Author :
Date :
2014-07-04T12:45:43
Provide a callback for certificate validation If the certificate validation fails (or always in the case of ssh), let the user decide whether to allow the connection. The data structure passed to the user is the native certificate information from the underlying implementation, namely OpenSSL or WinHTTP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
#ifndef INCLUDE_cl_push_util_h__
#define INCLUDE_cl_push_util_h__
#include "git2/oid.h"
/* Constant for zero oid */
extern const git_oid OID_ZERO;
/**
* Macro for initializing git_remote_callbacks to use test helpers that
* record data in a record_callbacks_data instance.
* @param data pointer to a record_callbacks_data instance
*/
#define RECORD_CALLBACKS_INIT(data) \
{ GIT_REMOTE_CALLBACKS_VERSION, NULL, NULL, cred_acquire_cb, NULL, NULL, record_update_tips_cb, data }
typedef struct {
char *name;
git_oid *old_oid;
git_oid *new_oid;
} updated_tip;
typedef struct {
git_vector updated_tips;
} record_callbacks_data;
typedef struct {
const char *name;
const git_oid *oid;
} expected_ref;
void updated_tip_free(updated_tip *t);
void record_callbacks_data_clear(record_callbacks_data *data);
/**
* Callback for git_remote_update_tips that records updates
*
* @param data (git_vector *) of updated_tip instances
*/
int record_update_tips_cb(const char *refname, const git_oid *a, const git_oid *b, void *data);
/**
* Create a set of refspecs that deletes each of the inputs
*
* @param out the vector in which to store the refspecs
* @param heads the remote heads
* @param heads_len the size of the array
*/
int create_deletion_refspecs(git_vector *out, const git_remote_head **heads, size_t heads_len);
/**
* Callback for git_remote_list that adds refspecs to vector
*
* @param head a ref on the remote
* @param payload (git_vector *) of git_remote_head instances
*/
int record_ref_cb(git_remote_head *head, void *payload);
/**
* Verifies that refs on remote stored by record_ref_cb match the expected
* names, oids, and order.
*
* @param actual_refs actual refs in the remote
* @param actual_refs_len length of actual_refs
* @param expected_refs expected remote refs
* @param expected_refs_len length of expected_refs
*/
void verify_remote_refs(const git_remote_head *actual_refs[], size_t actual_refs_len, const expected_ref expected_refs[], size_t expected_refs_len);
#endif /* INCLUDE_cl_push_util_h__ */