1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.auth.tests.javax.security.auth.kerberos; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.InetAddress; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.UnknownHostException; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Date; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.crypto.SecretKey; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.auth.DestroyFailedException; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.auth.RefreshFailedException; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.auth.kerberos.KerberosKey; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.auth.kerberos.KerberosPrincipal; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.auth.kerberos.KerberosTicket; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.auth.tests.support.TestUtils; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class KerberosTicketTest extends TestCase { 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String ENV_KDC = "java.security.krb5.kdc"; 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String ENV_REALM = "java.security.krb5.realm"; 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ticket's ASN.1 encoding 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final byte[] ticket = { 0x01, 0x02, 0x03, 0x04 }; 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // client's principal 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final KerberosPrincipal pClient = new KerberosPrincipal( 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "client@apache.org"); 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // server's principal 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final KerberosPrincipal pServer = new KerberosPrincipal( 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "server@apache.org"); 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // session key 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final byte[] sessionKey = { 0x01, 0x04, 0x03, 0x02 }; 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int KEY_TYPE = 1; 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // number of flags used by Kerberos protocol 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int FLAGS_NUM = 32; 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final boolean[] flags = { true, false, true, false, true, 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes false, true, false, true, false, true, false, }; 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int AUTH_TIME = 0; 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Date authTime = new Date(AUTH_TIME); 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int START_TIME = 1; 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Date startTime = new Date(START_TIME); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int END_TIME = 2; 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Date endTime = new Date(END_TIME); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Date renewTill = new Date(3); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final InetAddress[] addesses; 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static { 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addesses = new InetAddress[] { InetAddress.getLocalHost() }; 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnknownHostException e) { 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new RuntimeException(e); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#getAuthTime() 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getAuthTime() throws Exception { 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Date newAuthTime = new Date(AUTH_TIME); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket = new KerberosTicket(ticket, pClient, pServer, 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, flags, newAuthTime, startTime, endTime, 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes renewTill, addesses); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // initial value is not copied 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes newAuthTime.setTime(AUTH_TIME + 1); 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(AUTH_TIME + 1, krbTicket.getAuthTime().getTime()); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // returned value is copied 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(krbTicket.getAuthTime(), krbTicket.getAuthTime()); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // auth time: null value is illegal for constructor 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new KerberosTicket(ticket, pClient, pServer, sessionKey, KEY_TYPE, 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes flags, null, startTime, endTime, renewTill, addesses); 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalArgumentException"); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#getClient() 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getClient() throws Exception { 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket = new KerberosTicket(ticket, pClient, pServer, 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, flags, authTime, startTime, endTime, 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes renewTill, addesses); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(pClient, krbTicket.getClient()); 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // client principal: null value is illegal for constructor 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new KerberosTicket(ticket, null, pServer, sessionKey, KEY_TYPE, 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes flags, authTime, startTime, endTime, renewTill, addesses); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalArgumentException"); 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#getClientAddresses() 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getClientAddresses() throws Exception { 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket = new KerberosTicket(ticket, pClient, pServer, 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, flags, authTime, startTime, endTime, 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes renewTill, addesses); 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(addesses, krbTicket.getClientAddresses())); 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // initial value is copied 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(addesses, krbTicket.getClientAddresses()); 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // KerberosTicket instance is immutable 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(krbTicket.getClientAddresses(), krbTicket 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getClientAddresses()); 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // addesses: null value is OK for constructor 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket = new KerberosTicket(ticket, pClient, pServer, sessionKey, 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KEY_TYPE, flags, authTime, startTime, endTime, renewTill, null); 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(krbTicket.getClientAddresses()); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#getEncoded() 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getEncoded() throws Exception { 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket = new KerberosTicket(ticket, pClient, pServer, 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, flags, authTime, startTime, endTime, 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes renewTill, addesses); 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(ticket, krbTicket.getEncoded())); 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // initial byte array is copied 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(ticket, krbTicket.getEncoded()); 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // KerberosTicket instance is immutable 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(krbTicket.getEncoded(), krbTicket.getEncoded()); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ticket: null value is illegal for constructor 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new KerberosTicket(null, pClient, pServer, sessionKey, KEY_TYPE, 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes flags, authTime, startTime, endTime, renewTill, addesses); 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalArgumentException"); 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#getEndTime() 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getEndTime() throws Exception { 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Date newEndTime = new Date(END_TIME); 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket = new KerberosTicket(ticket, pClient, pServer, 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, flags, authTime, startTime, newEndTime, 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes renewTill, addesses); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // initial value is not copied 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes newEndTime.setTime(END_TIME + 1); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(END_TIME + 1, krbTicket.getEndTime().getTime()); 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // returned value is copied 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(krbTicket.getEndTime(), krbTicket.getEndTime()); 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // end time: null value is illegal for constructor 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new KerberosTicket(ticket, pClient, pServer, sessionKey, KEY_TYPE, 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes flags, authTime, startTime, null, renewTill, addesses); 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalArgumentException"); 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#getFlags() 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getFlags() { 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean[] myFlags = new boolean[] { true, //reserved 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // forwardable 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // forwarded 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // proxiable 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // proxy 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // may-postdate 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // postdated 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // invalid 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // renewable 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // initial 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // pre-authent 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true // hw-authent 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket = new KerberosTicket(ticket, pClient, pServer, 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, myFlags, // <=== we test this 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes authTime, startTime, endTime, renewTill, addesses); 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test: returned value is copied 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(krbTicket.getFlags(), krbTicket.getFlags()); 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test: flags values 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(krbTicket.isForwardable()); 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(krbTicket.isForwarded()); 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(krbTicket.isInitial()); 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(krbTicket.isPostdated()); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(krbTicket.isProxiable()); 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(krbTicket.isProxy()); 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(krbTicket.isRenewable()); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test: number of flags less the in Kerberos protocol (<32) 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean[] ktFlags = krbTicket.getFlags(); 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("flags length", FLAGS_NUM, ktFlags.length); 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int index = 0; 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // must match to initial array 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (; index < flags.length; index++) { 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Index: " + index, myFlags[index], ktFlags[index]); 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the rest is expected to be false 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (; index < FLAGS_NUM; index++) { 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Index: " + index, false, ktFlags[index]); 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test: flags array is greater then 32 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes myFlags = new boolean[50]; 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket = new KerberosTicket(ticket, pClient, pServer, sessionKey, 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KEY_TYPE, myFlags, // <=== we test this 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes authTime, startTime, endTime, renewTill, addesses); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ktFlags = krbTicket.getFlags(); 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(myFlags.length, ktFlags.length); 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (index = 0; index < ktFlags.length; index++) { 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(false, ktFlags[index]); 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // initial array is copied 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(krbTicket.isForwardable()); 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes myFlags[1] = true; 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(krbTicket.isForwardable()); 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test: Null value 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket = new KerberosTicket(ticket, pClient, pServer, sessionKey, 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KEY_TYPE, null, // <=== we test this 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes authTime, startTime, endTime, renewTill, addesses); 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(new boolean[FLAGS_NUM], krbTicket.getFlags())); 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#getServer() 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getServer() throws Exception { 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket = new KerberosTicket(ticket, pClient, pServer, 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, flags, authTime, startTime, endTime, 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes renewTill, addesses); 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(pServer, krbTicket.getServer()); 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // server principal: null value is illegal for constructor 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new KerberosTicket(ticket, pClient, null, sessionKey, KEY_TYPE, 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes flags, authTime, startTime, endTime, renewTill, addesses); 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalArgumentException"); 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#getSessionKey() 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getSessionKey() throws Exception { 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket = new KerberosTicket(ticket, pClient, pServer, 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, flags, authTime, startTime, endTime, 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes renewTill, addesses); 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(krbTicket.getSessionKey(), krbTicket.getSessionKey()); 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test returned SecretKey object 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecretKey sKey = krbTicket.getSessionKey(); 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] keyBytes = sKey.getEncoded(); 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(sessionKey, keyBytes)); 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // initial byte array is copied 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(sessionKey, sKey.getEncoded()); 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // key instance is immutable 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(sKey.getEncoded(), sKey.getEncoded()); 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("algorithm", "DES", sKey.getAlgorithm()); 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("format", "RAW", sKey.getFormat()); 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // sessionKey: null value is illegal for constructor 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new KerberosTicket(ticket, pClient, pServer, null, KEY_TYPE, flags, 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes authTime, startTime, endTime, renewTill, addesses); 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalArgumentException"); 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#getSessionKeyType() 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getSessionKeyType() throws Exception { 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket = new KerberosTicket(ticket, pClient, pServer, 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, flags, authTime, startTime, endTime, 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes renewTill, addesses); 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(KEY_TYPE, krbTicket.getSessionKeyType()); 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#getStartTime() 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getStartTime() throws Exception { 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Date newStartTime = new Date(START_TIME); 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket = new KerberosTicket(ticket, pClient, pServer, 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, flags, authTime, newStartTime, endTime, 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes renewTill, addesses); 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // initial value is copied 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes newStartTime.setTime(START_TIME + 1); 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(START_TIME + 1, krbTicket.getStartTime().getTime()); 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // returned value is copied 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(krbTicket.getStartTime(), krbTicket.getStartTime()); 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // start time: null value is valid for constructor 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket = new KerberosTicket(ticket, pClient, pServer, sessionKey, 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KEY_TYPE, flags, authTime, null, endTime, renewTill, addesses); 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(authTime, krbTicket.getStartTime()); 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(authTime, krbTicket.getStartTime()); 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#destroy() 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#isDestroyed() 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_Destroyable() throws Exception { 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket kt = new KerberosTicket(ticket, pClient, pServer, 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, flags, authTime, startTime, endTime, 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes renewTill, addesses); 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(kt.isDestroyed()); 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes kt.destroy(); 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(kt.isDestroyed()); 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // no exceptions for second destroy 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes kt.destroy(); 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(kt.getAuthTime()); 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(kt.getClient()); 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(kt.getClientAddresses()); 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes kt.getEncoded(); 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalStateException"); 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(kt.getEndTime()); 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(kt.getFlags()); 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(kt.getRenewTill()); 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(kt.getServer()); 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes kt.getSessionKey(); 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalStateException"); 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes kt.getSessionKeyType(); 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalStateException"); 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes kt.toString(); 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalStateException"); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#refresh() 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_refresh() throws Exception { 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean[] myFlags = new boolean[] { true, //reserved 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // forwardable 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // forwarded 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // proxiable 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // proxy 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // may-postdate 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // postdated 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // invalid 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // renewable: <=== we test this 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // initial 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true, // pre-authent 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true // hw-authent 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test: should not renew ticket because renewTill < current time 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Date newRenewTill = new Date((new Date()).getTime() - 3600000); 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket = new KerberosTicket(ticket, pClient, pServer, 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sessionKey, KEY_TYPE, myFlags, authTime, startTime, endTime, 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes newRenewTill, // <=== we test this: it is less then current time 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addesses); 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket.refresh(); 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected RefreshFailedException"); 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (RefreshFailedException e) { 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test: should not renew ticket because renewable flag is false 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes newRenewTill = new Date((new Date()).getTime() + 3600000); 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes myFlags[8] = false; 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket = new KerberosTicket(encTicket, pClient, pServer, sessionKey, 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KEY_TYPE, myFlags, // <=== we test this: it is not renewable 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes authTime, startTime, endTime, newRenewTill, addesses); 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket.refresh(); 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected RefreshFailedException"); 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (RefreshFailedException e) { 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test: dependency on system props 'kdc' and 'realm' 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // verify that env. is clean 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(System.getProperty(ENV_KDC)); 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(System.getProperty(ENV_REALM)); 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create real DES key 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] newSessionKey = new KerberosKey(new KerberosPrincipal( 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "me@MY.REALM"), "pwd".toCharArray(), "DES").getEncoded(); 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes myFlags[8] = true; 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket = new KerberosTicket(encTicket, pClient, pServer, 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes newSessionKey, KEY_TYPE, myFlags, authTime, startTime, endTime, 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes newRenewTill, addesses); 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // case 1: unset 'kdc' and set 'realm' 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestUtils.setSystemProperty(ENV_KDC, "some_value"); 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket.refresh(); 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected RefreshFailedException"); 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (RefreshFailedException e) { 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestUtils.setSystemProperty(ENV_KDC, null); 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // case 2: set 'kdc' and unset 'realm' sys.props 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestUtils.setSystemProperty(ENV_REALM, "some_value"); 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket.refresh(); 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected RefreshFailedException"); 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (RefreshFailedException e) { 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestUtils.setSystemProperty(ENV_REALM, null); 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // TODO test: ticket refreshing 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#equals(java.lang.Object) 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_equals() throws Exception { 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket1 = new KerberosTicket(ticket, pClient, 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pServer, sessionKey, KEY_TYPE, flags, authTime, startTime, 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes endTime, renewTill, addesses); 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket2 = new KerberosTicket(ticket, pClient, 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pServer, sessionKey, KEY_TYPE, flags, authTime, startTime, 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes endTime, renewTill, addesses); 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket3 = new KerberosTicket(ticket, pClient, 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pServer, sessionKey, KEY_TYPE, new boolean[] { true, false }, 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes authTime, startTime, endTime, renewTill, addesses); 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("krbTicket1 and krbTicket2 should be equivalent ", 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket1, krbTicket2); 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("krbTicket1 and krbTicket3 sholudn't be equivalent ", 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket1.equals(krbTicket3)); 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket2.destroy(); 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (DestroyFailedException e) { 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("krbTicket2 destroy failed"); 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Destroyed krbTicket sholudn't be equivalent ", krbTicket1 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(krbTicket2)); 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //Regression test for KerberosTicket.equals(). 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final KerberosPrincipal clientPrincipal = new KerberosPrincipal( 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "leo@EXAMPLE.COM"); 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final KerberosPrincipal serverPrincipal = new KerberosPrincipal( 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "krbtgt/EXAMPLE.COM@EXAMPLE.COM"); 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket tgt = new KerberosTicket(new byte[0], clientPrincipal, 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverPrincipal, new byte[0], 1, new boolean[0], 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Date(1000), null, new Date(new Date().getTime() + 1000), 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, null); 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(tgt, tgt); 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket tgt1 = new KerberosTicket(new byte[0], clientPrincipal, 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverPrincipal, new byte[0], 1, new boolean[0], 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Date(1000), null, new Date(new Date().getTime() + 1000), 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, null); 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(tgt, tgt1); 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(tgt1, tgt); 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax.security.auth.kerberos.KerberosTicket#hashCode() 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hashCode() { 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket1 = new KerberosTicket(ticket, pClient, 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pServer, sessionKey, KEY_TYPE, flags, authTime, startTime, 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes endTime, renewTill, addesses); 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KerberosTicket krbTicket2 = new KerberosTicket(ticket, pClient, 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pServer, sessionKey, KEY_TYPE, flags, authTime, startTime, 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes endTime, renewTill, addesses); 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("krbTicket1 and krbTicket2 should be equivalent", 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket1, krbTicket2); 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("hashCode should be equivalent", krbTicket1.hashCode(), 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes krbTicket2.hashCode()); 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Hands-created ticket encoding: 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // - tkt-vno: 5 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // - realm: 'MY.REALM' 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // - sname: {type=0, string=krbtgt/MY.REALM} 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // - enc-part: {etype=3,kvno=1,cipher=0} (i.e. it is empty) 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final byte[] encTicket = { 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // [APPLICATION 1] 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x45, 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // SEQUENCE 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x30, 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x43, 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // tkt-vno [0] INTEGER (5) 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa0, 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x03, 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x02, 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x01, 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x05, 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // realm [1] Realm = 'MY.REALM' 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa1, (byte) 0x0a, (byte) 0x1b, (byte) 0x08, (byte) 0x4d, 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x59, (byte) 0x2e, (byte) 0x52, 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x45, 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x41, 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4d, 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // sname [2] PrincipalName 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa2, 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x1d, 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x30, 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x1b, 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // name-type 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa0, (byte) 0x03, 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x02, 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x01, 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // name-string: SEQUENCE OF krbtgt/MY.REALM 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa1, (byte) 0x14, (byte) 0x30, (byte) 0x12, (byte) 0x1b, 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x06, (byte) 0x6b, (byte) 0x72, (byte) 0x62, (byte) 0x74, 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x67, (byte) 0x74, (byte) 0x1b, (byte) 0x08, (byte) 0x4d, 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x59, (byte) 0x2e, (byte) 0x52, (byte) 0x45, (byte) 0x41, 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x4d, 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // enc-part [3] EncryptedData 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa3, (byte) 0x11, 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // SEQUENCE 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x30, (byte) 0x0F, 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // etype 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01, (byte) 0x03, 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // kvno 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa1, (byte) 0x03, (byte) 0x02, (byte) 0x01, (byte) 0x01, 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cipher 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa2, (byte) 0x03, (byte) 0x04, (byte) 0x01, (byte) 0x00 }; 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 641