/* Add remaining array entries to the ccache as credentials. */
for (i = 1; i < len; i++) {
- if (json_to_creds(context, k5_json_array_get(array, 1), &creds))
+ if (json_to_creds(context, k5_json_array_get(array, i), &creds))
goto invalid;
ret = krb5_cc_store_cred(context, ccache, &creds);
krb5_free_cred_contents(context, &creds);
(void)gss_release_buffer(&minor, &atok);
}
+void
+export_import_cred(gss_cred_id_t *cred)
+{
+ OM_uint32 major, minor;
+ gss_buffer_desc buf;
+
+ major = gss_export_cred(&minor, *cred, &buf);
+ check_gsserr("gss_export_cred", major, minor);
+ (void)gss_release_cred(&minor, cred);
+ major = gss_import_cred(&minor, &buf, cred);
+ check_gsserr("gss_import_cred", major, minor);
+ (void)gss_release_buffer(&minor, &buf);
+}
+
void
display_canon_name(const char *tag, gss_name_t name, gss_OID mech)
{
gss_name_t *src_name, gss_OID *amech,
gss_cred_id_t *deleg_cred);
+/* Export *cred to a token, then release *cred and replace it by re-importing
+ * the token. */
+void export_import_cred(gss_cred_id_t *cred);
+
/* Display name as canonicalized to mech, preceded by tag. */
void display_canon_name(const char *tag, gss_name_t name, gss_OID mech);
exit(1);
}
-/* Export *cred to a token, then release *cred and replace it by re-importing
- * the token. */
-static void
-export_import_cred(gss_cred_id_t *cred)
-{
- OM_uint32 major, minor;
- gss_buffer_desc buf;
-
- major = gss_export_cred(&minor, *cred, &buf);
- check_gsserr("gss_export_cred", major, minor);
- (void)gss_release_cred(&minor, cred);
- major = gss_import_cred(&minor, &buf, cred);
- check_gsserr("gss_import_cred", major, minor);
- (void)gss_release_buffer(&minor, &buf);
-}
-
int
main(int argc, char *argv[])
{
#!/usr/bin/python
from k5test import *
-# Test gss_export_cred and gss_import_cred.
+# Test gss_export_cred and gss_import_cred for initiator creds,
+# acceptor creds, and traditional delegated creds. t_s4u.py tests
+# exporting and importing a synthesized S4U2Proxy delegated
+# credential.
# Make up a filename to hold user's initial credentials.
def ccache_savefile(realm):
goto cleanup;
}
+ /* Take the opportunity to test cred export/import on the synthesized
+ * S4U2Proxy delegated cred. */
+ export_import_cred(&deleg_cred);
+
/* Store the delegated credentials. */
ret = krb5_cc_resolve(context, storage_ccname, &storage_ccache);
check_k5err(context, "krb5_cc_resolve", ret);