21.03.2013 Views

Problem - Kevin Tafuro

Problem - Kevin Tafuro

Problem - Kevin Tafuro

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

typedef struct {<br />

struct hash127 hctx;<br />

SPC_KEY_SCHED ekey;<br />

SPC_KEY_SCHED nkey;<br />

} SPC_MAC127_CTX;<br />

void spc_mac127_init(SPC_MAC127_CTX *ctx, unsigned char key[16]) {<br />

int i;<br />

unsigned char pt[16] = {0, };<br />

volatile int32 hk[4];<br />

volatile unsigned char ek[16], nk[16];<br />

SPC_ENCRYPT_INIT(&(ctx->ekey), key, 16);<br />

SPC_DO_ENCRYPT(&(ctx->ekey), pt, (unsigned char *)ek);<br />

pt[15] = 1;<br />

SPC_DO_ENCRYPT(&(ctx->ekey), pt, (unsigned char *)nk);<br />

pt[15] = 2;<br />

SPC_DO_ENCRYPT(&(ctx->ekey), pt, (unsigned char *)hk);<br />

SPC_ENCRYPT_INIT(&(ctx->ekey), (unsigned char *)ek, 16);<br />

SPC_ENCRYPT_INIT(&(ctx->nkey), (unsigned char *)nk, 16);<br />

hk[0] = htonl(hk[0]);<br />

hk[1] = htonl(hk[1]);<br />

hk[2] = htonl(hk[2]);<br />

hk[3] = htonl(hk[3]);<br />

hash127_expand(&(ctx->hctx), (int32 *)hk);<br />

hk[0] = hk[1] = hk[2] = hk[3] = 0;<br />

for (i = 0; i < 16; i++) ek[i] = nk[i] = 0;<br />

}<br />

void spc_mac127(SPC_MAC127_CTX *c, unsigned char *msg, size_t mlen,<br />

unsigned char nonce[16], unsigned char out[16]) {<br />

int i, r = mlen % 4; /* leftover bytes to stick into final block */<br />

int32 x[4] = {0,};<br />

for (i = 0; i hctx), x);<br />

x[0] = htonl(*(int *)out);<br />

x[1] = htonl(*(int *)(out + 4));<br />

x[2] = htonl(*(int *)(out + 8));<br />

x[3] = htonl(*(int *)(out + 12));<br />

SPC_DO_ENCRYPT(&(c->ekey), out, out);<br />

SPC_DO_ENCRYPT(&(c->nkey), nonce, (unsigned char *)x);<br />

((int32 *)out)[0] ^= x[0];<br />

((int32 *)out)[1] ^= x[1];<br />

((int32 *)out)[2] ^= x[2];<br />

((int32 *)out)[3] ^= x[3];<br />

}<br />

See Also<br />

• hash127 home page: http://cr.yp.to/hash127.html<br />

• Recipes 6.9, 6.12, 6.13<br />

290 | Chapter 6: Hashes and Message Authentication<br />

This is the Title of the Book, eMatter Edition<br />

Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!