(_gss_ntlm_set_key): set ntlm v2 keys.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@19529 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -61,6 +61,57 @@ decode_le_uint32(const void *ptr, uint32_t *n)
|
|||||||
*n = (p[0] << 0) | (p[1] << 8) | (p[2] << 16) | (p[3] << 24);
|
*n = (p[0] << 0) | (p[1] << 8) | (p[2] << 16) | (p[3] << 24);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char a2i_signmagic[] =
|
||||||
|
"session key to server-to-client signing key magic constant";
|
||||||
|
const char a2i_sealmagic[] =
|
||||||
|
"session key to server-to-client sealing key magic constant";
|
||||||
|
const char i2a_signmagic[] =
|
||||||
|
"session key to client-to-server signing key magic constant";
|
||||||
|
const char i2a_sealmagic[] =
|
||||||
|
"session key to client-to-server sealing key magic constant";
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
_gss_ntlm_set_key(struct ntlmv2_key *key, int acceptor,
|
||||||
|
unsigned char *data, size_t len)
|
||||||
|
{
|
||||||
|
unsigned char out[16];
|
||||||
|
MD5_CTX ctx;
|
||||||
|
const char *signmagic;
|
||||||
|
const char *sealmagic;
|
||||||
|
|
||||||
|
if (acceptor) {
|
||||||
|
signmagic = a2i_signmagic;
|
||||||
|
sealmagic = a2i_sealmagic;
|
||||||
|
} else {
|
||||||
|
signmagic = i2a_signmagic;
|
||||||
|
sealmagic = i2a_sealmagic;
|
||||||
|
}
|
||||||
|
|
||||||
|
key->seq = 0;
|
||||||
|
|
||||||
|
MD5_Init(&ctx);
|
||||||
|
MD5_Update(&ctx, data, len);
|
||||||
|
MD5_Update(&ctx, signmagic, strlen(signmagic) + 1);
|
||||||
|
MD5_Final(key->signkey, &ctx);
|
||||||
|
|
||||||
|
MD5_Init(&ctx);
|
||||||
|
MD5_Update(&ctx, data, len);
|
||||||
|
MD5_Update(&ctx, sealmagic, strlen(sealmagic) + 1);
|
||||||
|
MD5_Final(out, &ctx);
|
||||||
|
|
||||||
|
RC4_set_key(&key->sealkey, 16, out);
|
||||||
|
key->signsealkey = &key->sealkey;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static OM_uint32
|
static OM_uint32
|
||||||
v1_sign_message(gss_buffer_t in,
|
v1_sign_message(gss_buffer_t in,
|
||||||
RC4_KEY *signkey,
|
RC4_KEY *signkey,
|
||||||
|
Reference in New Issue
Block a user