1bbd80c28SJacques Vidrine /* 2bbd80c28SJacques Vidrine * Copyright (c) 2003 Kungliga Tekniska H�gskolan 3bbd80c28SJacques Vidrine * (Royal Institute of Technology, Stockholm, Sweden). 4bbd80c28SJacques Vidrine * All rights reserved. 5bbd80c28SJacques Vidrine * 6bbd80c28SJacques Vidrine * Redistribution and use in source and binary forms, with or without 7bbd80c28SJacques Vidrine * modification, are permitted provided that the following conditions 8bbd80c28SJacques Vidrine * are met: 9bbd80c28SJacques Vidrine * 10bbd80c28SJacques Vidrine * 1. Redistributions of source code must retain the above copyright 11bbd80c28SJacques Vidrine * notice, this list of conditions and the following disclaimer. 12bbd80c28SJacques Vidrine * 13bbd80c28SJacques Vidrine * 2. Redistributions in binary form must reproduce the above copyright 14bbd80c28SJacques Vidrine * notice, this list of conditions and the following disclaimer in the 15bbd80c28SJacques Vidrine * documentation and/or other materials provided with the distribution. 16bbd80c28SJacques Vidrine * 17bbd80c28SJacques Vidrine * 3. Neither the name of KTH nor the names of its contributors may be 18bbd80c28SJacques Vidrine * used to endorse or promote products derived from this software without 19bbd80c28SJacques Vidrine * specific prior written permission. 20bbd80c28SJacques Vidrine * 21bbd80c28SJacques Vidrine * THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY 22bbd80c28SJacques Vidrine * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23bbd80c28SJacques Vidrine * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 24bbd80c28SJacques Vidrine * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE 25bbd80c28SJacques Vidrine * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26bbd80c28SJacques Vidrine * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27bbd80c28SJacques Vidrine * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 28bbd80c28SJacques Vidrine * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 29bbd80c28SJacques Vidrine * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 30bbd80c28SJacques Vidrine * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 31bbd80c28SJacques Vidrine * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 32bbd80c28SJacques Vidrine 33bbd80c28SJacques Vidrine #include "gssapi_locl.h" 34bbd80c28SJacques Vidrine #include <err.h> 35bbd80c28SJacques Vidrine 36bbd80c28SJacques Vidrine RCSID("$Id: test_acquire_cred.c,v 1.2 2003/04/06 00:20:37 lha Exp $"); 37bbd80c28SJacques Vidrine 38bbd80c28SJacques Vidrine static void 39bbd80c28SJacques Vidrine print_time(OM_uint32 time_rec) 40bbd80c28SJacques Vidrine { 41bbd80c28SJacques Vidrine if (time_rec == GSS_C_INDEFINITE) { 42bbd80c28SJacques Vidrine printf("cred never expire\n"); 43bbd80c28SJacques Vidrine } else { 44bbd80c28SJacques Vidrine time_t t = time_rec; 45bbd80c28SJacques Vidrine printf("expiration time: %s", ctime(&t)); 46bbd80c28SJacques Vidrine } 47bbd80c28SJacques Vidrine } 48bbd80c28SJacques Vidrine 49bbd80c28SJacques Vidrine int 50bbd80c28SJacques Vidrine main(int argc, char **argv) 51bbd80c28SJacques Vidrine { 52bbd80c28SJacques Vidrine OM_uint32 major_status, minor_status; 53bbd80c28SJacques Vidrine gss_cred_id_t cred_handle, copy_cred; 54bbd80c28SJacques Vidrine OM_uint32 time_rec; 55bbd80c28SJacques Vidrine 56bbd80c28SJacques Vidrine major_status = gss_acquire_cred(&minor_status, 57bbd80c28SJacques Vidrine GSS_C_NO_NAME, 58bbd80c28SJacques Vidrine 0, 59bbd80c28SJacques Vidrine NULL, 60bbd80c28SJacques Vidrine GSS_C_INITIATE, 61bbd80c28SJacques Vidrine &cred_handle, 62bbd80c28SJacques Vidrine NULL, 63bbd80c28SJacques Vidrine &time_rec); 64bbd80c28SJacques Vidrine if (GSS_ERROR(major_status)) 65bbd80c28SJacques Vidrine errx(1, "acquire_cred failed"); 66bbd80c28SJacques Vidrine 67bbd80c28SJacques Vidrine 68bbd80c28SJacques Vidrine print_time(time_rec); 69bbd80c28SJacques Vidrine 70bbd80c28SJacques Vidrine major_status = gss_add_cred (&minor_status, 71bbd80c28SJacques Vidrine cred_handle, 72bbd80c28SJacques Vidrine GSS_C_NO_NAME, 73bbd80c28SJacques Vidrine GSS_KRB5_MECHANISM, 74bbd80c28SJacques Vidrine GSS_C_INITIATE, 75bbd80c28SJacques Vidrine 0, 76bbd80c28SJacques Vidrine 0, 77bbd80c28SJacques Vidrine ©_cred, 78bbd80c28SJacques Vidrine NULL, 79bbd80c28SJacques Vidrine &time_rec, 80bbd80c28SJacques Vidrine NULL); 81bbd80c28SJacques Vidrine 82bbd80c28SJacques Vidrine if (GSS_ERROR(major_status)) 83bbd80c28SJacques Vidrine errx(1, "add_cred failed"); 84bbd80c28SJacques Vidrine 85bbd80c28SJacques Vidrine print_time(time_rec); 86bbd80c28SJacques Vidrine 87bbd80c28SJacques Vidrine major_status = gss_release_cred(&minor_status, 88bbd80c28SJacques Vidrine &cred_handle); 89bbd80c28SJacques Vidrine if (GSS_ERROR(major_status)) 90bbd80c28SJacques Vidrine errx(1, "release_cred failed"); 91bbd80c28SJacques Vidrine 92bbd80c28SJacques Vidrine major_status = gss_release_cred(&minor_status, 93bbd80c28SJacques Vidrine ©_cred); 94bbd80c28SJacques Vidrine if (GSS_ERROR(major_status)) 95bbd80c28SJacques Vidrine errx(1, "release_cred failed"); 96bbd80c28SJacques Vidrine 97bbd80c28SJacques Vidrine return 0; 98bbd80c28SJacques Vidrine } 99