charon-cmd: support prompting for a PIN
To support a Password and PIN XAuth combo, additionally support multiple prompts for different credential types.
This commit is contained in:
@@ -48,9 +48,9 @@ struct private_cmd_creds_t {
|
|||||||
callback_cred_t *cb;
|
callback_cred_t *cb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Already prompted for password?
|
* Kind of secret we recently prompted
|
||||||
*/
|
*/
|
||||||
bool prompted;
|
shared_key_type_t prompted;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Path to ssh-agent socket
|
* Path to ssh-agent socket
|
||||||
@@ -74,7 +74,7 @@ static shared_key_t* callback_shared(private_cmd_creds_t *this,
|
|||||||
shared_key_t *shared;
|
shared_key_t *shared;
|
||||||
char *label, *pwd;
|
char *label, *pwd;
|
||||||
|
|
||||||
if (this->prompted)
|
if (type == this->prompted)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -89,6 +89,9 @@ static shared_key_t* callback_shared(private_cmd_creds_t *this,
|
|||||||
case SHARED_PRIVATE_KEY_PASS:
|
case SHARED_PRIVATE_KEY_PASS:
|
||||||
label = "Password: ";
|
label = "Password: ";
|
||||||
break;
|
break;
|
||||||
|
case SHARED_PIN:
|
||||||
|
label = "PIN: ";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -97,7 +100,7 @@ static shared_key_t* callback_shared(private_cmd_creds_t *this,
|
|||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
this->prompted = TRUE;
|
this->prompted = type;
|
||||||
if (match_me)
|
if (match_me)
|
||||||
{
|
{
|
||||||
*match_me = ID_MATCH_PERFECT;
|
*match_me = ID_MATCH_PERFECT;
|
||||||
@@ -281,6 +284,7 @@ cmd_creds_t *cmd_creds_create()
|
|||||||
.destroy = _destroy,
|
.destroy = _destroy,
|
||||||
},
|
},
|
||||||
.creds = mem_cred_create(),
|
.creds = mem_cred_create(),
|
||||||
|
.prompted = SHARED_ANY,
|
||||||
);
|
);
|
||||||
this->cb = callback_cred_create_shared((void*)callback_shared, this);
|
this->cb = callback_cred_create_shared((void*)callback_shared, this);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user