summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2012-08-22 10:36:16 +0200
committerSimo Sorce <simo@redhat.com>2012-08-28 17:35:16 +0200
commit39fd2e7d696fa328e5f1034e91d4f7eefdfe6b4b (patch)
tree48c4c30ed40fa459329dee0b03b9ada517dee98d
parent4a181bb847b5b85439beae3788a83e27c1cdcf70 (diff)
downloadgss-proxy-39fd2e7d696fa328e5f1034e91d4f7eefdfe6b4b.tar.gz
gss-proxy-39fd2e7d696fa328e5f1034e91d4f7eefdfe6b4b.tar.xz
gss-proxy-39fd2e7d696fa328e5f1034e91d4f7eefdfe6b4b.zip
Add interpser tests for wrap/unwrap
-rw-r--r--proxy/tests/interposetest.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/proxy/tests/interposetest.c b/proxy/tests/interposetest.c
index 61cf2b3..ccf0186 100644
--- a/proxy/tests/interposetest.c
+++ b/proxy/tests/interposetest.c
@@ -131,6 +131,8 @@ void run_client(struct aproc *data)
gss_name_t name = GSS_C_NO_NAME;
gss_ctx_id_t ctx = GSS_C_NO_CONTEXT;
gss_cred_id_t cred_handle = GSS_C_NO_CREDENTIAL;
+ gss_buffer_desc msg_buf = GSS_C_EMPTY_BUFFER;
+ char *message = "SECRET";
int ret = 0;
target_buf.value = (void *)data->target;
@@ -191,6 +193,23 @@ void run_client(struct aproc *data)
} while (ret_maj == GSS_S_CONTINUE_NEEDED);
+ /* test encryption */
+ msg_buf.length = strlen(message) + 1;
+ msg_buf.value = (void *)message;
+ ret_maj = gss_wrap(&ret_min, ctx, 1, 0, &msg_buf, NULL, &out_token);
+ if (ret_maj != GSS_S_COMPLETE) {
+ fprintf(stdout, "Failed to wrap message.\n", ret_maj);
+ gp_log_failure(GSS_C_NO_OID, ret_maj, ret_min);
+ goto done;
+ }
+
+ ret = gp_send_buffer(data->srv_pipe[1], out_token.value, out_token.length);
+ if (ret) {
+ goto done;
+ }
+
+ gss_release_buffer(&ret_min, &out_token);
+
fprintf(stdout, "client: Success!\n");
done:
@@ -368,6 +387,28 @@ void run_server(struct aproc *data)
}
}
+ gss_release_buffer(&ret_min, &out_token);
+
+ ret = gp_recv_buffer(data->srv_pipe[0], buffer, &buflen);
+ if (ret) {
+ fprintf(stdout, "Failed to get data from client!\n");
+ goto done;
+ }
+ in_token.value = buffer;
+ in_token.length = buflen;
+
+ ret_maj = gss_unwrap(&ret_min, context_handle,
+ &in_token, &out_token, NULL, NULL);
+ if (ret_maj != GSS_S_COMPLETE) {
+ fprintf(stdout, "Failed to unwrap message.\n", ret_maj);
+ gp_log_failure(GSS_C_NO_OID, ret_maj, ret_min);
+ goto done;
+ }
+
+ fprintf(stdout, "Server, RECV: %s\n", (char *)out_token.value);
+
+ gss_release_buffer(&ret_min, &out_token);
+
done:
gss_release_name(&ret_min, &src_name);
gss_release_buffer(&ret_min, &out_token);