- return data_blob("SystemLibraryDTC", 16);
-}
-
-/*******************************************************************
- Handle NTLMSSP.
- ********************************************************************/
-
-static bool add_ntlmssp_auth(pipes_struct *p)
-{
- enum dcerpc_AuthLevel auth_level = p->auth.auth_level;
- DATA_BLOB auth_blob = data_blob_null;
- NTSTATUS status;
-
- /* FIXME: Is this right ?
- * Keeping only to avoid changing semantics during refactoring
- * --simo
- */
- if (auth_level != DCERPC_AUTH_LEVEL_PRIVACY) {
- auth_level = DCERPC_AUTH_LEVEL_INTEGRITY;
- }
-
- /* Generate the auth blob. */
- switch (auth_level) {
- case DCERPC_AUTH_LEVEL_PRIVACY:
- /* Data portion is encrypted. */
- status = auth_ntlmssp_seal_packet(
- p->auth.a_u.auth_ntlmssp_state,
- (TALLOC_CTX *)p->out_data.frag.data,
- &p->out_data.frag.data[DCERPC_RESPONSE_LENGTH],
- p->out_data.frag.length
- - DCERPC_RESPONSE_LENGTH
- - DCERPC_AUTH_TRAILER_LENGTH,
- p->out_data.frag.data,
- p->out_data.frag.length,
- &auth_blob);
- break;
-
- case DCERPC_AUTH_LEVEL_INTEGRITY:
- /* Data is signed. */
- status = auth_ntlmssp_sign_packet(
- p->auth.a_u.auth_ntlmssp_state,
- (TALLOC_CTX *)p->out_data.frag.data,
- &p->out_data.frag.data[DCERPC_RESPONSE_LENGTH],
- p->out_data.frag.length
- - DCERPC_RESPONSE_LENGTH
- - DCERPC_AUTH_TRAILER_LENGTH,
- p->out_data.frag.data,
- p->out_data.frag.length,
- &auth_blob);
- break;
-
- default:
- status = NT_STATUS_INTERNAL_ERROR;
- return false;
- }
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("Failed to add NTLMSSP auth blob: %s\n",
- nt_errstr(status)));
- data_blob_free(&p->out_data.frag);
- return false;
- }
-
- /* Finally append the auth blob. */
- if (!data_blob_append(p->mem_ctx, &p->out_data.frag,
- auth_blob.data, auth_blob.length)) {
- DEBUG(0, ("Failed to add %u bytes auth blob.\n",
- (unsigned int)auth_blob.length));
- data_blob_free(&p->out_data.frag);
- return False;
- }
- data_blob_free(&auth_blob);
-
- return true;
-}
-
-/*******************************************************************
- Append a schannel authenticated fragment.
- ********************************************************************/
-
-static bool add_schannel_auth(pipes_struct *p)
-{
- DATA_BLOB auth_blob = data_blob_null;
- NTSTATUS status;
-
- /* Schannel processing. */
- switch (p->auth.auth_level) {
- case DCERPC_AUTH_LEVEL_PRIVACY:
- status = netsec_outgoing_packet(
- p->auth.a_u.schannel_auth,
- (TALLOC_CTX *)p->out_data.frag.data,
- true,
- &p->out_data.frag.data[DCERPC_RESPONSE_LENGTH],
- p->out_data.frag.length
- - DCERPC_RESPONSE_LENGTH
- - DCERPC_AUTH_TRAILER_LENGTH,
- &auth_blob);
- break;
-
- case DCERPC_AUTH_LEVEL_INTEGRITY:
- status = netsec_outgoing_packet(
- p->auth.a_u.schannel_auth,
- (TALLOC_CTX *)p->out_data.frag.data,
- false,
- &p->out_data.frag.data[DCERPC_RESPONSE_LENGTH],
- p->out_data.frag.length
- - DCERPC_RESPONSE_LENGTH
- - DCERPC_AUTH_TRAILER_LENGTH,
- &auth_blob);
- break;
-
- default:
- status = NT_STATUS_INTERNAL_ERROR;
- break;
- }
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("Failed to add SCHANNEL auth blob: %s\n",
- nt_errstr(status)));
- data_blob_free(&p->out_data.frag);
- return false;
- }
-
- if (DEBUGLEVEL >= 10) {
- dump_NL_AUTH_SIGNATURE(talloc_tos(), &auth_blob);
- }
-
- if (!data_blob_append(p->mem_ctx, &p->out_data.frag,
- auth_blob.data, auth_blob.length)) {
- DEBUG(0, ("Failed to add %u bytes auth blob.\n",
- (unsigned int)auth_blob.length));
- data_blob_free(&p->out_data.frag);
- return false;
- }
- data_blob_free(&auth_blob);
-
- return true;