Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
5565f3cd
Commit
5565f3cd
authored
Oct 28, 2013
by
Vicent Martí
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1904 from libgit2/cmn/ssh-naming
Rename the ssh credentials
parents
8f4a8b09
70a8c78f
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
53 additions
and
43 deletions
+53
-43
include/git2/transport.h
+26
-16
src/transports/cred.c
+19
-19
src/transports/ssh.c
+6
-6
tests-clar/online/push.c
+2
-2
No files found.
include/git2/transport.h
View file @
5565f3cd
...
...
@@ -33,11 +33,11 @@ typedef enum {
/* git_cred_userpass_plaintext */
GIT_CREDTYPE_USERPASS_PLAINTEXT
=
(
1u
<<
0
),
/* git_cred_ssh_key
file_passphrase
*/
GIT_CREDTYPE_SSH_KEY
FILE_PASSPHRASE
=
(
1u
<<
1
),
/* git_cred_ssh_key */
GIT_CREDTYPE_SSH_KEY
=
(
1u
<<
1
),
/* git_cred_ssh_
publickey
*/
GIT_CREDTYPE_SSH_
PUBLICKEY
=
(
1u
<<
2
),
/* git_cred_ssh_
custom
*/
GIT_CREDTYPE_SSH_
CUSTOM
=
(
1u
<<
2
),
}
git_credtype_t
;
/* The base structure for all credential types */
...
...
@@ -61,24 +61,28 @@ typedef LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC((*git_cred_sign_callback));
typedef
int
(
*
git_cred_sign_callback
)(
void
*
,
...);
#endif
/* An ssh key file and passphrase */
typedef
struct
git_cred_ssh_keyfile_passphrase
{
/**
* A ssh key from disk
*/
typedef
struct
git_cred_ssh_key
{
git_cred
parent
;
char
*
username
;
char
*
publickey
;
char
*
privatekey
;
char
*
passphrase
;
}
git_cred_ssh_key
file_passphrase
;
}
git_cred_ssh_key
;
/* An ssh public key and authentication callback */
typedef
struct
git_cred_ssh_publickey
{
/**
* A key with a custom signature function
*/
typedef
struct
git_cred_ssh_custom
{
git_cred
parent
;
char
*
username
;
char
*
publickey
;
size_t
publickey_len
;
void
*
sign_callback
;
void
*
sign_data
;
}
git_cred_ssh_
publickey
;
}
git_cred_ssh_
custom
;
/**
* Check whether a credential object contains username information.
...
...
@@ -89,7 +93,7 @@ typedef struct git_cred_ssh_publickey {
GIT_EXTERN
(
int
)
git_cred_has_username
(
git_cred
*
cred
);
/**
* Create
s
a new plain-text username and password credential object.
* Create a new plain-text username and password credential object.
* The supplied credential parameter will be internally duplicated.
*
* @param out The newly created credential object.
...
...
@@ -103,7 +107,7 @@ GIT_EXTERN(int) git_cred_userpass_plaintext_new(
const
char
*
password
);
/**
* Create
s a new ssh key file and passphrase
credential object.
* Create
a new passphrase-protected ssh key
credential object.
* The supplied credential parameter will be internally duplicated.
*
* @param out The newly created credential object.
...
...
@@ -113,15 +117,21 @@ GIT_EXTERN(int) git_cred_userpass_plaintext_new(
* @param passphrase The passphrase of the credential.
* @return 0 for success or an error code for failure
*/
GIT_EXTERN
(
int
)
git_cred_ssh_key
file_passphrase
_new
(
GIT_EXTERN
(
int
)
git_cred_ssh_key_new
(
git_cred
**
out
,
const
char
*
username
,
const
char
*
publickey
,
const
char
*
privatekey
,
const
char
*
passphrase
);
const
char
*
passphrase
);
/**
* Creates a new ssh public key credential object.
* Create an ssh key credential with a custom signing function.
*
* This lets you use your own function to sign the challenge.
*
* This function and its credential type is provided for completeness
* and wraps `libssh2_userauth_publickey()`, which is undocumented.
*
* The supplied credential parameter will be internally duplicated.
*
* @param out The newly created credential object.
...
...
@@ -132,7 +142,7 @@ GIT_EXTERN(int) git_cred_ssh_keyfile_passphrase_new(
* @param sign_data The data to pass to the sign function.
* @return 0 for success or an error code for failure
*/
GIT_EXTERN
(
int
)
git_cred_ssh_
publickey
_new
(
GIT_EXTERN
(
int
)
git_cred_ssh_
custom
_new
(
git_cred
**
out
,
const
char
*
username
,
const
char
*
publickey
,
...
...
src/transports/cred.c
View file @
5565f3cd
...
...
@@ -19,13 +19,13 @@ int git_cred_has_username(git_cred *cred)
ret
=
!!
c
->
username
;
break
;
}
case
GIT_CREDTYPE_SSH_KEY
FILE_PASSPHRASE
:
{
git_cred_ssh_key
file_passphrase
*
c
=
(
git_cred_ssh_keyfile_passphrase
*
)
cred
;
case
GIT_CREDTYPE_SSH_KEY
:
{
git_cred_ssh_key
*
c
=
(
git_cred_ssh_key
*
)
cred
;
ret
=
!!
c
->
username
;
break
;
}
case
GIT_CREDTYPE_SSH_
PUBLICKEY
:
{
git_cred_ssh_
publickey
*
c
=
(
git_cred_ssh_publickey
*
)
cred
;
case
GIT_CREDTYPE_SSH_
CUSTOM
:
{
git_cred_ssh_
custom
*
c
=
(
git_cred_ssh_custom
*
)
cred
;
ret
=
!!
c
->
username
;
break
;
}
...
...
@@ -84,10 +84,10 @@ int git_cred_userpass_plaintext_new(
return
0
;
}
static
void
ssh_key
file_passphrase
_free
(
struct
git_cred
*
cred
)
static
void
ssh_key_free
(
struct
git_cred
*
cred
)
{
git_cred_ssh_key
file_passphrase
*
c
=
(
git_cred_ssh_key
file_passphrase
*
)
cred
;
git_cred_ssh_key
*
c
=
(
git_cred_ssh_key
*
)
cred
;
git__free
(
c
->
username
);
git__free
(
c
->
publickey
);
...
...
@@ -104,9 +104,9 @@ static void ssh_keyfile_passphrase_free(struct git_cred *cred)
git__free
(
c
);
}
static
void
ssh_
publickey
_free
(
struct
git_cred
*
cred
)
static
void
ssh_
custom
_free
(
struct
git_cred
*
cred
)
{
git_cred_ssh_
publickey
*
c
=
(
git_cred_ssh_publickey
*
)
cred
;
git_cred_ssh_
custom
*
c
=
(
git_cred_ssh_custom
*
)
cred
;
git__free
(
c
->
username
);
git__free
(
c
->
publickey
);
...
...
@@ -115,22 +115,22 @@ static void ssh_publickey_free(struct git_cred *cred)
git__free
(
c
);
}
int
git_cred_ssh_key
file_passphrase
_new
(
int
git_cred_ssh_key_new
(
git_cred
**
cred
,
const
char
*
username
,
const
char
*
publickey
,
const
char
*
privatekey
,
const
char
*
passphrase
)
{
git_cred_ssh_key
file_passphrase
*
c
;
git_cred_ssh_key
*
c
;
assert
(
cred
&&
privatekey
);
c
=
git__calloc
(
1
,
sizeof
(
git_cred_ssh_key
file_passphrase
));
c
=
git__calloc
(
1
,
sizeof
(
git_cred_ssh_key
));
GITERR_CHECK_ALLOC
(
c
);
c
->
parent
.
credtype
=
GIT_CREDTYPE_SSH_KEY
FILE_PASSPHRASE
;
c
->
parent
.
free
=
ssh_key
file_passphrase
_free
;
c
->
parent
.
credtype
=
GIT_CREDTYPE_SSH_KEY
;
c
->
parent
.
free
=
ssh_key_free
;
if
(
username
)
{
c
->
username
=
git__strdup
(
username
);
...
...
@@ -154,7 +154,7 @@ int git_cred_ssh_keyfile_passphrase_new(
return
0
;
}
int
git_cred_ssh_
publickey
_new
(
int
git_cred_ssh_
custom
_new
(
git_cred
**
cred
,
const
char
*
username
,
const
char
*
publickey
,
...
...
@@ -162,15 +162,15 @@ int git_cred_ssh_publickey_new(
git_cred_sign_callback
sign_callback
,
void
*
sign_data
)
{
git_cred_ssh_
publickey
*
c
;
git_cred_ssh_
custom
*
c
;
assert
(
cred
);
c
=
git__calloc
(
1
,
sizeof
(
git_cred_ssh_
publickey
));
c
=
git__calloc
(
1
,
sizeof
(
git_cred_ssh_
custom
));
GITERR_CHECK_ALLOC
(
c
);
c
->
parent
.
credtype
=
GIT_CREDTYPE_SSH_
PUBLICKEY
;
c
->
parent
.
free
=
ssh_
publickey
_free
;
c
->
parent
.
credtype
=
GIT_CREDTYPE_SSH_
CUSTOM
;
c
->
parent
.
free
=
ssh_
custom
_free
;
if
(
username
)
{
c
->
username
=
git__strdup
(
username
);
...
...
src/transports/ssh.c
View file @
5565f3cd
...
...
@@ -249,15 +249,15 @@ static int _git_ssh_authenticate_session(
rc
=
libssh2_userauth_password
(
session
,
user
,
c
->
password
);
break
;
}
case
GIT_CREDTYPE_SSH_KEY
FILE_PASSPHRASE
:
{
git_cred_ssh_key
file_passphrase
*
c
=
(
git_cred_ssh_keyfile_passphrase
*
)
cred
;
case
GIT_CREDTYPE_SSH_KEY
:
{
git_cred_ssh_key
*
c
=
(
git_cred_ssh_key
*
)
cred
;
user
=
c
->
username
?
c
->
username
:
user
;
rc
=
libssh2_userauth_publickey_fromfile
(
session
,
c
->
username
,
c
->
publickey
,
c
->
privatekey
,
c
->
passphrase
);
break
;
}
case
GIT_CREDTYPE_SSH_
PUBLICKEY
:
{
git_cred_ssh_
publickey
*
c
=
(
git_cred_ssh_publickey
*
)
cred
;
case
GIT_CREDTYPE_SSH_
CUSTOM
:
{
git_cred_ssh_
custom
*
c
=
(
git_cred_ssh_custom
*
)
cred
;
user
=
c
->
username
?
c
->
username
:
user
;
rc
=
libssh2_userauth_publickey
(
...
...
@@ -349,8 +349,8 @@ static int _git_ssh_setup_conn(
if
(
t
->
owner
->
cred_acquire_cb
(
&
t
->
cred
,
t
->
owner
->
url
,
user
,
GIT_CREDTYPE_USERPASS_PLAINTEXT
|
GIT_CREDTYPE_SSH_KEY
FILE_PASSPHRASE
|
GIT_CREDTYPE_SSH_
PUBLICKEY
,
GIT_CREDTYPE_SSH_KEY
|
GIT_CREDTYPE_SSH_
CUSTOM
,
t
->
owner
->
cred_acquire_payload
)
<
0
)
goto
on_error
;
...
...
tests-clar/online/push.c
View file @
5565f3cd
...
...
@@ -47,12 +47,12 @@ static int cred_acquire_cb(
GIT_UNUSED
(
user_from_url
);
GIT_UNUSED
(
payload
);
if
(
GIT_CREDTYPE_SSH_KEY
FILE_PASSPHRASE
&
allowed_types
)
{
if
(
GIT_CREDTYPE_SSH_KEY
&
allowed_types
)
{
if
(
!
_remote_user
||
!
_remote_ssh_pubkey
||
!
_remote_ssh_key
||
!
_remote_ssh_passphrase
)
{
printf
(
"GITTEST_REMOTE_USER, GITTEST_REMOTE_SSH_PUBKEY, GITTEST_REMOTE_SSH_KEY and GITTEST_REMOTE_SSH_PASSPHRASE must be set
\n
"
);
return
-
1
;
}
return
git_cred_ssh_key
file_passphrase
_new
(
cred
,
_remote_user
,
_remote_ssh_pubkey
,
_remote_ssh_key
,
_remote_ssh_passphrase
);
return
git_cred_ssh_key_new
(
cred
,
_remote_user
,
_remote_ssh_pubkey
,
_remote_ssh_key
,
_remote_ssh_passphrase
);
}
if
(
GIT_CREDTYPE_USERPASS_PLAINTEXT
&
allowed_types
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment