]> git.proxmox.com Git - libgit2.git/blob - src/netops.h
New upstream version 1.3.0+dfsg.1
[libgit2.git] / src / netops.h
1 /*
2 * Copyright (C) the libgit2 contributors. All rights reserved.
3 *
4 * This file is part of libgit2, distributed under the GNU GPL v2 with
5 * a Linking Exception. For full terms see the included COPYING file.
6 */
7 #ifndef INCLUDE_netops_h__
8 #define INCLUDE_netops_h__
9
10 #include "common.h"
11
12 #include "posix.h"
13 #include "stream.h"
14 #include "net.h"
15
16 #ifdef GIT_OPENSSL
17 # include "streams/openssl.h"
18 #endif
19
20 typedef struct gitno_ssl {
21 #ifdef GIT_OPENSSL
22 SSL *ssl;
23 #else
24 size_t dummy;
25 #endif
26 } gitno_ssl;
27
28 /* Represents a socket that may or may not be using SSL */
29 typedef struct gitno_socket {
30 GIT_SOCKET socket;
31 gitno_ssl ssl;
32 } gitno_socket;
33
34 typedef struct gitno_buffer {
35 char *data;
36 size_t len;
37 size_t offset;
38 int (*recv)(struct gitno_buffer *buffer);
39 void *cb_data;
40 } gitno_buffer;
41
42 /* Flags to gitno_connect */
43 enum {
44 /* Attempt to create an SSL connection. */
45 GITNO_CONNECT_SSL = 1,
46 };
47
48 /**
49 * Check if the name in a cert matches the wanted hostname
50 *
51 * Check if a pattern from a certificate matches the hostname we
52 * wanted to connect to according to RFC2818 rules (which specifies
53 * HTTP over TLS). Mainly, an asterisk matches anything, but is
54 * limited to a single url component.
55 *
56 * Note that this does not set an error message. It expects the user
57 * to provide the message for the user.
58 */
59 int gitno__match_host(const char *pattern, const char *host);
60
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 int gitno_consume(gitno_buffer *buf, const char *ptr);
66 void gitno_consume_n(gitno_buffer *buf, size_t cons);
67
68 #endif