diff options
author | Jeremy Allison <jra@samba.org> | 2007-12-26 17:12:36 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2007-12-26 17:12:36 -0800 |
commit | afc93255d183eefb68e45b8ec6275f6a62cf9795 (patch) | |
tree | 712efc0cd3c95d30c0e44055b25807c41533bc1f /source3/smbd/trans2.c | |
parent | 23c965d9472058c566a1b9f8a44964acd5c8a446 (diff) | |
download | samba-afc93255d183eefb68e45b8ec6275f6a62cf9795.tar.gz samba-afc93255d183eefb68e45b8ec6275f6a62cf9795.tar.bz2 samba-afc93255d183eefb68e45b8ec6275f6a62cf9795.zip |
Add SMB encryption. Still fixing client decrypt but
negotiation works.
Jeremy.
(This used to be commit d78045601af787731f0737b8627450018902b104)
Diffstat (limited to 'source3/smbd/trans2.c')
-rw-r--r-- | source3/smbd/trans2.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index e37f6ffbfd..0e34284443 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -2998,6 +2998,55 @@ cap_low = 0x%x, cap_high = 0x%x\n", } break; } + + case SMB_REQUEST_TRANSPORT_ENCRYPTION: + { + NTSTATUS status; + size_t param_len = 0; + size_t data_len = total_data; + + if (!lp_unix_extensions()) { + reply_nterror( + req, + NT_STATUS_INVALID_LEVEL); + return; + } + + DEBUG( 4,("call_trans2setfsinfo: " + "request transport encrption.\n")); + + status = srv_request_encryption_setup(conn, + (unsigned char **)ppdata, + &data_len, + (unsigned char **)pparams, + ¶m_len); + + if (!NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED) && + !NT_STATUS_IS_OK(status)) { + reply_nterror(req, status); + return; + } + + send_trans2_replies(req, + *pparams, + param_len, + *ppdata, + data_len, + max_data_bytes); + + if (NT_STATUS_IS_OK(status)) { + /* Server-side transport + * encryption is now *on*. */ + status = srv_encryption_start(conn); + if (!NT_STATUS_IS_OK(status)) { + exit_server_cleanly( + "Failure in setting " + "up encrypted transport"); + } + } + return; + } + case SMB_FS_QUOTA_INFORMATION: { files_struct *fsp = NULL; |