summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2013-08-18 21:01:35 -0400
committerSimo Sorce <simo@redhat.com>2013-08-19 00:09:56 -0400
commit5f7d6d53d45b91ee196159428b5c149a290d8bed (patch)
treeaa0e1152472954121c9b1f1105a1e8e81aefa9d0 /tests
parent885d7e6bb8a08b739fd3a5eac528445a2524500e (diff)
downloadgss-ntlmssp-5f7d6d53d45b91ee196159428b5c149a290d8bed.tar.gz
gss-ntlmssp-5f7d6d53d45b91ee196159428b5c149a290d8bed.tar.xz
gss-ntlmssp-5f7d6d53d45b91ee196159428b5c149a290d8bed.zip
Test Integrity and Confidentiality
Diffstat (limited to 'tests')
-rw-r--r--tests/ntlmssptest.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/ntlmssptest.c b/tests/ntlmssptest.c
index 9f1b7ad..e4a8bae 100644
--- a/tests/ntlmssptest.c
+++ b/tests/ntlmssptest.c
@@ -890,6 +890,8 @@ int test_gssapi_1(void)
gss_name_t gss_srvname = NULL;
gss_buffer_desc nbuf;
uint32_t retmin, retmaj;
+ char *msg = "Sample, signature checking, message.";
+ gss_buffer_desc message = { strlen(msg), msg };
int ret;
setenv("NTLM_USER_FILE", TEST_USER_FILE, 0);
@@ -989,6 +991,71 @@ int test_gssapi_1(void)
}
gss_release_buffer(&retmin, &cli_token);
+ gss_release_buffer(&retmin, &srv_token);
+
+ retmaj = gssntlm_get_mic(&retmin, cli_ctx, 0, &message, &cli_token);
+ if (retmaj != GSS_S_COMPLETE) {
+ fprintf(stderr, "gssntlm_get_mic(cli) failed! (%d/%d, %s)",
+ retmaj, retmin, strerror(retmin));
+ ret = EINVAL;
+ goto done;
+ }
+
+ retmaj = gssntlm_verify_mic(&retmin, srv_ctx, &message, &cli_token, NULL);
+ if (retmaj != GSS_S_COMPLETE) {
+ fprintf(stderr, "gssntlm_verify_mic(srv) failed! (%d/%d, %s)",
+ retmaj, retmin, strerror(retmin));
+ ret = EINVAL;
+ goto done;
+ }
+
+ gss_release_buffer(&retmin, &cli_token);
+
+ retmaj = gssntlm_get_mic(&retmin, srv_ctx, 0, &message, &srv_token);
+ if (retmaj != GSS_S_COMPLETE) {
+ fprintf(stderr, "gssntlm_get_mic(srv) failed! (%d/%d, %s)",
+ retmaj, retmin, strerror(retmin));
+ ret = EINVAL;
+ goto done;
+ }
+
+ retmaj = gssntlm_verify_mic(&retmin, cli_ctx, &message, &srv_token, NULL);
+ if (retmaj != GSS_S_COMPLETE) {
+ fprintf(stderr, "gssntlm_verify_mic(cli) failed! (%d/%d, %s)",
+ retmaj, retmin, strerror(retmin));
+ ret = EINVAL;
+ goto done;
+ }
+
+ gss_release_buffer(&retmin, &srv_token);
+
+ retmaj = gssntlm_wrap(&retmin, cli_ctx, 1, 0, &message, NULL, &cli_token);
+ if (retmaj != GSS_S_COMPLETE) {
+ fprintf(stderr, "gssntlm_wrap(cli) failed! (%d/%d, %s)",
+ retmaj, retmin, strerror(retmin));
+ ret = EINVAL;
+ goto done;
+ }
+
+ retmaj = gssntlm_unwrap(&retmin, srv_ctx,
+ &cli_token, &srv_token, NULL, NULL);
+ if (retmaj != GSS_S_COMPLETE) {
+ fprintf(stderr, "gssntlm_unwrap(srv) failed! (%d/%d, %s)",
+ retmaj, retmin, strerror(retmin));
+ ret = EINVAL;
+ goto done;
+ }
+
+ if (memcmp(message.value, srv_token.value, srv_token.length) != 0) {
+ fprintf(stderr, "sealing and unsealing failed to return the "
+ "same result (%d/%d, %s)",
+ retmaj, retmin, strerror(retmin));
+ ret = EINVAL;
+ goto done;
+ }
+
+ gss_release_buffer(&retmin, &cli_token);
+ gss_release_buffer(&retmin, &srv_token);
ret = 0;
@@ -999,6 +1066,8 @@ done:
gssntlm_release_name(&retmin, &gss_srvname);
gssntlm_release_cred(&retmin, &cli_cred);
gssntlm_release_cred(&retmin, &srv_cred);
+ gss_release_buffer(&retmin, &cli_token);
+ gss_release_buffer(&retmin, &srv_token);
return ret;
}