+static void
+test_cfx_unwrap(gss_ctx_id_t ctx)
+{
+ gss_buffer_desc message, token;
+ uint8_t msg[] = "message";
+ uint8_t token1[] = "\x05\x04\x00\xFF\x00\x0C\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x6D\x65\x73\x73\x61\x67\x65\xDF"
+ "\x57\xB9\x5E\xA2\xB1\x73\x31\xDB\xCE\x61\x62";
+ uint8_t token2[] = "\x05\x04\x02\xFF\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x72\xBB\xD7\xCF\xDE\xB0\xF9\x20"
+ "\xE2\x9A\x98\xA7\xA4\xE7\xC9\x9B\x30\xD3\xFE\x61\x51\x2E\x1B\x56"
+ "\x88\xB7\x8A\xF5\xA9\xBF\x8F\x82\xB1\xEB\xCC\x88\xE6\x33\x13\xBF"
+ "\x52\x4B\xC0\x3B\x24\x3F\x3E\xF5\xF1\xE0\x64";
+
+ message.value = msg;
+ message.length = sizeof(msg) - 1;
+ token.value = token1;
+ token.length = sizeof(token1) - 1;
+ unwraptest(ctx, &message, &token);
+ token.value = token2;
+ token.length = sizeof(token2) - 1;
+ unwraptest(ctx, &message, &token);
+}
+
+static void
+test_unwrap(gss_ctx_id_t ctx, const struct test *test)
+{
+ gss_buffer_desc message, token;
+ uint8_t msg[] = "message", buf[128];
+
+ assert(test->wrap1len <= sizeof(buf) && test->wrap2len <= sizeof(buf));
+ token.value = buf;
+
+ message.value = msg;
+ message.length = sizeof(msg) - 1;
+ memcpy(buf, test->wrap1, test->wrap1len);
+ token.length = test->wrap1len;
+ unwraptest(ctx, &message, &token);
+ memcpy(buf, test->wrap2, test->wrap2len);
+ token.length = test->wrap2len;
+ unwraptest(ctx, &message, &token);
+}
+