Lines Matching refs:md

228 eli_metadata_encode_v0(struct g_eli_metadata *md, u_char **datap)
233 le32enc(p, md->md_flags); p += sizeof(md->md_flags);
234 le16enc(p, md->md_ealgo); p += sizeof(md->md_ealgo);
235 le16enc(p, md->md_keylen); p += sizeof(md->md_keylen);
236 le64enc(p, md->md_provsize); p += sizeof(md->md_provsize);
237 le32enc(p, md->md_sectorsize); p += sizeof(md->md_sectorsize);
238 *p = md->md_keys; p += sizeof(md->md_keys);
239 le32enc(p, md->md_iterations); p += sizeof(md->md_iterations);
240 bcopy(md->md_salt, p, sizeof(md->md_salt)); p += sizeof(md->md_salt);
241 bcopy(md->md_mkeys, p, sizeof(md->md_mkeys)); p += sizeof(md->md_mkeys);
245 eli_metadata_encode_v1v2v3v4v5v6v7(struct g_eli_metadata *md, u_char **datap)
250 le32enc(p, md->md_flags); p += sizeof(md->md_flags);
251 le16enc(p, md->md_ealgo); p += sizeof(md->md_ealgo);
252 le16enc(p, md->md_keylen); p += sizeof(md->md_keylen);
253 le16enc(p, md->md_aalgo); p += sizeof(md->md_aalgo);
254 le64enc(p, md->md_provsize); p += sizeof(md->md_provsize);
255 le32enc(p, md->md_sectorsize); p += sizeof(md->md_sectorsize);
256 *p = md->md_keys; p += sizeof(md->md_keys);
257 le32enc(p, md->md_iterations); p += sizeof(md->md_iterations);
258 bcopy(md->md_salt, p, sizeof(md->md_salt)); p += sizeof(md->md_salt);
259 bcopy(md->md_mkeys, p, sizeof(md->md_mkeys)); p += sizeof(md->md_mkeys);
263 eli_metadata_encode(struct g_eli_metadata *md, u_char *data)
269 bcopy(md->md_magic, p, sizeof(md->md_magic));
270 p += sizeof(md->md_magic);
271 le32enc(p, md->md_version);
272 p += sizeof(md->md_version);
273 switch (md->md_version) {
275 eli_metadata_encode_v0(md, &p);
284 eli_metadata_encode_v1v2v3v4v5v6v7(md, &p);
289 (u_int)md->md_version);
296 MD5Final(md->md_hash, &ctx);
297 bcopy(md->md_hash, p, sizeof(md->md_hash));
300 eli_metadata_decode_v0(const u_char *data, struct g_eli_metadata *md)
305 p = data + sizeof(md->md_magic) + sizeof(md->md_version);
306 md->md_flags = le32dec(p); p += sizeof(md->md_flags);
307 md->md_ealgo = le16dec(p); p += sizeof(md->md_ealgo);
308 md->md_keylen = le16dec(p); p += sizeof(md->md_keylen);
309 md->md_provsize = le64dec(p); p += sizeof(md->md_provsize);
310 md->md_sectorsize = le32dec(p); p += sizeof(md->md_sectorsize);
311 md->md_keys = *p; p += sizeof(md->md_keys);
312 md->md_iterations = le32dec(p); p += sizeof(md->md_iterations);
313 bcopy(p, md->md_salt, sizeof(md->md_salt)); p += sizeof(md->md_salt);
314 bcopy(p, md->md_mkeys, sizeof(md->md_mkeys)); p += sizeof(md->md_mkeys);
317 MD5Final(md->md_hash, &ctx);
318 if (bcmp(md->md_hash, p, 16) != 0)
324 eli_metadata_decode_v1v2v3v4v5v6v7(const u_char *data, struct g_eli_metadata *md)
329 p = data + sizeof(md->md_magic) + sizeof(md->md_version);
330 md->md_flags = le32dec(p); p += sizeof(md->md_flags);
331 md->md_ealgo = le16dec(p); p += sizeof(md->md_ealgo);
332 md->md_keylen = le16dec(p); p += sizeof(md->md_keylen);
333 md->md_aalgo = le16dec(p); p += sizeof(md->md_aalgo);
334 md->md_provsize = le64dec(p); p += sizeof(md->md_provsize);
335 md->md_sectorsize = le32dec(p); p += sizeof(md->md_sectorsize);
336 md->md_keys = *p; p += sizeof(md->md_keys);
337 md->md_iterations = le32dec(p); p += sizeof(md->md_iterations);
338 bcopy(p, md->md_salt, sizeof(md->md_salt)); p += sizeof(md->md_salt);
339 bcopy(p, md->md_mkeys, sizeof(md->md_mkeys)); p += sizeof(md->md_mkeys);
342 MD5Final(md->md_hash, &ctx);
343 if (bcmp(md->md_hash, p, 16) != 0)
348 eli_metadata_decode(const u_char *data, struct g_eli_metadata *md)
352 bcopy(data, md->md_magic, sizeof(md->md_magic));
353 if (strcmp(md->md_magic, G_ELI_MAGIC) != 0)
355 md->md_version = le32dec(data + sizeof(md->md_magic));
356 switch (md->md_version) {
358 error = eli_metadata_decode_v0(data, md);
367 error = eli_metadata_decode_v1v2v3v4v5v6v7(data, md);
459 eli_metadata_dump(const struct g_eli_metadata *md)
462 char str[sizeof(md->md_mkeys) * 2 + 1];
465 printf(" magic: %s\n", md->md_magic);
466 printf(" version: %u\n", (u_int)md->md_version);
467 printf(" flags: 0x%x\n", (u_int)md->md_flags);
468 printf(" ealgo: %s\n", g_eli_algo2str(md->md_ealgo));
469 printf(" keylen: %u\n", (u_int)md->md_keylen);
470 if (md->md_flags & G_ELI_FLAG_AUTH)
471 printf(" aalgo: %s\n", g_eli_algo2str(md->md_aalgo));
472 printf(" provsize: %ju\n", (uintmax_t)md->md_provsize);
473 printf("sectorsize: %u\n", (u_int)md->md_sectorsize);
474 printf(" keys: 0x%02x\n", (u_int)md->md_keys);
475 printf("iterations: %u\n", (u_int)md->md_iterations);
477 for (i = 0; i < sizeof(md->md_salt); i++) {
478 str[i * 2] = hex[md->md_salt[i] >> 4];
479 str[i * 2 + 1] = hex[md->md_salt[i] & 0x0f];
483 for (i = 0; i < sizeof(md->md_mkeys); i++) {
484 str[i * 2] = hex[md->md_mkeys[i] >> 4];
485 str[i * 2 + 1] = hex[md->md_mkeys[i] & 0x0f];
490 str[i * 2] = hex[md->md_hash[i] >> 4];
491 str[i * 2 + 1] = hex[md->md_hash[i] & 0x0f];
571 struct g_eli_metadata *md);
573 struct g_provider *bpp, const struct g_eli_metadata *md,
594 int g_eli_mkey_decrypt(const struct g_eli_metadata *md,
616 void g_eli_crypto_hmac_final(struct hmac_ctx *ctx, uint8_t *md, size_t mdsize);
618 const uint8_t *data, size_t datasize, uint8_t *md, size_t mdsize);