Line Flow Count Block(s) Source
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 -
8 - #include "auth.h"
9 -
10 - #include "git2.h"
11 - #include "buffer.h"
12 - #include "git2/sys/credential.h"
13 -
14 8 2 static int basic_next_token(
15 - git_buf *out,
16 - git_http_auth_context *ctx,
17 - git_credential *c)
18 - {
19 - git_credential_userpass_plaintext *cred;
20 8 2 git_buf raw = GIT_BUF_INIT;
21 8 2 int error = -1;
22 -
23 - GIT_UNUSED(ctx);
24 -
25 8 2 if (c->credtype != GIT_CREDENTIAL_USERPASS_PLAINTEXT) {
26 ##### 3 git_error_set(GIT_ERROR_INVALID, "invalid credential type for basic auth");
27 ##### 4 goto on_error;
28 - }
29 -
30 8 5 cred = (git_credential_userpass_plaintext *)c;
31 -
32 8 5 git_buf_printf(&raw, "%s:%s", cred->username, cred->password);
33 -
34 8 6,7,9 if (git_buf_oom(&raw) ||
35 8 8,12 git_buf_puts(out, "Basic ") < 0 ||
36 8 10,11 git_buf_encode_base64(out, git_buf_cstr(&raw), raw.size) < 0)
37 - goto on_error;
38 -
39 8 13 error = 0;
40 -
41 - on_error:
42 8 14 if (raw.size)
43 8 15 git__memzero(raw.ptr, raw.size);
44 -
45 8 16 git_buf_dispose(&raw);
46 8 17 return error;
47 - }
48 -
49 - static git_http_auth_context basic_context = {
50 - GIT_HTTP_AUTH_BASIC,
51 - GIT_CREDENTIAL_USERPASS_PLAINTEXT,
52 - 0,
53 - NULL,
54 - basic_next_token,
55 - NULL,
56 - NULL
57 - };
58 -
59 4 2 int git_http_auth_basic(
60 - git_http_auth_context **out, const git_net_url *url)
61 - {
62 - GIT_UNUSED(url);
63 -
64 4 2 *out = &basic_context;
65 4 2 return 0;
66 - }
67 -
68 ##### 2 int git_http_auth_dummy(
69 - git_http_auth_context **out, const git_net_url *url)
70 - {
71 - GIT_UNUSED(url);
72 -
73 ##### 2 *out = NULL;
74 ##### 2 return GIT_PASSTHROUGH;
75 - }
76 -