mirror of
https://github.com/angt/secret
synced 2024-12-25 21:58:25 +01:00
Update argz and add opslimit option
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
This commit is contained in:
parent
fad4fe5f62
commit
4c61bcb547
3 changed files with 31 additions and 25 deletions
1
.gitmodules
vendored
1
.gitmodules
vendored
|
@ -4,4 +4,3 @@
|
||||||
[submodule "argz"]
|
[submodule "argz"]
|
||||||
path = argz
|
path = argz
|
||||||
url = https://github.com/angt/argz
|
url = https://github.com/angt/argz
|
||||||
branch = dev
|
|
||||||
|
|
2
argz
2
argz
|
@ -1 +1 @@
|
||||||
Subproject commit ea7d185d496feecd052f16e141318dfcc6156c69
|
Subproject commit eb8b122247bd48b11984ae4f8755ae6a4059e6c2
|
53
secret.c
53
secret.c
|
@ -352,11 +352,19 @@ s_set_secret(int fd, const char *key, const unsigned char *secret, size_t slen)
|
||||||
static int
|
static int
|
||||||
s_init(int argc, char **argv, void *data)
|
s_init(int argc, char **argv, void *data)
|
||||||
{
|
{
|
||||||
if (argz_help(argc, argv) || argc != 1) {
|
struct argz_ull opslimit = {
|
||||||
if (isatty(1))
|
.min = 100,
|
||||||
printf("Usage: %s\n", argv[0]);
|
.value = 10000,
|
||||||
return 0;
|
};
|
||||||
}
|
struct argz z[] = {
|
||||||
|
{"opslimit", "Number of iterations to perform", argz_ull, &opslimit},
|
||||||
|
{0}};
|
||||||
|
|
||||||
|
int err = argz(argc, argv, z);
|
||||||
|
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
if (getenv(S_ENV_AGENT))
|
if (getenv(S_ENV_AGENT))
|
||||||
s_fatal("Agent is running...");
|
s_fatal("Agent is running...");
|
||||||
|
|
||||||
|
@ -368,7 +376,7 @@ s_init(int argc, char **argv, void *data)
|
||||||
}
|
}
|
||||||
s.hdr.version = 0;
|
s.hdr.version = 0;
|
||||||
hydro_random_buf(s.hdr.master, sizeof(s.hdr.master));
|
hydro_random_buf(s.hdr.master, sizeof(s.hdr.master));
|
||||||
store64_le(s.hdr.opslimit, 10000);
|
store64_le(s.hdr.opslimit, (uint64_t)opslimit.value);
|
||||||
s_write(fd, s.hdr.buf, sizeof(s.hdr.buf));
|
s_write(fd, s.hdr.buf, sizeof(s.hdr.buf));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -379,7 +387,7 @@ s_list(int argc, char **argv, void *data)
|
||||||
if (argz_help(argc, argv) || argc > 2) {
|
if (argz_help(argc, argv) || argc > 2) {
|
||||||
if (isatty(1))
|
if (isatty(1))
|
||||||
printf("Usage: %s [NEEDLE]\n", argv[0]);
|
printf("Usage: %s [NEEDLE]\n", argv[0]);
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
s_print_keys(argv[1], 1);
|
s_print_keys(argv[1], 1);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -417,7 +425,7 @@ s_do(int argc, char **argv, void *data)
|
||||||
} else if (argc == 2 && !(op & s_op_create)) {
|
} else if (argc == 2 && !(op & s_op_create)) {
|
||||||
s_print_keys(NULL, 0);
|
s_print_keys(NULL, 0);
|
||||||
}
|
}
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
int fd = s_open_secret(1, O_RDWR);
|
int fd = s_open_secret(1, O_RDWR);
|
||||||
const char *old = s_get_secret(fd, argv[1], op & s_op_create);
|
const char *old = s_get_secret(fd, argv[1], op & s_op_create);
|
||||||
|
@ -452,7 +460,7 @@ s_show(int argc, char **argv, void *data)
|
||||||
} else if (argc == 2) {
|
} else if (argc == 2) {
|
||||||
s_print_keys(NULL, 0);
|
s_print_keys(NULL, 0);
|
||||||
}
|
}
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
int fd = s_open_secret(1, O_RDONLY);
|
int fd = s_open_secret(1, O_RDONLY);
|
||||||
const char *secret = s_get_secret(fd, argv[1], 0);
|
const char *secret = s_get_secret(fd, argv[1], 0);
|
||||||
|
@ -471,7 +479,7 @@ s_pass(int argc, char **argv, void *data)
|
||||||
if (argz_help(argc, argv) || argc < 2) {
|
if (argz_help(argc, argv) || argc < 2) {
|
||||||
if (isatty(1))
|
if (isatty(1))
|
||||||
printf("Usage: %s KEY [SUBKEY...]\n", argv[0]);
|
printf("Usage: %s KEY [SUBKEY...]\n", argv[0]);
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
int fd = s_open_secret(1, O_RDONLY);
|
int fd = s_open_secret(1, O_RDONLY);
|
||||||
s_get_secret(fd, NULL, 0);
|
s_get_secret(fd, NULL, 0);
|
||||||
|
@ -520,7 +528,7 @@ s_agent(int argc, char **argv, void *data)
|
||||||
} else if (argc == 2) {
|
} else if (argc == 2) {
|
||||||
printf("CMD\n");
|
printf("CMD\n");
|
||||||
}
|
}
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
if (getenv(S_ENV_AGENT))
|
if (getenv(S_ENV_AGENT))
|
||||||
s_fatal("Already running...");
|
s_fatal("Already running...");
|
||||||
|
@ -657,11 +665,11 @@ s_set_path(void)
|
||||||
static int
|
static int
|
||||||
s_version(int argc, char **argv, void *data)
|
s_version(int argc, char **argv, void *data)
|
||||||
{
|
{
|
||||||
if (argz_help(argc, argv) || argc != 1) {
|
int err = argz(argc, argv, NULL);
|
||||||
if (isatty(1))
|
|
||||||
printf("Usage: %s\n", argv[0]);
|
if (err)
|
||||||
return 0;
|
return err;
|
||||||
}
|
|
||||||
printf("%u.%u\n", S_VER_MAJOR, S_VER_MINOR);
|
printf("%u.%u\n", S_VER_MAJOR, S_VER_MINOR);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -679,7 +687,7 @@ main(int argc, char **argv)
|
||||||
enum s_op s_rnw = s_op_generate;
|
enum s_op s_rnw = s_op_generate;
|
||||||
enum s_op s_rst = 0;
|
enum s_op s_rst = 0;
|
||||||
|
|
||||||
struct argz mainz[] = {
|
struct argz z[] = {
|
||||||
{"init", "Initialize secret for the current user", &s_init, .grp = 1},
|
{"init", "Initialize secret for the current user", &s_init, .grp = 1},
|
||||||
{"list", "List all secrets for a given passphrase", &s_list, .grp = 1},
|
{"list", "List all secrets for a given passphrase", &s_list, .grp = 1},
|
||||||
{"show", "Print a secret", &s_show, NULL, .grp = 1},
|
{"show", "Print a secret", &s_show, NULL, .grp = 1},
|
||||||
|
@ -693,11 +701,10 @@ main(int argc, char **argv)
|
||||||
{0}};
|
{0}};
|
||||||
|
|
||||||
if (argc == 1) {
|
if (argc == 1) {
|
||||||
printf("Available commands:\n");
|
argz_print(z);
|
||||||
argz_print(mainz);
|
return 0;
|
||||||
} else {
|
|
||||||
int ret = argz(argc, argv, mainz);
|
|
||||||
hydro_memzero(&s.x, sizeof(s.x));
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
int ret = argz_main(argc, argv, z);
|
||||||
|
hydro_memzero(&s.x, sizeof(s.x));
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue