Document -M, -P, allow saving login name.
This commit is contained in:
parent
98aeb02d32
commit
f83cdacab8
2
platform-darwin/External/Pearl
vendored
2
platform-darwin/External/Pearl
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 59eaee6de800f0152ee9fc896535d8b6f1ee68cd
|
Subproject commit d3947708d94bfea04c2f6963828740742317ae2c
|
@ -37,6 +37,10 @@ static void usage() {
|
|||||||
" -u checks the master password against the config,\n"
|
" -u checks the master password against the config,\n"
|
||||||
" -U allows updating to a new master password.\n"
|
" -U allows updating to a new master password.\n"
|
||||||
" Defaults to %s in env or prompts.\n\n", MP_ENV_fullName );
|
" Defaults to %s in env or prompts.\n\n", MP_ENV_fullName );
|
||||||
|
trc( ""
|
||||||
|
" -M master-pw Specify the master password of the user.\n"
|
||||||
|
" This is not a safe method of passing the master password,\n"
|
||||||
|
" only use it for non-secret passwords, such as for tests.\n\n" );
|
||||||
inf( ""
|
inf( ""
|
||||||
" -t pw-type Specify the password's template.\n"
|
" -t pw-type Specify the password's template.\n"
|
||||||
" Defaults to 'long' (-p a), 'name' (-p i) or 'phrase' (-p r).\n"
|
" Defaults to 'long' (-p a), 'name' (-p i) or 'phrase' (-p r).\n"
|
||||||
@ -50,6 +54,11 @@ static void usage() {
|
|||||||
" p, phrase | 20 character sentence.\n"
|
" p, phrase | 20 character sentence.\n"
|
||||||
" K, key | encryption key (set key size -s bits).\n"
|
" K, key | encryption key (set key size -s bits).\n"
|
||||||
" P, personal | saved personal password (save with -s pw).\n\n" );
|
" P, personal | saved personal password (save with -s pw).\n\n" );
|
||||||
|
inf( ""
|
||||||
|
" -P value The parameter value.\n"
|
||||||
|
" -p i | The login name for the site.\n"
|
||||||
|
" -t K | The size of they key to generate, in bits (eg. 256).\n"
|
||||||
|
" -t P | The personal password to encrypt.\n\n" );
|
||||||
inf( ""
|
inf( ""
|
||||||
" -c counter The value of the counter.\n"
|
" -c counter The value of the counter.\n"
|
||||||
" Defaults to 1.\n\n" );
|
" Defaults to 1.\n\n" );
|
||||||
@ -57,9 +66,6 @@ static void usage() {
|
|||||||
" -a version The algorithm version to use, %d - %d.\n"
|
" -a version The algorithm version to use, %d - %d.\n"
|
||||||
" Defaults to %s in env or %d.\n\n",
|
" Defaults to %s in env or %d.\n\n",
|
||||||
MPAlgorithmVersionFirst, MPAlgorithmVersionLast, MP_ENV_algorithm, MPAlgorithmVersionCurrent );
|
MPAlgorithmVersionFirst, MPAlgorithmVersionLast, MP_ENV_algorithm, MPAlgorithmVersionCurrent );
|
||||||
inf( ""
|
|
||||||
" -s value The value to save for -t P or -p i.\n"
|
|
||||||
" The size of they key to generate for -t K, in bits (eg. 256).\n\n" );
|
|
||||||
inf( ""
|
inf( ""
|
||||||
" -p purpose The purpose of the generated token.\n"
|
" -p purpose The purpose of the generated token.\n"
|
||||||
" Defaults to 'auth'.\n"
|
" Defaults to 'auth'.\n"
|
||||||
@ -171,7 +177,7 @@ int main(int argc, char *const argv[]) {
|
|||||||
sitesFormatArg = mpw_getenv( MP_ENV_format );
|
sitesFormatArg = mpw_getenv( MP_ENV_format );
|
||||||
|
|
||||||
// Read the command-line options.
|
// Read the command-line options.
|
||||||
for (int opt; (opt = getopt( argc, argv, "u:U:M:t:P:c:a:s:p:C:f:F:R:vqh" )) != EOF;)
|
for (int opt; (opt = getopt( argc, argv, "u:U:M:t:P:c:a:p:C:f:F:R:vqh" )) != EOF;)
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'u':
|
case 'u':
|
||||||
fullNameArg = optarg && strlen( optarg )? strdup( optarg ): NULL;
|
fullNameArg = optarg && strlen( optarg )? strdup( optarg ): NULL;
|
||||||
@ -363,7 +369,6 @@ int main(int argc, char *const argv[]) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
mpw_free_string( resultParam );
|
|
||||||
resultType = site->type;
|
resultType = site->type;
|
||||||
siteCounter = site->counter;
|
siteCounter = site->counter;
|
||||||
algorithmVersion = site->algorithm;
|
algorithmVersion = site->algorithm;
|
||||||
@ -474,8 +479,18 @@ int main(int argc, char *const argv[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Output the result.
|
// Output the result.
|
||||||
if (keyPurpose == MPKeyPurposeIdentification && site && !site->loginGenerated && site->loginName)
|
if (keyPurpose == MPKeyPurposeIdentification && site && (resultParam || (!site->loginGenerated && site->loginName))) {
|
||||||
|
if (resultParam) {
|
||||||
|
mpw_free_string( site->loginName );
|
||||||
|
site->loginGenerated = false;
|
||||||
|
site->loginName = strdup( resultParam );
|
||||||
|
}
|
||||||
|
else if (resultTypeArg)
|
||||||
|
// TODO: We're not persisting the resultType of the generated login
|
||||||
|
site->loginGenerated = true;
|
||||||
|
|
||||||
fprintf( stdout, "%s\n", site->loginName );
|
fprintf( stdout, "%s\n", site->loginName );
|
||||||
|
}
|
||||||
|
|
||||||
else if (resultParam && site && resultType & MPResultTypeClassStateful) {
|
else if (resultParam && site && resultType & MPResultTypeClassStateful) {
|
||||||
mpw_free_string( site->content );
|
mpw_free_string( site->content );
|
||||||
@ -486,7 +501,7 @@ int main(int argc, char *const argv[]) {
|
|||||||
return EX_SOFTWARE;
|
return EX_SOFTWARE;
|
||||||
}
|
}
|
||||||
|
|
||||||
inf( "saved.\n" );
|
fprintf( stdout, "%s\n", site->content );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!resultParam && site && site->content && resultType & MPResultTypeClassStateful)
|
if (!resultParam && site && site->content && resultType & MPResultTypeClassStateful)
|
||||||
@ -521,11 +536,6 @@ int main(int argc, char *const argv[]) {
|
|||||||
site->algorithm = algorithmVersion;
|
site->algorithm = algorithmVersion;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (keyPurpose == MPKeyPurposeIdentification && site) {
|
|
||||||
// TODO: We're not persisting the resultType of the generated login
|
|
||||||
if (resultType & MPResultTypeClassTemplate)
|
|
||||||
site->loginGenerated = true;
|
|
||||||
}
|
|
||||||
else if (keyPurpose == MPKeyPurposeRecovery && site && keyContext) {
|
else if (keyPurpose == MPKeyPurposeRecovery && site && keyContext) {
|
||||||
// TODO: We're not persisting the resultType of the recovery question
|
// TODO: We're not persisting the resultType of the recovery question
|
||||||
MPMarshalledQuestion *question = NULL;
|
MPMarshalledQuestion *question = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user