Lines Matching refs:md

229 eli_metadata_encode_v0(struct g_eli_metadata *md, u_char **datap)
234 le32enc(p, md->md_flags); p += sizeof(md->md_flags);
235 le16enc(p, md->md_ealgo); p += sizeof(md->md_ealgo);
236 le16enc(p, md->md_keylen); p += sizeof(md->md_keylen);
237 le64enc(p, md->md_provsize); p += sizeof(md->md_provsize);
238 le32enc(p, md->md_sectorsize); p += sizeof(md->md_sectorsize);
239 *p = md->md_keys; p += sizeof(md->md_keys);
240 le32enc(p, md->md_iterations); p += sizeof(md->md_iterations);
241 bcopy(md->md_salt, p, sizeof(md->md_salt)); p += sizeof(md->md_salt);
242 bcopy(md->md_mkeys, p, sizeof(md->md_mkeys)); p += sizeof(md->md_mkeys);
246 eli_metadata_encode_v1v2v3v4v5v6v7(struct g_eli_metadata *md, u_char **datap)
251 le32enc(p, md->md_flags); p += sizeof(md->md_flags);
252 le16enc(p, md->md_ealgo); p += sizeof(md->md_ealgo);
253 le16enc(p, md->md_keylen); p += sizeof(md->md_keylen);
254 le16enc(p, md->md_aalgo); p += sizeof(md->md_aalgo);
255 le64enc(p, md->md_provsize); p += sizeof(md->md_provsize);
256 le32enc(p, md->md_sectorsize); p += sizeof(md->md_sectorsize);
257 *p = md->md_keys; p += sizeof(md->md_keys);
258 le32enc(p, md->md_iterations); p += sizeof(md->md_iterations);
259 bcopy(md->md_salt, p, sizeof(md->md_salt)); p += sizeof(md->md_salt);
260 bcopy(md->md_mkeys, p, sizeof(md->md_mkeys)); p += sizeof(md->md_mkeys);
264 eli_metadata_encode(struct g_eli_metadata *md, u_char *data)
270 bcopy(md->md_magic, p, sizeof(md->md_magic));
271 p += sizeof(md->md_magic);
272 le32enc(p, md->md_version);
273 p += sizeof(md->md_version);
274 switch (md->md_version) {
276 eli_metadata_encode_v0(md, &p);
285 eli_metadata_encode_v1v2v3v4v5v6v7(md, &p);
290 (u_int)md->md_version);
297 MD5Final(md->md_hash, &ctx);
298 bcopy(md->md_hash, p, sizeof(md->md_hash));
301 eli_metadata_decode_v0(const u_char *data, struct g_eli_metadata *md)
306 p = data + sizeof(md->md_magic) + sizeof(md->md_version);
307 md->md_flags = le32dec(p); p += sizeof(md->md_flags);
308 md->md_ealgo = le16dec(p); p += sizeof(md->md_ealgo);
309 md->md_keylen = le16dec(p); p += sizeof(md->md_keylen);
310 md->md_provsize = le64dec(p); p += sizeof(md->md_provsize);
311 md->md_sectorsize = le32dec(p); p += sizeof(md->md_sectorsize);
312 md->md_keys = *p; p += sizeof(md->md_keys);
313 md->md_iterations = le32dec(p); p += sizeof(md->md_iterations);
314 bcopy(p, md->md_salt, sizeof(md->md_salt)); p += sizeof(md->md_salt);
315 bcopy(p, md->md_mkeys, sizeof(md->md_mkeys)); p += sizeof(md->md_mkeys);
318 MD5Final(md->md_hash, &ctx);
319 if (bcmp(md->md_hash, p, 16) != 0)
325 eli_metadata_decode_v1v2v3v4v5v6v7(const u_char *data, struct g_eli_metadata *md)
330 p = data + sizeof(md->md_magic) + sizeof(md->md_version);
331 md->md_flags = le32dec(p); p += sizeof(md->md_flags);
332 md->md_ealgo = le16dec(p); p += sizeof(md->md_ealgo);
333 md->md_keylen = le16dec(p); p += sizeof(md->md_keylen);
334 md->md_aalgo = le16dec(p); p += sizeof(md->md_aalgo);
335 md->md_provsize = le64dec(p); p += sizeof(md->md_provsize);
336 md->md_sectorsize = le32dec(p); p += sizeof(md->md_sectorsize);
337 md->md_keys = *p; p += sizeof(md->md_keys);
338 md->md_iterations = le32dec(p); p += sizeof(md->md_iterations);
339 bcopy(p, md->md_salt, sizeof(md->md_salt)); p += sizeof(md->md_salt);
340 bcopy(p, md->md_mkeys, sizeof(md->md_mkeys)); p += sizeof(md->md_mkeys);
343 MD5Final(md->md_hash, &ctx);
344 if (bcmp(md->md_hash, p, 16) != 0)
349 eli_metadata_decode(const u_char *data, struct g_eli_metadata *md)
353 bcopy(data, md->md_magic, sizeof(md->md_magic));
354 if (strcmp(md->md_magic, G_ELI_MAGIC) != 0)
356 md->md_version = le32dec(data + sizeof(md->md_magic));
357 switch (md->md_version) {
359 error = eli_metadata_decode_v0(data, md);
368 error = eli_metadata_decode_v1v2v3v4v5v6v7(data, md);
460 eli_metadata_dump(const struct g_eli_metadata *md)
463 char str[sizeof(md->md_mkeys) * 2 + 1];
466 printf(" magic: %s\n", md->md_magic);
467 printf(" version: %u\n", (u_int)md->md_version);
468 printf(" flags: 0x%x\n", (u_int)md->md_flags);
469 printf(" ealgo: %s\n", g_eli_algo2str(md->md_ealgo));
470 printf(" keylen: %u\n", (u_int)md->md_keylen);
471 if (md->md_flags & G_ELI_FLAG_AUTH)
472 printf(" aalgo: %s\n", g_eli_algo2str(md->md_aalgo));
473 printf(" provsize: %ju\n", (uintmax_t)md->md_provsize);
474 printf("sectorsize: %u\n", (u_int)md->md_sectorsize);
475 printf(" keys: 0x%02x\n", (u_int)md->md_keys);
476 printf("iterations: %u\n", (u_int)md->md_iterations);
478 for (i = 0; i < sizeof(md->md_salt); i++) {
479 str[i * 2] = hex[md->md_salt[i] >> 4];
480 str[i * 2 + 1] = hex[md->md_salt[i] & 0x0f];
484 for (i = 0; i < sizeof(md->md_mkeys); i++) {
485 str[i * 2] = hex[md->md_mkeys[i] >> 4];
486 str[i * 2 + 1] = hex[md->md_mkeys[i] & 0x0f];
491 str[i * 2] = hex[md->md_hash[i] >> 4];
492 str[i * 2 + 1] = hex[md->md_hash[i] & 0x0f];
572 struct g_eli_metadata *md);
574 struct g_provider *bpp, const struct g_eli_metadata *md,
595 int g_eli_mkey_decrypt(const struct g_eli_metadata *md,
617 void g_eli_crypto_hmac_final(struct hmac_ctx *ctx, uint8_t *md, size_t mdsize);
619 const uint8_t *data, size_t datasize, uint8_t *md, size_t mdsize);