Lines Matching refs:req

66 static void eli_main(struct gctl_req *req, unsigned flags);
67 static void eli_init(struct gctl_req *req);
68 static void eli_attach(struct gctl_req *req);
69 static void eli_configure(struct gctl_req *req);
70 static void eli_setkey(struct gctl_req *req);
71 static void eli_delkey(struct gctl_req *req);
72 static void eli_resume(struct gctl_req *req);
73 static void eli_kill(struct gctl_req *req);
74 static void eli_backup(struct gctl_req *req);
75 static void eli_restore(struct gctl_req *req);
76 static void eli_resize(struct gctl_req *req);
77 static void eli_version(struct gctl_req *req);
78 static void eli_clear(struct gctl_req *req);
79 static void eli_dump(struct gctl_req *req);
81 static int eli_backup_create(struct gctl_req *req, const char *prov,
281 eli_protect(struct gctl_req *req)
289 gctl_error(req, "Cannot disable core dumps: %s.",
295 gctl_error(req, "Cannot lock memory: %s.", strerror(errno));
302 eli_main(struct gctl_req *req, unsigned int flags)
306 if (eli_protect(req) == -1)
312 name = gctl_get_ascii(req, "verb");
314 gctl_error(req, "No '%s' argument.", "verb");
318 eli_init(req);
320 eli_attach(req);
322 eli_configure(req);
324 eli_setkey(req);
326 eli_delkey(req);
328 eli_resume(req);
330 eli_kill(req);
332 eli_backup(req);
334 eli_restore(req);
336 eli_resize(req);
338 eli_version(req);
340 eli_dump(req);
342 eli_clear(req);
344 gctl_error(req, "Unknown command: %s.", name);
362 eli_genkey_files(struct gctl_req *req, bool new, const char *type,
381 if (!gctl_has_param(req, argname))
384 file = gctl_get_ascii(req, "%s", argname);
392 gctl_error(req, "Cannot open %s %s: %s.",
412 gctl_error(req,
426 gctl_error(req, "Cannot read %s %s: %s.",
435 eli_genkey_passphrase_prompt(struct gctl_req *req, bool new, char *passbuf,
446 gctl_error(req, "Cannot read passphrase: %s.",
459 gctl_error(req,
478 eli_genkey_passphrase(struct gctl_req *req, struct g_eli_metadata *md, bool new,
486 gctl_get_int(req, new ? "nonewpassphrase" : "nopassphrase");
488 if (gctl_has_param(req, new ? "newpassfile0" : "passfile0")) {
489 gctl_error(req,
498 gctl_error(req, "Missing -p flag.");
502 nfiles = eli_genkey_files(req, new, "passfile", NULL, passbuf,
507 if (eli_genkey_passphrase_prompt(req, new, passbuf,
548 eli_genkey(struct gctl_req *req, struct g_eli_metadata *md, unsigned char *key,
556 gctl_get_int(req, new ? "nonewpassphrase" : "nopassphrase");
560 nfiles = eli_genkey_files(req, new, "keyfile", &ctx, NULL, 0);
564 gctl_error(req, "No key components given.");
568 if (eli_genkey_passphrase(req, md, new, &ctx) == -1)
577 eli_metadata_read(struct gctl_req *req, const char *prov,
589 gctl_error(req, "Cannot open %s: %s.", prov,
594 gctl_error(req, "Cannot read metadata from %s: %s.",
605 gctl_error(req, "Cannot read metadata from %s: %s.",
615 gctl_error(req,
621 gctl_error(req, "Inconsistent provider's %s metadata.", prov);
624 gctl_error(req,
633 eli_metadata_store(struct gctl_req *req, const char *prov,
646 gctl_error(req, "Cannot open %s: %s.", prov,
652 gctl_error(req, "Cannot write metadata to %s: %s.",
663 gctl_error(req, "Cannot write metadata to %s: %s.",
674 eli_init(struct gctl_req *req)
686 nargs = gctl_get_int(req, "nargs");
688 gctl_error(req, "Invalid number of arguments.");
691 prov = gctl_get_ascii(req, "arg0");
695 gctl_error(req, "Cannot get informations about %s: %s.", prov,
702 val = gctl_get_intmax(req, "mdversion");
706 gctl_error(req,
715 if (gctl_get_int(req, "boot"))
717 if (gctl_get_int(req, "geliboot"))
719 if (gctl_get_int(req, "displaypass"))
721 if (gctl_get_int(req, "notrim"))
724 str = gctl_get_ascii(req, "aalgo");
727 gctl_error(req,
744 gctl_error(req,
756 str = gctl_get_ascii(req, "ealgo");
766 gctl_error(req, "Invalid encryption algorithm.");
771 gctl_error(req,
778 gctl_error(req,
787 gctl_error(req,
796 gctl_error(req, "The %s encryption algorithm is deprecated.",
800 val = gctl_get_intmax(req, "keylen");
804 gctl_error(req, "Invalid key length.");
809 val = gctl_get_intmax(req, "iterations");
817 nonewpassphrase = gctl_get_int(req, "nonewpassphrase");
819 gctl_error(req,
826 val = gctl_get_intmax(req, "sectorsize");
831 gctl_error(req, "Invalid sector size.");
846 if (eli_genkey(req, &md, key, true) == NULL) {
857 gctl_error(req, "Cannot encrypt Master Key: %s.",
867 gctl_error(req, "Cannot store metadata on %s: %s.", prov,
874 str = gctl_get_ascii(req, "backupfile");
894 eli_backup_create(req, prov, backfile) == 0) {
902 eli_attach(struct gctl_req *req)
910 nargs = gctl_get_int(req, "nargs");
912 gctl_error(req, "Invalid number of arguments.");
915 prov = gctl_get_ascii(req, "arg0");
917 if (eli_metadata_read(req, prov, &md) == -1)
922 gctl_error(req, "Provider size mismatch.");
926 if (eli_genkey(req, &md, key, false) == NULL) {
931 gctl_ro_param(req, "key", sizeof(key), key);
932 if (gctl_issue(req) == NULL) {
940 eli_configure_detached(struct gctl_req *req, const char *prov, int boot,
946 if (eli_metadata_read(req, prov, &md) == -1)
1007 eli_metadata_store(req, prov, &md);
1012 eli_configure(struct gctl_req *req)
1020 nargs = gctl_get_int(req, "nargs");
1022 gctl_error(req, "Too few arguments.");
1026 boot = gctl_get_int(req, "boot");
1027 noboot = gctl_get_int(req, "noboot");
1028 geliboot = gctl_get_int(req, "geliboot");
1029 nogeliboot = gctl_get_int(req, "nogeliboot");
1030 displaypass = gctl_get_int(req, "displaypass");
1031 nodisplaypass = gctl_get_int(req, "nodisplaypass");
1032 trim = gctl_get_int(req, "trim");
1033 notrim = gctl_get_int(req, "notrim");
1037 gctl_error(req, "Options -b and -B are mutually exclusive.");
1047 gctl_error(req, "Options -g and -G are mutually exclusive.");
1057 gctl_error(req, "Options -d and -D are mutually exclusive.");
1067 gctl_error(req, "Options -t and -T are mutually exclusive.");
1077 gctl_error(req, "No option given.");
1082 gctl_issue(req);
1085 prov = gctl_get_ascii(req, "arg%d", i);
1087 eli_configure_detached(req, prov, doboot, dogeliboot,
1094 eli_setkey_attached(struct gctl_req *req, struct g_eli_metadata *md)
1100 val = gctl_get_intmax(req, "iterations");
1108 if (eli_genkey(req, md, key, true) == NULL) {
1117 error = gctl_change_param(req, "iterations", sizeof(intmax_t),
1122 gctl_ro_param(req, "key", sizeof(key), key);
1123 gctl_issue(req);
1128 eli_setkey_detached(struct gctl_req *req, const char *prov,
1138 gctl_error(req, "No valid keys on %s.", prov);
1143 if (eli_genkey(req, md, key, false) == NULL) {
1154 gctl_error(req, "Wrong key for %s.", prov);
1156 gctl_error(req, "Cannot decrypt Master Key: %s.",
1164 val = gctl_get_intmax(req, "keyno");
1172 gctl_error(req, "Invalid '%s' argument.", "keyno");
1176 val = gctl_get_intmax(req, "iterations");
1182 gctl_error(req, "To be able to use '-i' option, only "
1187 gctl_error(req, "Only already defined key can be "
1201 if (eli_genkey(req, md, key, true) == NULL) {
1212 gctl_error(req, "Cannot encrypt Master Key: %s.",
1218 eli_metadata_store(req, prov, md);
1223 eli_setkey(struct gctl_req *req)
1229 nargs = gctl_get_int(req, "nargs");
1231 gctl_error(req, "Invalid number of arguments.");
1234 prov = gctl_get_ascii(req, "arg0");
1236 if (eli_metadata_read(req, prov, &md) == -1)
1240 eli_setkey_attached(req, &md);
1242 eli_setkey_detached(req, prov, &md);
1244 if (req->error == NULL || req->error[0] == '\0') {
1252 eli_delkey_attached(struct gctl_req *req, const char *prov __unused)
1255 gctl_issue(req);
1259 eli_delkey_detached(struct gctl_req *req, const char *prov)
1267 if (eli_metadata_read(req, prov, &md) == -1)
1270 all = gctl_get_int(req, "all");
1274 force = gctl_get_int(req, "force");
1275 val = gctl_get_intmax(req, "keyno");
1277 gctl_error(req, "Key number has to be specified.");
1282 gctl_error(req, "Invalid '%s' argument.", "keyno");
1286 gctl_error(req, "Master Key %u is not set.", nkey);
1291 gctl_error(req, "This is the last Master Key. Use '-f' "
1299 eli_metadata_store(req, prov, &md);
1304 eli_delkey(struct gctl_req *req)
1309 nargs = gctl_get_int(req, "nargs");
1311 gctl_error(req, "Invalid number of arguments.");
1314 prov = gctl_get_ascii(req, "arg0");
1317 eli_delkey_attached(req, prov);
1319 eli_delkey_detached(req, prov);
1323 eli_resume(struct gctl_req *req)
1331 nargs = gctl_get_int(req, "nargs");
1333 gctl_error(req, "Invalid number of arguments.");
1336 prov = gctl_get_ascii(req, "arg0");
1338 if (eli_metadata_read(req, prov, &md) == -1)
1343 gctl_error(req, "Provider size mismatch.");
1347 if (eli_genkey(req, &md, key, false) == NULL) {
1352 gctl_ro_param(req, "key", sizeof(key), key);
1353 if (gctl_issue(req) == NULL) {
1361 eli_trash_metadata(struct gctl_req *req, const char *prov, int fd, off_t offset)
1376 gctl_error(req, "Cannot obtain provider sector size %s: %s.",
1382 gctl_error(req, "Cannot allocate %zd bytes of memory.", size);
1397 gctl_error(req, "Cannot trash metadata on provider %s: %s.",
1405 eli_kill_detached(struct gctl_req *req, const char *prov)
1419 gctl_error(req, "Cannot read metadata from %s: %s.", prov,
1427 gctl_error(req, "Cannot open provider %s: %s.", prov,
1433 gctl_error(req,
1439 (void)eli_trash_metadata(req, prov, fd, offset);
1444 eli_kill(struct gctl_req *req)
1449 nargs = gctl_get_int(req, "nargs");
1450 all = gctl_get_int(req, "all");
1452 gctl_error(req, "Too few arguments.");
1468 prov = gctl_get_ascii(req, "arg%d", i);
1470 eli_kill_detached(req, prov);
1473 gctl_issue(req);
1477 eli_backup_create(struct gctl_req *req, const char *prov, const char *file)
1490 gctl_error(req, "Cannot get informations about %s: %s.", prov,
1496 gctl_error(req, "Cannot allocate memory.");
1502 gctl_error(req, "Unable to read metadata from %s: %s.", prov,
1509 gctl_error(req, "Unable to open %s: %s.", file,
1515 gctl_error(req, "Unable to write to %s: %s.", file,
1534 eli_backup(struct gctl_req *req)
1539 nargs = gctl_get_int(req, "nargs");
1541 gctl_error(req, "Invalid number of arguments.");
1544 prov = gctl_get_ascii(req, "arg0");
1545 file = gctl_get_ascii(req, "arg1");
1547 eli_backup_create(req, prov, file);
1551 eli_restore(struct gctl_req *req)
1558 nargs = gctl_get_int(req, "nargs");
1560 gctl_error(req, "Invalid number of arguments.");
1563 file = gctl_get_ascii(req, "arg0");
1564 prov = gctl_get_ascii(req, "arg1");
1567 if (eli_metadata_read(req, file, &md) == -1)
1572 gctl_error(req, "Cannot get informations about %s: %s.", prov,
1578 if (gctl_get_int(req, "force")) {
1581 gctl_error(req, "Provider size mismatch: "
1587 (void)eli_metadata_store(req, prov, &md);
1591 eli_resize(struct gctl_req *req)
1600 nargs = gctl_get_int(req, "nargs");
1602 gctl_error(req, "Invalid number of arguments.");
1605 prov = gctl_get_ascii(req, "arg0");
1613 gctl_error(req, "Cannot open %s: %s.", prov, strerror(errno));
1620 gctl_error(req, "Cannot get information about %s: %s.", prov,
1627 gctl_error(req, "Cannot allocate memory.");
1631 oldsize = gctl_get_intmax(req, "oldsize");
1633 gctl_error(req, "Invalid oldsize: Out of range.");
1637 gctl_error(req, "Size hasn't changed.");
1643 gctl_error(req, "Cannot read old metadata: %s.",
1654 gctl_error(req,
1660 gctl_error(req, "Inconsistent provider's %s metadata.", prov);
1663 gctl_error(req,
1674 gctl_error(req, "Provider size mismatch at oldsize.");
1684 (void)eli_metadata_store(req, prov, &md);
1686 (void)eli_trash_metadata(req, prov, provfd, oldsize - secsize);
1697 eli_version(struct gctl_req *req)
1704 nargs = gctl_get_int(req, "nargs");
1722 name = gctl_get_ascii(req, "arg%d", i);
1728 gctl_error(req, "Not fully done.");
1737 eli_clear(struct gctl_req *req)
1742 nargs = gctl_get_int(req, "nargs");
1744 gctl_error(req, "Too few arguments.");
1749 name = gctl_get_ascii(req, "arg%d", i);
1754 gctl_error(req, "Not fully done.");
1763 eli_dump(struct gctl_req *req)
1769 nargs = gctl_get_int(req, "nargs");
1771 gctl_error(req, "Too few arguments.");
1776 name = gctl_get_ascii(req, "arg%d", i);
1778 gctl_error(req, "Not fully done.");