/* * 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