1 /*
   2  * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 /*
  25  * @test
  26  * @bug 6895424
  27  * @run main/othervm Test5653
  28  * @summary RFC 5653
  29  */
  30 
  31 import org.ietf.jgss.GSSContext;
  32 import org.ietf.jgss.GSSManager;
  33 import org.ietf.jgss.GSSName;
  34 import org.ietf.jgss.Oid;
  35 import sun.security.jgss.GSSUtil;
  36 
  37 public class Test5653 {
  38 
  39     public static void main(String[] args)
  40             throws Exception {
  41 
  42         Oid oldOid = new Oid("1.3.6.1.5.6.2");
  43         new OneKDC(null).writeJAASConf();
  44 
  45         System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");
  46         GSSManager m = GSSManager.getInstance();
  47         boolean found = false;
  48 
  49         // Test 1: the getMechsForName() method accepts it.
  50         for (Oid tmp: m.getMechsForName(oldOid)) {
  51             if (tmp.equals(GSSUtil.GSS_KRB5_MECH_OID)) {
  52                 found = true;
  53                 break;
  54             }
  55         }
  56         if (!found) {
  57             throw new Exception("Cannot found krb5 mech for old name type");
  58         }
  59 
  60         // Test 2: the createName() method accepts it.
  61         GSSName name = m.createName("server@host.rabbit.hole", oldOid);
  62 
  63         // Test 3: its getStringNameType() output is correct
  64         if (!name.getStringNameType().equals(GSSName.NT_HOSTBASED_SERVICE)) {
  65             throw new Exception("GSSName not correct name type");
  66         }
  67 
  68         // Test 4: everything still works.
  69         GSSContext c1 = m.createContext(
  70                 name,
  71                 GSSUtil.GSS_KRB5_MECH_OID,
  72                 null,
  73                 GSSContext.DEFAULT_LIFETIME);
  74         byte[] token = c1.initSecContext(new byte[0], 0, 0);
  75 
  76         Context s;
  77         s = Context.fromJAAS("server");
  78         s.startAsServer(GSSUtil.GSS_KRB5_MECH_OID);
  79         s.x().acceptSecContext(token, 0, token.length);
  80     }
  81 }