lib/hmacmd5.c

ソースコードを見る。

関数

void hmac_md5_init_rfc2104 (const unsigned char *key, int key_len, HMACMD5Context *ctx)
void hmac_md5_init_limK_to_64 (const unsigned char *key, int key_len, HMACMD5Context *ctx)
void hmac_md5_update (const unsigned char *text, int text_len, HMACMD5Context *ctx)
void hmac_md5_final (unsigned char *digest, HMACMD5Context *ctx)
void hmac_md5 (unsigned char key[16], unsigned char *data, int data_len, unsigned char *digest)


関数

void hmac_md5_init_rfc2104 ( const unsigned char *  key,
int  key_len,
HMACMD5Context ctx 
)

hmacmd5.c32 行で定義されています。

参照先 ctxMD5Final()MD5Init()MD5Update().

参照元 creds_init_128().

00033 {
00034         int i;
00035         unsigned char tk[16];
00036 
00037         /* if key is longer than 64 bytes reset it to key=MD5(key) */
00038         if (key_len > 64) {
00039                 struct MD5Context tctx;
00040 
00041                 MD5Init(&tctx);
00042                 MD5Update(&tctx, key, key_len);
00043                 MD5Final(tk, &tctx);
00044 
00045                 key = tk;
00046                 key_len = 16;
00047         }
00048 
00049         /* start out by storing key in pads */
00050         ZERO_STRUCT(ctx->k_ipad);
00051         ZERO_STRUCT(ctx->k_opad);
00052         memcpy( ctx->k_ipad, key, key_len);
00053         memcpy( ctx->k_opad, key, key_len);
00054 
00055         /* XOR key with ipad and opad values */
00056         for (i=0; i<64; i++) {
00057                 ctx->k_ipad[i] ^= 0x36;
00058                 ctx->k_opad[i] ^= 0x5c;
00059         }
00060 
00061         MD5Init(&ctx->ctx);
00062         MD5Update(&ctx->ctx, ctx->k_ipad, 64);  
00063 }

void hmac_md5_init_limK_to_64 ( const unsigned char *  key,
int  key_len,
HMACMD5Context ctx 
)

hmacmd5.c69 行で定義されています。

参照先 ctxMD5Init()MD5Update().

参照元 hmac_md5()ntlmssp_make_packet_signature()ntv2_owf_gen()SMBOWFencrypt_ntv2()SMBsesskeygen_ntv2().

00071 {
00072         int i;
00073 
00074         /* if key is longer than 64 bytes truncate it */
00075         if (key_len > 64) {
00076                 key_len = 64;
00077         }
00078 
00079         /* start out by storing key in pads */
00080         ZERO_STRUCT(ctx->k_ipad);
00081         ZERO_STRUCT(ctx->k_opad);
00082         memcpy( ctx->k_ipad, key, key_len);
00083         memcpy( ctx->k_opad, key, key_len);
00084 
00085         /* XOR key with ipad and opad values */
00086         for (i=0; i<64; i++) {
00087                 ctx->k_ipad[i] ^= 0x36;
00088                 ctx->k_opad[i] ^= 0x5c;
00089         }
00090 
00091         MD5Init(&ctx->ctx);
00092         MD5Update(&ctx->ctx, ctx->k_ipad, 64);  
00093 }

void hmac_md5_update ( const unsigned char *  text,
int  text_len,
HMACMD5Context ctx 
)

hmacmd5.c99 行で定義されています。

参照先 ctxMD5Update().

参照元 creds_init_128()hmac_md5()ntlmssp_make_packet_signature()ntv2_owf_gen()SMBOWFencrypt_ntv2()SMBsesskeygen_ntv2().

00100 {
00101         MD5Update(&ctx->ctx, text, text_len); /* then text of datagram */
00102 }

void hmac_md5_final ( unsigned char *  digest,
HMACMD5Context ctx 
)

hmacmd5.c107 行で定義されています。

参照先 ctxMD5Final()MD5Init()MD5Update().

参照元 creds_init_128()hmac_md5()ntlmssp_make_packet_signature()ntv2_owf_gen()SMBOWFencrypt_ntv2()SMBsesskeygen_ntv2().

00109 {
00110         struct MD5Context ctx_o;
00111 
00112         MD5Final(digest, &ctx->ctx);          
00113 
00114         MD5Init(&ctx_o);
00115         MD5Update(&ctx_o, ctx->k_opad, 64);   
00116         MD5Update(&ctx_o, digest, 16); 
00117         MD5Final(digest, &ctx_o);
00118 }

void hmac_md5 ( unsigned char  key[16],
unsigned char *  data,
int  data_len,
unsigned char *  digest 
)

hmacmd5.c125 行で定義されています。

参照先 ctxhmac_md5_final()hmac_md5_init_limK_to_64()hmac_md5_update().

参照元 ntlmssp_client_challenge()ntlmssp_server_auth().

00126 {
00127         HMACMD5Context ctx;
00128         hmac_md5_init_limK_to_64(key, 16, &ctx);
00129         if (data_len != 0)
00130         {
00131                 hmac_md5_update(data, data_len, &ctx);
00132         }
00133         hmac_md5_final(digest, &ctx);
00134 }


Sambaに対してSat Aug 29 21:23:36 2009に生成されました。  doxygen 1.4.7