netops.h 1.71 KB
Newer Older
1
/*
Edward Thomson committed
2
 * Copyright (C) the libgit2 contributors. All rights reserved.
Vicent Marti committed
3 4 5
 *
 * This file is part of libgit2, distributed under the GNU GPL v2 with
 * a Linking Exception. For full terms see the included COPYING file.
6 7 8 9
 */
#ifndef INCLUDE_netops_h__
#define INCLUDE_netops_h__

10
#include "common.h"
11 12

#include "posix.h"
13
#include "stream.h"
14
#include "net.h"
15

16
#ifdef GIT_OPENSSL
17 18 19
# include <openssl/ssl.h>
#endif

20
typedef struct gitno_ssl {
21
#ifdef GIT_OPENSSL
22 23 24 25
	SSL *ssl;
#else
	size_t dummy;
#endif
26
} gitno_ssl;
27 28

/* Represents a socket that may or may not be using SSL */
29
typedef struct gitno_socket {
30 31
	GIT_SOCKET socket;
	gitno_ssl ssl;
32
} gitno_socket;
33

34
typedef struct gitno_buffer {
35
	char *data;
36 37
	size_t len;
	size_t offset;
38
	int (*recv)(struct gitno_buffer *buffer);
39
	void *cb_data;
40
} gitno_buffer;
41 42 43 44 45 46 47

/* Flags to gitno_connect */
enum {
	/* Attempt to create an SSL connection. */
	GITNO_CONNECT_SSL = 1,
};

48 49 50 51 52 53 54 55 56 57 58 59 60
/**
 * Check if the name in a cert matches the wanted hostname
 *
 * Check if a pattern from a certificate matches the hostname we
 * wanted to connect to according to RFC2818 rules (which specifies
 * HTTP over TLS). Mainly, an asterisk matches anything, but is
 * limited to a single url component.
 *
 * Note that this does not set an error message. It expects the user
 * to provide the message for the user.
 */
int gitno__match_host(const char *pattern, const char *host);

61
void gitno_buffer_setup_fromstream(git_stream *st, gitno_buffer *buf, char *data, size_t len);
62
void gitno_buffer_setup_callback(gitno_buffer *buf, char *data, size_t len, int (*recv)(gitno_buffer *buf), void *cb_data);
63
int gitno_recv(gitno_buffer *buf);
64

65
void gitno_consume(gitno_buffer *buf, const char *ptr);
66
void gitno_consume_n(gitno_buffer *buf, size_t cons);
67

68
#endif