diff options
author | Andrew Bartlett <abartlet@samba.org> | 2004-05-09 13:07:23 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:51:51 -0500 |
commit | 59c8f48f0dfc0e4d42623fe1595cd9773ac5d15f (patch) | |
tree | 231e322dee12b1a9573a0853fcaa1b0ba3a3f1f3 | |
parent | dce84ffd379012812170f68f7de8aab73123f0b3 (diff) | |
download | samba-59c8f48f0dfc0e4d42623fe1595cd9773ac5d15f.tar.gz samba-59c8f48f0dfc0e4d42623fe1595cd9773ac5d15f.tar.bz2 samba-59c8f48f0dfc0e4d42623fe1595cd9773ac5d15f.zip |
r611: Fix breakage from my last commit:
Now that all session keys are DATA_BLOBs, fix the callers.
This assumes some things about the behaviour of certain crypto
algorithms, without the ability to test it on session keys != 16 bytes
in length. We will just need to retest when we get the KRB5 support
in (DES keys are 8 bytes).
Andrew Bartlett
(This used to be commit e4355a7ec1eba92bdecef8cc478272897276dbae)
-rw-r--r-- | source4/libcli/auth/session.c | 12 | ||||
-rw-r--r-- | source4/torture/rpc/lsa.c | 8 |
2 files changed, 10 insertions, 10 deletions
diff --git a/source4/libcli/auth/session.c b/source4/libcli/auth/session.c index 946b0fe62f..77eb1a6527 100644 --- a/source4/libcli/auth/session.c +++ b/source4/libcli/auth/session.c @@ -29,7 +29,7 @@ before calling, the out blob must be initialised to be the same size as the in blob */ -void sess_crypt_blob(DATA_BLOB *out, const DATA_BLOB *in, const uint8 session_key[16], +void sess_crypt_blob(DATA_BLOB *out, const DATA_BLOB *in, const DATA_BLOB *session_key, BOOL forward) { int i, k; @@ -42,10 +42,10 @@ void sess_crypt_blob(DATA_BLOB *out, const DATA_BLOB *in, const uint8 session_ke memset(bin, 0, 8); memcpy(bin, &in->data[i], MIN(8, in->length-i)); - if (k + 7 > 16) { - k = (16 - k); + if (k + 7 > session_key->length) { + k = (session_key->length - k); } - memcpy(key, &session_key[k], 7); + memcpy(key, &session_key->data[k], 7); smbhash(bout, bin, key, forward?1:0); @@ -62,7 +62,7 @@ void sess_crypt_blob(DATA_BLOB *out, const DATA_BLOB *in, const uint8 session_ke caller should free using data_blob_free() */ -DATA_BLOB sess_encrypt_string(const char *str, const uint8 session_key[16]) +DATA_BLOB sess_encrypt_string(const char *str, const DATA_BLOB *session_key) { DATA_BLOB ret, src; int slen = strlen(str); @@ -96,7 +96,7 @@ DATA_BLOB sess_encrypt_string(const char *str, const uint8 session_key[16]) caller should free the returned string */ -char *sess_decrypt_string(DATA_BLOB *blob, const uint8 session_key[16]) +char *sess_decrypt_string(DATA_BLOB *blob, const DATA_BLOB *session_key) { DATA_BLOB out; int slen; diff --git a/source4/torture/rpc/lsa.c b/source4/torture/rpc/lsa.c index 0b5f825ac2..679e1dbac8 100644 --- a/source4/torture/rpc/lsa.c +++ b/source4/torture/rpc/lsa.c @@ -334,7 +334,7 @@ static BOOL test_CreateSecret(struct dcerpc_pipe *p, struct lsa_DATA_BUF_PTR bufp1; DATA_BLOB enc_key; BOOL ret = True; - uint8 session_key[16]; + DATA_BLOB session_key; NTTIME old_mtime, new_mtime; DATA_BLOB blob1, blob2; const char *secret1 = "abcdef12345699qwerty"; @@ -370,13 +370,13 @@ static BOOL test_CreateSecret(struct dcerpc_pipe *p, ret = False; } - status = dcerpc_fetch_session_key(p, session_key); + status = dcerpc_fetch_session_key(p, &session_key); if (!NT_STATUS_IS_OK(status)) { printf("dcerpc_fetch_session_key failed - %s\n", nt_errstr(status)); ret = False; } - enc_key = sess_encrypt_string(secret1, session_key); + enc_key = sess_encrypt_string(secret1, &session_key); r3.in.handle = &sec_handle; r3.in.new_val = &buf1; @@ -418,7 +418,7 @@ static BOOL test_CreateSecret(struct dcerpc_pipe *p, blob2 = data_blob(NULL, blob1.length); - secret2 = sess_decrypt_string(&blob1, session_key); + secret2 = sess_decrypt_string(&blob1, &session_key); printf("returned secret '%s'\n", secret2); |