source src/transports/auth.c
| 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 | - |