s4-schannel: first step of decoupling schannel from gensec.
authorGünther Deschner <gd@samba.org>
Sun, 13 Sep 2009 16:42:45 +0000 (18:42 +0200)
committerGünther Deschner <gd@samba.org>
Tue, 15 Sep 2009 22:16:04 +0000 (00:16 +0200)
Guenther

source4/auth/gensec/schannel.c
source4/auth/gensec/schannel_sign.c

index 15d64436e39958d601b0e3efe92c76aa55199640..90b90fca9c8c768c7a113655fd6ddf2bfb238209 100644 (file)
@@ -281,6 +281,49 @@ static bool schannel_have_feature(struct gensec_security *gensec_security,
        return false;
 }
 
+static NTSTATUS schannel_seal_packet_wrap(struct gensec_security *gensec_security,
+                                         TALLOC_CTX *mem_ctx,
+                                         uint8_t *data, size_t length,
+                                         const uint8_t *whole_pdu, size_t pdu_length,
+                                         DATA_BLOB *sig)
+{
+       struct schannel_state *state = talloc_get_type(gensec_security->private_data, struct schannel_state);
+
+       return schannel_seal_packet(state, mem_ctx, data, length, sig);
+}
+
+static NTSTATUS schannel_sign_packet_wrap(struct gensec_security *gensec_security,
+                                         TALLOC_CTX *mem_ctx,
+                                         const uint8_t *data, size_t length,
+                                         const uint8_t *whole_pdu, size_t pdu_length,
+                                         DATA_BLOB *sig)
+{
+       struct schannel_state *state = talloc_get_type(gensec_security->private_data, struct schannel_state);
+
+       return schannel_sign_packet(state, mem_ctx, data, length, sig);
+}
+
+static NTSTATUS schannel_check_packet_wrap(struct gensec_security *gensec_security,
+                                          TALLOC_CTX *mem_ctx,
+                                          const uint8_t *data, size_t length,
+                                          const uint8_t *whole_pdu, size_t pdu_length,
+                                          const DATA_BLOB *sig)
+{
+       struct schannel_state *state = talloc_get_type(gensec_security->private_data, struct schannel_state);
+
+       return schannel_check_packet(state, mem_ctx, data, length, sig);
+}
+
+static NTSTATUS schannel_unseal_packet_wrap(struct gensec_security *gensec_security,
+                                           TALLOC_CTX *mem_ctx,
+                                           uint8_t *data, size_t length,
+                                           const uint8_t *whole_pdu, size_t pdu_length,
+                                           const DATA_BLOB *sig)
+{
+       struct schannel_state *state = talloc_get_type(gensec_security->private_data, struct schannel_state);
+
+       return schannel_unseal_packet(state, mem_ctx, data, length, sig);
+}
 
 static const struct gensec_security_ops gensec_schannel_security_ops = {
        .name           = "schannel",
@@ -288,10 +331,10 @@ static const struct gensec_security_ops gensec_schannel_security_ops = {
        .client_start   = schannel_client_start,
        .server_start   = schannel_server_start,
        .update         = schannel_update,
-       .seal_packet    = schannel_seal_packet,
-       .sign_packet    = schannel_sign_packet,
-       .check_packet   = schannel_check_packet,
-       .unseal_packet  = schannel_unseal_packet,
+       .seal_packet    = schannel_seal_packet_wrap,
+       .sign_packet    = schannel_sign_packet_wrap,
+       .check_packet   = schannel_check_packet_wrap,
+       .unseal_packet  = schannel_unseal_packet_wrap,
        .session_key    = schannel_session_key,
        .session_info   = schannel_session_info,
        .sig_size       = schannel_sig_size,
index 1547175658f3c2ed2dffcb45aa94e23330609eb2..ca066b102d867145dc2d8f0aae6cb2bf1c6fab1e 100644 (file)
@@ -99,14 +99,11 @@ static void schannel_digest(const uint8_t sess_key[16],
 /*
   unseal a packet
 */
-NTSTATUS schannel_unseal_packet(struct gensec_security *gensec_security,
+NTSTATUS schannel_unseal_packet(struct schannel_state *state,
                                TALLOC_CTX *mem_ctx,
                                uint8_t *data, size_t length,
-                               const uint8_t *whole_pdu, size_t pdu_length,
                                const DATA_BLOB *sig)
 {
-       struct schannel_state *state = talloc_get_type(gensec_security->private_data, struct schannel_state);
-
        uint8_t digest_final[16];
        uint8_t confounder[8];
        uint8_t seq_num[8];
@@ -150,14 +147,11 @@ NTSTATUS schannel_unseal_packet(struct gensec_security *gensec_security,
 /*
   check the signature on a packet
 */
-NTSTATUS schannel_check_packet(struct gensec_security *gensec_security,
+NTSTATUS schannel_check_packet(struct schannel_state *state,
                               TALLOC_CTX *mem_ctx,
                               const uint8_t *data, size_t length,
-                              const uint8_t *whole_pdu, size_t pdu_length,
                               const DATA_BLOB *sig)
 {
-       struct schannel_state *state = talloc_get_type(gensec_security->private_data, struct schannel_state);
-
        uint8_t digest_final[16];
        uint8_t seq_num[8];
        static const uint8_t netsec_sig[8] = NETSEC_SIGN_SIGNATURE;
@@ -198,14 +192,11 @@ NTSTATUS schannel_check_packet(struct gensec_security *gensec_security,
 /*
   seal a packet
 */
-NTSTATUS schannel_seal_packet(struct gensec_security *gensec_security,
+NTSTATUS schannel_seal_packet(struct schannel_state *state,
                              TALLOC_CTX *mem_ctx,
                              uint8_t *data, size_t length,
-                             const uint8_t *whole_pdu, size_t pdu_length,
                              DATA_BLOB *sig)
 {
-       struct schannel_state *state = talloc_get_type(gensec_security->private_data, struct schannel_state);
-
        uint8_t digest_final[16];
        uint8_t confounder[8];
        uint8_t seq_num[8];
@@ -246,14 +237,11 @@ NTSTATUS schannel_seal_packet(struct gensec_security *gensec_security,
 /*
   sign a packet
 */
-NTSTATUS schannel_sign_packet(struct gensec_security *gensec_security,
+NTSTATUS schannel_sign_packet(struct schannel_state *state,
                              TALLOC_CTX *mem_ctx,
                              const uint8_t *data, size_t length,
-                             const uint8_t *whole_pdu, size_t pdu_length,
                              DATA_BLOB *sig)
 {
-       struct schannel_state *state = talloc_get_type(gensec_security->private_data, struct schannel_state);
-
        uint8_t digest_final[16];
        uint8_t seq_num[8];
        static const uint8_t netsec_sig[8] = NETSEC_SIGN_SIGNATURE;