91 lines
2.4 KiB
C
91 lines
2.4 KiB
C
/*
|
|
* Copyright (C) the libgit2 contributors. All rights reserved.
|
|
*
|
|
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
* a Linking Exception. For full terms see the included COPYING file.
|
|
*/
|
|
#ifndef INCLUDE_sys_git_credential_h__
|
|
#define INCLUDE_sys_git_credential_h__
|
|
|
|
#include "git2/common.h"
|
|
#include "git2/credential.h"
|
|
|
|
/**
|
|
* @file git2/sys/cred.h
|
|
* @brief Git credentials low-level implementation
|
|
* @defgroup git_credential Git credentials low-level implementation
|
|
* @ingroup Git
|
|
* @{
|
|
*/
|
|
GIT_BEGIN_DECL
|
|
|
|
/**
|
|
* The base structure for all credential types
|
|
*/
|
|
struct git_credential {
|
|
git_credential_t credtype; /**< A type of credential */
|
|
|
|
/** The deallocator for this type of credentials */
|
|
void GIT_CALLBACK(free)(git_credential *cred);
|
|
};
|
|
|
|
/** A plaintext username and password */
|
|
struct git_credential_userpass_plaintext {
|
|
git_credential parent; /**< The parent credential */
|
|
char *username; /**< The username to authenticate as */
|
|
char *password; /**< The password to use */
|
|
};
|
|
|
|
/** Username-only credential information */
|
|
struct git_credential_username {
|
|
git_credential parent; /**< The parent credential */
|
|
char username[1]; /**< The username to authenticate as */
|
|
};
|
|
|
|
/**
|
|
* A ssh key from disk
|
|
*/
|
|
struct git_credential_ssh_key {
|
|
git_credential parent; /**< The parent credential */
|
|
char *username; /**< The username to authenticate as */
|
|
char *publickey; /**< The path to a public key */
|
|
char *privatekey; /**< The path to a private key */
|
|
char *passphrase; /**< Passphrase to decrypt the private key */
|
|
};
|
|
|
|
/**
|
|
* Keyboard-interactive based ssh authentication
|
|
*/
|
|
struct git_credential_ssh_interactive {
|
|
git_credential parent; /**< The parent credential */
|
|
char *username; /**< The username to authenticate as */
|
|
|
|
/**
|
|
* Callback used for authentication.
|
|
*/
|
|
git_credential_ssh_interactive_cb prompt_callback;
|
|
|
|
void *payload; /**< Payload passed to prompt_callback */
|
|
};
|
|
|
|
/**
|
|
* A key with a custom signature function
|
|
*/
|
|
struct git_credential_ssh_custom {
|
|
git_credential parent; /**< The parent credential */
|
|
char *username; /**< The username to authenticate as */
|
|
char *publickey; /**< The public key data */
|
|
size_t publickey_len; /**< Length of the public key */
|
|
|
|
/**
|
|
* Callback used to sign the data.
|
|
*/
|
|
git_credential_sign_cb sign_callback;
|
|
|
|
void *payload; /**< Payload passed to prompt_callback */
|
|
};
|
|
|
|
GIT_END_DECL
|
|
|
|
#endif
|