Changeset View
Changeset View
Standalone View
Standalone View
stand/libsa/geli/geliboot.c
Show First 20 Lines • Show All 339 Lines • ▼ Show 20 Lines | for (n = 0, dstoff = offset; n < nsec; n++, dstoff += secsize) { | ||||
g_eli_crypto_ivgen(&gdev->sc, dstoff, iv, G_ELI_IVKEYLEN); | g_eli_crypto_ivgen(&gdev->sc, dstoff, iv, G_ELI_IVKEYLEN); | ||||
/* Get the key that corresponds to this offset. */ | /* Get the key that corresponds to this offset. */ | ||||
keyno = (dstoff >> G_ELI_KEY_SHIFT) / secsize; | keyno = (dstoff >> G_ELI_KEY_SHIFT) / secsize; | ||||
g_eli_key_fill(&gdev->sc, &gkey, keyno); | g_eli_key_fill(&gdev->sc, &gkey, keyno); | ||||
error = geliboot_crypt(gdev->sc.sc_ealgo, enc, pbuf, secsize, | error = geliboot_crypt(gdev->sc.sc_ealgo, enc, pbuf, secsize, | ||||
gkey.gek_key, gdev->sc.sc_ekeylen, iv, sizeof(iv)); | gkey.gek_key, gdev->sc.sc_ekeylen, iv); | ||||
if (error != 0) { | if (error != 0) { | ||||
explicit_bzero(&gkey, sizeof(gkey)); | explicit_bzero(&gkey, sizeof(gkey)); | ||||
printf("%s: Failed to %s!", __func__, | printf("%s: Failed to %s!", __func__, | ||||
enc ? "encrypt" : "decrypt"); | enc ? "encrypt" : "decrypt"); | ||||
return (error); | return (error); | ||||
} | } | ||||
pbuf += secsize; | pbuf += secsize; | ||||
▲ Show 20 Lines • Show All 44 Lines • Show Last 20 Lines |