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:
Martin Willi
2013-09-03 16:26:19 +02:00
parent 45797bd50b
commit e8b36eb92f
+8 -4
View File
@@ -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);