Lines Matching full:req
70 static void eli_main(struct gctl_req *req, unsigned flags);
71 static void eli_init(struct gctl_req *req);
72 static void eli_attach(struct gctl_req *req);
73 static void eli_configure(struct gctl_req *req);
74 static void eli_setkey(struct gctl_req *req);
75 static void eli_delkey(struct gctl_req *req);
76 static void eli_resume(struct gctl_req *req);
77 static void eli_kill(struct gctl_req *req);
78 static void eli_backup(struct gctl_req *req);
79 static void eli_restore(struct gctl_req *req);
80 static void eli_resize(struct gctl_req *req);
81 static void eli_version(struct gctl_req *req);
82 static void eli_clear(struct gctl_req *req);
83 static void eli_dump(struct gctl_req *req);
85 static int eli_backup_create(struct gctl_req *req, const char *prov,
289 eli_protect(struct gctl_req *req) in eli_protect() argument
297 gctl_error(req, "Cannot disable core dumps: %s.", in eli_protect()
303 gctl_error(req, "Cannot lock memory: %s.", strerror(errno)); in eli_protect()
310 eli_main(struct gctl_req *req, unsigned int flags) in eli_main() argument
314 if (eli_protect(req) == -1) in eli_main()
320 name = gctl_get_ascii(req, "verb"); in eli_main()
322 gctl_error(req, "No '%s' argument.", "verb"); in eli_main()
326 eli_init(req); in eli_main()
328 eli_attach(req); in eli_main()
330 eli_configure(req); in eli_main()
332 eli_setkey(req); in eli_main()
334 eli_delkey(req); in eli_main()
336 eli_resume(req); in eli_main()
338 eli_kill(req); in eli_main()
340 eli_backup(req); in eli_main()
342 eli_restore(req); in eli_main()
344 eli_resize(req); in eli_main()
346 eli_version(req); in eli_main()
348 eli_dump(req); in eli_main()
350 eli_clear(req); in eli_main()
352 gctl_error(req, "Unknown command: %s.", name); in eli_main()
370 eli_genkey_files(struct gctl_req *req, bool new, const char *type, in eli_genkey_files() argument
389 if (!gctl_has_param(req, argname)) in eli_genkey_files()
392 file = gctl_get_ascii(req, "%s", argname); in eli_genkey_files()
400 gctl_error(req, "Cannot open %s %s: %s.", in eli_genkey_files()
420 gctl_error(req, in eli_genkey_files()
434 gctl_error(req, "Cannot read %s %s: %s.", in eli_genkey_files()
443 eli_genkey_passphrase_prompt(struct gctl_req *req, bool new, char *passbuf, in eli_genkey_passphrase_prompt() argument
454 gctl_error(req, "Cannot read passphrase: %s.", in eli_genkey_passphrase_prompt()
467 gctl_error(req, in eli_genkey_passphrase_prompt()
486 eli_genkey_passphrase(struct gctl_req *req, struct g_eli_metadata *md, bool new, in eli_genkey_passphrase() argument
498 gctl_get_int(req, new ? "nonewpassphrase" : "nopassphrase"); in eli_genkey_passphrase()
500 if (gctl_has_param(req, new ? "newpassfile0" : "passfile0")) { in eli_genkey_passphrase()
501 gctl_error(req, in eli_genkey_passphrase()
514 gctl_error(req, "Missing -p flag."); in eli_genkey_passphrase()
523 nfiles = eli_genkey_files(req, new, "passfile", NULL, passbuf, in eli_genkey_passphrase()
528 if (eli_genkey_passphrase_prompt(req, new, passbuf, in eli_genkey_passphrase()
572 eli_init_key_hmac_ctx(struct gctl_req *req, struct hmac_ctx *ctx, bool new) in eli_init_key_hmac_ctx() argument
578 gctl_get_int(req, new ? "nonewpassphrase" : "nopassphrase"); in eli_init_key_hmac_ctx()
581 nfiles = eli_genkey_files(req, new, "keyfile", ctx, NULL, 0); in eli_init_key_hmac_ctx()
585 gctl_error(req, "No key components given."); in eli_init_key_hmac_ctx()
593 eli_genkey(struct gctl_req *req, const struct hmac_ctx *ctxtemplate, in eli_genkey() argument
600 if (eli_genkey_passphrase(req, md, new, &ctx) == -1) in eli_genkey()
609 eli_genkey_single(struct gctl_req *req, struct g_eli_metadata *md, in eli_genkey_single() argument
615 if (!eli_init_key_hmac_ctx(req, &ctx, new)) { in eli_genkey_single()
618 rkey = eli_genkey(req, &ctx, md, key, new); in eli_genkey_single()
625 eli_metadata_read(struct gctl_req *req, const char *prov, in eli_metadata_read() argument
637 gctl_error(req, "Cannot open %s: %s.", prov, in eli_metadata_read()
642 gctl_error(req, "Cannot read metadata from %s: %s.", in eli_metadata_read()
653 gctl_error(req, "Cannot read metadata from %s: %s.", in eli_metadata_read()
663 gctl_error(req, in eli_metadata_read()
669 gctl_error(req, "Inconsistent provider's %s metadata.", prov); in eli_metadata_read()
672 gctl_error(req, in eli_metadata_read()
681 eli_metadata_store(struct gctl_req *req, const char *prov, in eli_metadata_store() argument
694 gctl_error(req, "Cannot open %s: %s.", prov, in eli_metadata_store()
700 gctl_error(req, "Cannot write metadata to %s: %s.", in eli_metadata_store()
711 gctl_error(req, "Cannot write metadata to %s: %s.", in eli_metadata_store()
722 eli_init(struct gctl_req *req) in eli_init() argument
737 nargs = gctl_get_int(req, "nargs"); in eli_init()
739 gctl_error(req, "Too few arguments."); in eli_init()
746 val = gctl_get_intmax(req, "mdversion"); in eli_init()
750 gctl_error(req, in eli_init()
759 if (gctl_get_int(req, "boot")) in eli_init()
761 if (gctl_get_int(req, "geliboot")) in eli_init()
763 if (gctl_get_int(req, "displaypass")) in eli_init()
765 if (gctl_get_int(req, "notrim")) in eli_init()
767 if (gctl_get_int(req, "noautoresize")) in eli_init()
770 str = gctl_get_ascii(req, "aalgo"); in eli_init()
773 gctl_error(req, in eli_init()
790 gctl_error(req, in eli_init()
802 str = gctl_get_ascii(req, "ealgo"); in eli_init()
812 gctl_error(req, "Invalid encryption algorithm."); in eli_init()
817 gctl_error(req, in eli_init()
824 gctl_error(req, in eli_init()
830 val = gctl_get_intmax(req, "keylen"); in eli_init()
834 gctl_error(req, "Invalid key length."); in eli_init()
838 val = gctl_get_intmax(req, "iterations"); in eli_init()
846 nonewpassphrase = gctl_get_int(req, "nonewpassphrase"); in eli_init()
848 gctl_error(req, in eli_init()
855 val = gctl_get_intmax(req, "sectorsize"); in eli_init()
867 nparams = req->narg - nargs - 1; in eli_init()
870 if (!eli_init_key_hmac_ctx(req, &ctxtemplate, true)) in eli_init()
879 gctl_ro_param(r, req->arg[param].name, in eli_init()
880 req->arg[param].len, req->arg[param].value); in eli_init()
885 prov = gctl_get_ascii(req, "arg%d", i); in eli_init()
1019 gctl_error(req, "There was an error with at least one " in eli_init()
1042 eli_attach(struct gctl_req *req) in eli_attach() argument
1052 nargs = gctl_get_int(req, "nargs"); in eli_attach()
1054 gctl_error(req, "Too few arguments."); in eli_attach()
1064 nparams = req->narg - nargs - 1; in eli_attach()
1067 if (!eli_init_key_hmac_ctx(req, &ctxtemplate, false)) in eli_attach()
1076 gctl_ro_param(r, req->arg[param].name, in eli_attach()
1077 req->arg[param].len, req->arg[param].value); in eli_attach()
1082 prov = gctl_get_ascii(req, "arg%d", i); in eli_attach()
1121 gctl_error(req, "There was an error with at least one " in eli_attach()
1137 eli_configure_detached(struct gctl_req *req, const char *prov, int boot, in eli_configure_detached() argument
1143 if (eli_metadata_read(req, prov, &md) == -1) in eli_configure_detached()
1218 eli_metadata_store(req, prov, &md); in eli_configure_detached()
1223 eli_configure(struct gctl_req *req) in eli_configure() argument
1231 nargs = gctl_get_int(req, "nargs"); in eli_configure()
1233 gctl_error(req, "Too few arguments."); in eli_configure()
1237 boot = gctl_get_int(req, "boot"); in eli_configure()
1238 noboot = gctl_get_int(req, "noboot"); in eli_configure()
1239 geliboot = gctl_get_int(req, "geliboot"); in eli_configure()
1240 nogeliboot = gctl_get_int(req, "nogeliboot"); in eli_configure()
1241 displaypass = gctl_get_int(req, "displaypass"); in eli_configure()
1242 nodisplaypass = gctl_get_int(req, "nodisplaypass"); in eli_configure()
1243 trim = gctl_get_int(req, "trim"); in eli_configure()
1244 notrim = gctl_get_int(req, "notrim"); in eli_configure()
1245 autoresize = gctl_get_int(req, "autoresize"); in eli_configure()
1246 noautoresize = gctl_get_int(req, "noautoresize"); in eli_configure()
1250 gctl_error(req, "Options -b and -B are mutually exclusive."); in eli_configure()
1260 gctl_error(req, "Options -g and -G are mutually exclusive."); in eli_configure()
1270 gctl_error(req, "Options -d and -D are mutually exclusive."); in eli_configure()
1280 gctl_error(req, "Options -t and -T are mutually exclusive."); in eli_configure()
1290 gctl_error(req, "Options -r and -R are mutually exclusive."); in eli_configure()
1300 gctl_error(req, "No option given."); in eli_configure()
1305 gctl_issue(req); in eli_configure()
1308 prov = gctl_get_ascii(req, "arg%d", i); in eli_configure()
1310 eli_configure_detached(req, prov, doboot, dogeliboot, in eli_configure()
1317 eli_setkey_attached(struct gctl_req *req, struct g_eli_metadata *md) in eli_setkey_attached() argument
1323 val = gctl_get_intmax(req, "iterations"); in eli_setkey_attached()
1331 if (eli_genkey_single(req, md, key, true) == NULL) { in eli_setkey_attached()
1340 error = gctl_change_param(req, "iterations", sizeof(intmax_t), in eli_setkey_attached()
1345 gctl_ro_param(req, "key", sizeof(key), key); in eli_setkey_attached()
1346 gctl_issue(req); in eli_setkey_attached()
1351 eli_setkey_detached(struct gctl_req *req, const char *prov, in eli_setkey_detached() argument
1361 gctl_error(req, "No valid keys on %s.", prov); in eli_setkey_detached()
1366 if (eli_genkey_single(req, md, key, false) == NULL) { in eli_setkey_detached()
1377 gctl_error(req, "Wrong key for %s.", prov); in eli_setkey_detached()
1379 gctl_error(req, "Cannot decrypt Master Key: %s.", in eli_setkey_detached()
1387 val = gctl_get_intmax(req, "keyno"); in eli_setkey_detached()
1395 gctl_error(req, "Invalid '%s' argument.", "keyno"); in eli_setkey_detached()
1399 val = gctl_get_intmax(req, "iterations"); in eli_setkey_detached()
1405 gctl_error(req, "To be able to use '-i' option, only " in eli_setkey_detached()
1410 gctl_error(req, "Only already defined key can be " in eli_setkey_detached()
1430 if (eli_genkey_single(req, md, key, true) == NULL) { in eli_setkey_detached()
1441 gctl_error(req, "Cannot encrypt Master Key: %s.", in eli_setkey_detached()
1447 eli_metadata_store(req, prov, md); in eli_setkey_detached()
1452 eli_setkey(struct gctl_req *req) in eli_setkey() argument
1458 nargs = gctl_get_int(req, "nargs"); in eli_setkey()
1460 gctl_error(req, "Invalid number of arguments."); in eli_setkey()
1463 prov = gctl_get_ascii(req, "arg0"); in eli_setkey()
1465 if (eli_metadata_read(req, prov, &md) == -1) in eli_setkey()
1469 eli_setkey_attached(req, &md); in eli_setkey()
1471 eli_setkey_detached(req, prov, &md); in eli_setkey()
1473 if (req->error == NULL || req->error[0] == '\0') { in eli_setkey()
1481 eli_delkey_attached(struct gctl_req *req, const char *prov __unused) in eli_delkey_attached() argument
1484 gctl_issue(req); in eli_delkey_attached()
1488 eli_delkey_detached(struct gctl_req *req, const char *prov) in eli_delkey_detached() argument
1496 if (eli_metadata_read(req, prov, &md) == -1) in eli_delkey_detached()
1499 all = gctl_get_int(req, "all"); in eli_delkey_detached()
1503 force = gctl_get_int(req, "force"); in eli_delkey_detached()
1504 val = gctl_get_intmax(req, "keyno"); in eli_delkey_detached()
1506 gctl_error(req, "Key number has to be specified."); in eli_delkey_detached()
1511 gctl_error(req, "Invalid '%s' argument.", "keyno"); in eli_delkey_detached()
1515 gctl_error(req, "Master Key %u is not set.", nkey); in eli_delkey_detached()
1520 gctl_error(req, "This is the last Master Key. Use '-f' " in eli_delkey_detached()
1528 eli_metadata_store(req, prov, &md); in eli_delkey_detached()
1533 eli_delkey(struct gctl_req *req) in eli_delkey() argument
1538 nargs = gctl_get_int(req, "nargs"); in eli_delkey()
1540 gctl_error(req, "Invalid number of arguments."); in eli_delkey()
1543 prov = gctl_get_ascii(req, "arg0"); in eli_delkey()
1546 eli_delkey_attached(req, prov); in eli_delkey()
1548 eli_delkey_detached(req, prov); in eli_delkey()
1552 eli_resume(struct gctl_req *req) in eli_resume() argument
1560 nargs = gctl_get_int(req, "nargs"); in eli_resume()
1562 gctl_error(req, "Invalid number of arguments."); in eli_resume()
1565 prov = gctl_get_ascii(req, "arg0"); in eli_resume()
1567 if (eli_metadata_read(req, prov, &md) == -1) in eli_resume()
1572 gctl_error(req, "Provider size mismatch."); in eli_resume()
1576 if (eli_genkey_single(req, &md, key, false) == NULL) { in eli_resume()
1581 gctl_ro_param(req, "key", sizeof(key), key); in eli_resume()
1582 if (gctl_issue(req) == NULL) { in eli_resume()
1590 eli_trash_metadata(struct gctl_req *req, const char *prov, int fd, off_t offset) in eli_trash_metadata() argument
1605 gctl_error(req, "Cannot obtain provider sector size %s: %s.", in eli_trash_metadata()
1611 gctl_error(req, "Cannot allocate %zd bytes of memory.", size); in eli_trash_metadata()
1626 gctl_error(req, "Cannot trash metadata on provider %s: %s.", in eli_trash_metadata()
1634 eli_kill_detached(struct gctl_req *req, const char *prov) in eli_kill_detached() argument
1648 gctl_error(req, "Cannot read metadata from %s: %s.", prov, in eli_kill_detached()
1656 gctl_error(req, "Cannot open provider %s: %s.", prov, in eli_kill_detached()
1662 gctl_error(req, in eli_kill_detached()
1668 (void)eli_trash_metadata(req, prov, fd, offset); in eli_kill_detached()
1673 eli_kill(struct gctl_req *req) in eli_kill() argument
1678 nargs = gctl_get_int(req, "nargs"); in eli_kill()
1679 all = gctl_get_int(req, "all"); in eli_kill()
1681 gctl_error(req, "Too few arguments."); in eli_kill()
1697 prov = gctl_get_ascii(req, "arg%d", i); in eli_kill()
1699 eli_kill_detached(req, prov); in eli_kill()
1702 gctl_issue(req); in eli_kill()
1706 eli_backup_create(struct gctl_req *req, const char *prov, const char *file) in eli_backup_create() argument
1719 gctl_error(req, "Cannot get informations about %s: %s.", prov, in eli_backup_create()
1725 gctl_error(req, "Cannot allocate memory."); in eli_backup_create()
1731 gctl_error(req, "Unable to read metadata from %s: %s.", prov, in eli_backup_create()
1738 gctl_error(req, "Unable to open %s: %s.", file, in eli_backup_create()
1744 gctl_error(req, "Unable to write to %s: %s.", file, in eli_backup_create()
1763 eli_backup(struct gctl_req *req) in eli_backup() argument
1768 nargs = gctl_get_int(req, "nargs"); in eli_backup()
1770 gctl_error(req, "Invalid number of arguments."); in eli_backup()
1773 prov = gctl_get_ascii(req, "arg0"); in eli_backup()
1774 file = gctl_get_ascii(req, "arg1"); in eli_backup()
1776 eli_backup_create(req, prov, file); in eli_backup()
1780 eli_restore(struct gctl_req *req) in eli_restore() argument
1787 nargs = gctl_get_int(req, "nargs"); in eli_restore()
1789 gctl_error(req, "Invalid number of arguments."); in eli_restore()
1792 file = gctl_get_ascii(req, "arg0"); in eli_restore()
1793 prov = gctl_get_ascii(req, "arg1"); in eli_restore()
1796 if (eli_metadata_read(req, file, &md) == -1) in eli_restore()
1801 gctl_error(req, "Cannot get informations about %s: %s.", prov, in eli_restore()
1807 if (gctl_get_int(req, "force")) { in eli_restore()
1810 gctl_error(req, "Provider size mismatch: " in eli_restore()
1816 (void)eli_metadata_store(req, prov, &md); in eli_restore()
1820 eli_resize(struct gctl_req *req) in eli_resize() argument
1829 nargs = gctl_get_int(req, "nargs"); in eli_resize()
1831 gctl_error(req, "Invalid number of arguments."); in eli_resize()
1834 prov = gctl_get_ascii(req, "arg0"); in eli_resize()
1842 gctl_error(req, "Cannot open %s: %s.", prov, strerror(errno)); in eli_resize()
1849 gctl_error(req, "Cannot get information about %s: %s.", prov, in eli_resize()
1856 gctl_error(req, "Cannot allocate memory."); in eli_resize()
1860 oldsize = gctl_get_intmax(req, "oldsize"); in eli_resize()
1862 gctl_error(req, "Invalid oldsize: Out of range."); in eli_resize()
1868 gctl_error(req, "Cannot read old metadata: %s.", in eli_resize()
1879 gctl_error(req, in eli_resize()
1885 gctl_error(req, "Inconsistent provider's %s metadata.", prov); in eli_resize()
1888 gctl_error(req, in eli_resize()
1899 gctl_error(req, "Provider size mismatch at oldsize."); in eli_resize()
1913 (void)eli_metadata_store(req, prov, &md); in eli_resize()
1915 (void)eli_trash_metadata(req, prov, provfd, oldsize - secsize); in eli_resize()
1926 eli_version(struct gctl_req *req) in eli_version() argument
1933 nargs = gctl_get_int(req, "nargs"); in eli_version()
1951 name = gctl_get_ascii(req, "arg%d", i); in eli_version()
1957 gctl_error(req, "Not fully done."); in eli_version()
1966 eli_clear(struct gctl_req *req) in eli_clear() argument
1971 nargs = gctl_get_int(req, "nargs"); in eli_clear()
1973 gctl_error(req, "Too few arguments."); in eli_clear()
1978 name = gctl_get_ascii(req, "arg%d", i); in eli_clear()
1983 gctl_error(req, "Not fully done."); in eli_clear()
1992 eli_dump(struct gctl_req *req) in eli_dump() argument
1998 nargs = gctl_get_int(req, "nargs"); in eli_dump()
2000 gctl_error(req, "Too few arguments."); in eli_dump()
2005 name = gctl_get_ascii(req, "arg%d", i); in eli_dump()
2007 gctl_error(req, "Not fully done."); in eli_dump()