summaryrefslogtreecommitdiff
path: root/source4/rpc_server/dcerpc_server.h
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2004-06-04 09:46:46 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:56:25 -0500
commit5165fec02e0e489ac63c3cb71bed31dea9fde644 (patch)
treef253af775d6151ef9e3eb5d01973f2f177febd19 /source4/rpc_server/dcerpc_server.h
parentb0d4ed741f9fcb31ef124c1375db13cd6874131e (diff)
downloadsamba-5165fec02e0e489ac63c3cb71bed31dea9fde644.tar.gz
samba-5165fec02e0e489ac63c3cb71bed31dea9fde644.tar.bz2
samba-5165fec02e0e489ac63c3cb71bed31dea9fde644.zip
r1004: continue tridge's work on dcerpc server auth/crypto code
I made it much more generic, and we should be able to add a module interface to this code, so that other DCERPC_AUTH types can be added via modules... metze (This used to be commit d09abeb686c43c62322205689273d1b417113004)
Diffstat (limited to 'source4/rpc_server/dcerpc_server.h')
-rw-r--r--source4/rpc_server/dcerpc_server.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/source4/rpc_server/dcerpc_server.h b/source4/rpc_server/dcerpc_server.h
index bdda8f252f..44726b5828 100644
--- a/source4/rpc_server/dcerpc_server.h
+++ b/source4/rpc_server/dcerpc_server.h
@@ -45,6 +45,7 @@ struct dcesrv_ep_description {
struct dcesrv_connection;
struct dcesrv_call_state;
+struct dcesrv_auth;
/* the dispatch functions for an interface take this form */
typedef NTSTATUS (*dcesrv_dispatch_fn_t)(struct dcesrv_call_state *, TALLOC_CTX *, void *);
@@ -93,10 +94,30 @@ struct dcesrv_handle {
void (*destroy)(struct dcesrv_connection *, struct dcesrv_handle *);
};
+struct dcesrv_cyrpto_ops {
+ const char *name;
+ uint8 auth_type;
+ NTSTATUS (*start)(struct dcesrv_auth *auth);
+ NTSTATUS (*update)(struct dcesrv_auth *auth, TALLOC_CTX *out_mem_ctx,
+ const DATA_BLOB in, DATA_BLOB *out);
+ NTSTATUS (*seal)(struct dcesrv_auth *auth, TALLOC_CTX *sig_mem_ctx,
+ uint8_t *data, size_t length, DATA_BLOB *sig);
+ NTSTATUS (*sign)(struct dcesrv_auth *auth, TALLOC_CTX *sig_mem_ctx,
+ const uint8_t *data, size_t length, DATA_BLOB *sig);
+ NTSTATUS (*check_sig)(struct dcesrv_auth *auth, TALLOC_CTX *sig_mem_ctx,
+ const uint8_t *data, size_t length, const DATA_BLOB *sig);
+ NTSTATUS (*unseal)(struct dcesrv_auth *auth, TALLOC_CTX *sig_mem_ctx,
+ uint8_t *data, size_t length, DATA_BLOB *sig);
+ void (*end)(struct dcesrv_auth *auth);
+};
+
/* hold the authentication state information */
struct dcesrv_auth {
- void *crypto_state;
struct dcerpc_auth *auth_info;
+ struct {
+ void *private_data;
+ const struct dcesrv_cyrpto_ops *ops;
+ } crypto_ctx;
};