Lines Matching refs:md
486 eli_genkey_passphrase(struct gctl_req *req, struct g_eli_metadata *md, bool new, in eli_genkey_passphrase() argument
513 if (!new && md->md_iterations == -1) { in eli_genkey_passphrase()
540 if (md->md_iterations == -1) { in eli_genkey_passphrase()
544 md->md_iterations = pkcs5v2_calculate(2000000); in eli_genkey_passphrase()
545 assert(md->md_iterations > 0); in eli_genkey_passphrase()
548 md->md_iterations); in eli_genkey_passphrase()
554 if (md->md_iterations == 0) { in eli_genkey_passphrase()
555 g_eli_crypto_hmac_update(ctxp, md->md_salt, in eli_genkey_passphrase()
556 sizeof(md->md_salt)); in eli_genkey_passphrase()
561 pkcs5v2_genkey(dkey, sizeof(dkey), md->md_salt, in eli_genkey_passphrase()
562 sizeof(md->md_salt), passbuf, md->md_iterations); in eli_genkey_passphrase()
594 struct g_eli_metadata *md, unsigned char *key, bool new) 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
618 rkey = eli_genkey(req, &ctx, md, key, new); in eli_genkey_single()
626 struct g_eli_metadata *md) in eli_metadata_read() argument
658 error = eli_metadata_decode(sector, md); in eli_metadata_read()
666 prov, (unsigned int)md->md_version, G_ELI_VERSION); in eli_metadata_read()
682 struct g_eli_metadata *md) in eli_metadata_store() argument
687 eli_metadata_encode(md, sector); in eli_metadata_store()
724 struct g_eli_metadata md; in eli_init() local
744 explicit_bzero(&md, sizeof(md)); in eli_init()
745 strlcpy(md.md_magic, G_ELI_MAGIC, sizeof(md.md_magic)); in eli_init()
757 md.md_version = eli_version; in eli_init()
758 md.md_flags = G_ELI_FLAG_AUTORESIZE; in eli_init()
760 md.md_flags |= G_ELI_FLAG_BOOT; in eli_init()
762 md.md_flags |= G_ELI_FLAG_GELIBOOT; in eli_init()
764 md.md_flags |= G_ELI_FLAG_GELIDISPLAYPASS; in eli_init()
766 md.md_flags |= G_ELI_FLAG_NODELETE; in eli_init()
768 md.md_flags &= ~G_ELI_FLAG_AUTORESIZE; in eli_init()
769 md.md_ealgo = CRYPTO_ALGORITHM_MIN - 1; in eli_init()
778 md.md_aalgo = g_eli_str2aalgo(str); in eli_init()
779 if (md.md_aalgo >= CRYPTO_ALGORITHM_MIN && in eli_init()
780 md.md_aalgo <= CRYPTO_ALGORITHM_MAX) { in eli_init()
781 md.md_flags |= G_ELI_FLAG_AUTH; in eli_init()
787 md.md_ealgo = g_eli_str2ealgo(str); in eli_init()
788 if (md.md_ealgo < CRYPTO_ALGORITHM_MIN || in eli_init()
789 md.md_ealgo > CRYPTO_ALGORITHM_MAX) { in eli_init()
800 if (md.md_ealgo < CRYPTO_ALGORITHM_MIN || in eli_init()
801 md.md_ealgo > CRYPTO_ALGORITHM_MAX) { in eli_init()
809 md.md_ealgo = g_eli_str2ealgo(str); in eli_init()
810 if (md.md_ealgo < CRYPTO_ALGORITHM_MIN || in eli_init()
811 md.md_ealgo > CRYPTO_ALGORITHM_MAX) { in eli_init()
815 if (md.md_ealgo == CRYPTO_CAMELLIA_CBC && in eli_init()
822 if (md.md_ealgo == CRYPTO_AES_XTS && in eli_init()
831 md.md_keylen = val; in eli_init()
832 md.md_keylen = g_eli_keylen(md.md_ealgo, md.md_keylen); in eli_init()
833 if (md.md_keylen == 0) { in eli_init()
853 md.md_iterations = val; in eli_init()
861 md.md_keys = 0x01; in eli_init()
896 md.md_provsize = mediasize; in eli_init()
900 md.md_sectorsize = secsize; in eli_init()
906 md.md_sectorsize = val; in eli_init()
910 arc4random_buf(md.md_salt, sizeof(md.md_salt)); in eli_init()
911 arc4random_buf(md.md_mkeys, sizeof(md.md_mkeys)); in eli_init()
914 if (eli_genkey(r, &ctxtemplate, &md, key, true) == NULL) { in eli_init()
923 error = g_eli_mkey_encrypt(md.md_ealgo, key, md.md_keylen, in eli_init()
924 md.md_mkeys); in eli_init()
932 eli_metadata_encode(&md, sector); in eli_init()
1030 explicit_bzero(&md.md_provsize, sizeof(md.md_provsize)); in eli_init()
1031 explicit_bzero(&md.md_sectorsize, sizeof(md.md_sectorsize)); in eli_init()
1032 explicit_bzero(&md.md_salt, sizeof(md.md_salt)); in eli_init()
1033 explicit_bzero(&md.md_mkeys, sizeof(md.md_mkeys)); in eli_init()
1037 explicit_bzero(&md, sizeof(md)); in eli_init()
1044 struct g_eli_metadata md; in eli_attach() local
1085 if (eli_metadata_read(r, prov, &md) == -1) { in eli_attach()
1094 if (md.md_provsize != (uint64_t)mediasize) { in eli_attach()
1099 if (eli_genkey(r, &ctxtemplate, &md, key, false) == NULL) { in eli_attach()
1140 struct g_eli_metadata md; in eli_configure_detached() local
1143 if (eli_metadata_read(req, prov, &md) == -1) in eli_configure_detached()
1146 if (boot == 1 && (md.md_flags & G_ELI_FLAG_BOOT)) { in eli_configure_detached()
1149 } else if (boot == 0 && !(md.md_flags & G_ELI_FLAG_BOOT)) { in eli_configure_detached()
1154 md.md_flags |= G_ELI_FLAG_BOOT; in eli_configure_detached()
1156 md.md_flags &= ~G_ELI_FLAG_BOOT; in eli_configure_detached()
1160 if (geliboot == 1 && (md.md_flags & G_ELI_FLAG_GELIBOOT)) { in eli_configure_detached()
1163 } else if (geliboot == 0 && !(md.md_flags & G_ELI_FLAG_GELIBOOT)) { in eli_configure_detached()
1168 md.md_flags |= G_ELI_FLAG_GELIBOOT; in eli_configure_detached()
1170 md.md_flags &= ~G_ELI_FLAG_GELIBOOT; in eli_configure_detached()
1174 if (displaypass == 1 && (md.md_flags & G_ELI_FLAG_GELIDISPLAYPASS)) { in eli_configure_detached()
1178 !(md.md_flags & G_ELI_FLAG_GELIDISPLAYPASS)) { in eli_configure_detached()
1183 md.md_flags |= G_ELI_FLAG_GELIDISPLAYPASS; in eli_configure_detached()
1185 md.md_flags &= ~G_ELI_FLAG_GELIDISPLAYPASS; in eli_configure_detached()
1189 if (trim == 0 && (md.md_flags & G_ELI_FLAG_NODELETE)) { in eli_configure_detached()
1192 } else if (trim == 1 && !(md.md_flags & G_ELI_FLAG_NODELETE)) { in eli_configure_detached()
1197 md.md_flags &= ~G_ELI_FLAG_NODELETE; in eli_configure_detached()
1199 md.md_flags |= G_ELI_FLAG_NODELETE; in eli_configure_detached()
1203 if (autoresize == 1 && (md.md_flags & G_ELI_FLAG_AUTORESIZE)) { in eli_configure_detached()
1206 } else if (autoresize == 0 && !(md.md_flags & G_ELI_FLAG_AUTORESIZE)) { in eli_configure_detached()
1211 md.md_flags |= G_ELI_FLAG_AUTORESIZE; in eli_configure_detached()
1213 md.md_flags &= ~G_ELI_FLAG_AUTORESIZE; in eli_configure_detached()
1218 eli_metadata_store(req, prov, &md); in eli_configure_detached()
1219 explicit_bzero(&md, sizeof(md)); in eli_configure_detached()
1317 eli_setkey_attached(struct gctl_req *req, struct g_eli_metadata *md) in eli_setkey_attached() argument
1326 md->md_iterations = val; in eli_setkey_attached()
1328 old = md->md_iterations; in eli_setkey_attached()
1331 if (eli_genkey_single(req, md, key, true) == NULL) { in eli_setkey_attached()
1339 if (val == -1 && md->md_iterations != old) { in eli_setkey_attached()
1341 &md->md_iterations); in eli_setkey_attached()
1352 struct g_eli_metadata *md) in eli_setkey_detached() argument
1360 if (md->md_keys == 0) { in eli_setkey_detached()
1366 if (eli_genkey_single(req, md, key, false) == NULL) { in eli_setkey_detached()
1372 error = g_eli_mkey_decrypt_any(md, key, mkey, &nkey); in eli_setkey_detached()
1375 explicit_bzero(md, sizeof(*md)); in eli_setkey_detached()
1401 if (val != -1 && md->md_iterations == -1) { in eli_setkey_detached()
1402 md->md_iterations = val; in eli_setkey_detached()
1403 } else if (val != -1 && val != md->md_iterations) { in eli_setkey_detached()
1404 if (bitcount32(md->md_keys) != 1) { in eli_setkey_detached()
1409 if (md->md_keys != (1 << nkey)) { in eli_setkey_detached()
1414 md->md_iterations = val; in eli_setkey_detached()
1417 mkeydst = md->md_mkeys + nkey * G_ELI_MKEYLEN; in eli_setkey_detached()
1418 md->md_keys |= (1 << nkey); in eli_setkey_detached()
1430 if (eli_genkey_single(req, md, key, true) == NULL) { in eli_setkey_detached()
1432 explicit_bzero(md, sizeof(*md)); in eli_setkey_detached()
1437 error = g_eli_mkey_encrypt(md->md_ealgo, key, md->md_keylen, mkeydst); in eli_setkey_detached()
1440 explicit_bzero(md, sizeof(*md)); in eli_setkey_detached()
1447 eli_metadata_store(req, prov, md); in eli_setkey_detached()
1448 explicit_bzero(md, sizeof(*md)); in eli_setkey_detached()
1454 struct g_eli_metadata md; in eli_setkey() local
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()
1490 struct g_eli_metadata md; in eli_delkey_detached() local
1496 if (eli_metadata_read(req, prov, &md) == -1) in eli_delkey_detached()
1501 arc4random_buf(md.md_mkeys, sizeof(md.md_mkeys)); in eli_delkey_detached()
1514 if (!(md.md_keys & (1 << nkey)) && !force) { in eli_delkey_detached()
1518 md.md_keys &= ~(1 << nkey); in eli_delkey_detached()
1519 if (md.md_keys == 0 && !force) { in eli_delkey_detached()
1524 mkeydst = md.md_mkeys + nkey * G_ELI_MKEYLEN; in eli_delkey_detached()
1528 eli_metadata_store(req, prov, &md); in eli_delkey_detached()
1529 explicit_bzero(&md, sizeof(md)); in eli_delkey_detached()
1554 struct g_eli_metadata md; in eli_resume() local
1567 if (eli_metadata_read(req, prov, &md) == -1) in eli_resume()
1571 if (md.md_provsize != (uint64_t)mediasize) { in eli_resume()
1576 if (eli_genkey_single(req, &md, key, false) == NULL) { in eli_resume()
1645 error = g_metadata_read(prov, (unsigned char *)&md, sizeof(md), in eli_kill_detached()
1782 struct g_eli_metadata md; in eli_restore() local
1796 if (eli_metadata_read(req, file, &md) == -1) in eli_restore()
1806 if (md.md_provsize != (uint64_t)mediasize) { in eli_restore()
1808 md.md_provsize = mediasize; in eli_restore()
1816 (void)eli_metadata_store(req, prov, &md); in eli_restore()
1822 struct g_eli_metadata md; in eli_resize() local
1874 error = eli_metadata_decode(sector, &md); in eli_resize()
1882 prov, (unsigned int)md.md_version, G_ELI_VERSION); in eli_resize()
1898 if (md.md_provsize != (uint64_t)oldsize) { in eli_resize()
1911 md.md_provsize = mediasize; in eli_resize()
1913 (void)eli_metadata_store(req, prov, &md); in eli_resize()
1928 struct g_eli_metadata md; in eli_version() local
1952 error = g_metadata_read(name, (unsigned char *)&md, in eli_version()
1953 sizeof(md), G_ELI_MAGIC); in eli_version()
1960 eli_version = le32dec(&md.md_version); in eli_version()
1994 struct g_eli_metadata md; in eli_dump() local
2006 if (eli_metadata_read(NULL, name, &md) == -1) { in eli_dump()
2011 eli_metadata_dump(&md); in eli_dump()