diff -r 4ebc2e2fb97c -r 71c04702a3d5 src/java.security.jgss/share/classes/sun/security/krb5/internal/KrbCredInfo.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java.security.jgss/share/classes/sun/security/krb5/internal/KrbCredInfo.java Tue Sep 12 19:03:39 2017 +0200 @@ -0,0 +1,201 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * + * (C) Copyright IBM Corp. 1999 All Rights Reserved. + * Copyright 1997 The Open Group Research Institute. All rights reserved. + */ + +package sun.security.krb5.internal; + +import sun.security.krb5.*; +import sun.security.util.*; +import java.util.Vector; +import java.io.IOException; + +/** + * Implements the ASN.1 KrbCredInfo type. + * + *
{@code + * KrbCredInfo ::= SEQUENCE { + * key [0] EncryptionKey, + * prealm [1] Realm OPTIONAL, + * pname [2] PrincipalName OPTIONAL, + * flags [3] TicketFlags OPTIONAL, + * authtime [4] KerberosTime OPTIONAL, + * starttime [5] KerberosTime OPTIONAL, + * endtime [6] KerberosTime OPTIONAL, + * renew-till [7] KerberosTime OPTIONAL, + * srealm [8] Realm OPTIONAL, + * sname [9] PrincipalName OPTIONAL, + * caddr [10] HostAddresses OPTIONAL + * } + * }+ * + *
+ * This definition reflects the Network Working Group RFC 4120
+ * specification available at
+ *
+ * http://www.ietf.org/rfc/rfc4120.txt.
+ */
+
+public class KrbCredInfo {
+ public EncryptionKey key;
+ public PrincipalName pname; //optional
+ public TicketFlags flags; //optional
+ public KerberosTime authtime; //optional
+ public KerberosTime starttime; //optional
+ public KerberosTime endtime; //optional
+ public KerberosTime renewTill; //optional
+ public PrincipalName sname; //optional
+ public HostAddresses caddr; //optional
+
+ private KrbCredInfo() {
+ }
+
+ public KrbCredInfo(
+ EncryptionKey new_key,
+ PrincipalName new_pname,
+ TicketFlags new_flags,
+ KerberosTime new_authtime,
+ KerberosTime new_starttime,
+ KerberosTime new_endtime,
+ KerberosTime new_renewTill,
+ PrincipalName new_sname,
+ HostAddresses new_caddr
+ ) {
+ key = new_key;
+ pname = new_pname;
+ flags = new_flags;
+ authtime = new_authtime;
+ starttime = new_starttime;
+ endtime = new_endtime;
+ renewTill = new_renewTill;
+ sname = new_sname;
+ caddr = new_caddr;
+ }
+
+ /**
+ * Constructs a KrbCredInfo object.
+ * @param encoding a Der-encoded data.
+ * @exception Asn1Exception if an error occurs while decoding an ASN1 encoded data.
+ * @exception IOException if an I/O error occurs while reading encoded data.
+ * @exception RealmException if an error occurs while parsing a Realm object.
+ */
+ public KrbCredInfo(DerValue encoding)
+ throws Asn1Exception, IOException, RealmException{
+ if (encoding.getTag() != DerValue.tag_Sequence) {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+ pname = null;
+ flags = null;
+ authtime = null;
+ starttime = null;
+ endtime = null;
+ renewTill = null;
+ sname = null;
+ caddr = null;
+ key = EncryptionKey.parse(encoding.getData(), (byte)0x00, false);
+ Realm prealm = null, srealm = null;
+ if (encoding.getData().available() > 0)
+ prealm = Realm.parse(encoding.getData(), (byte)0x01, true);
+ if (encoding.getData().available() > 0)
+ pname = PrincipalName.parse(encoding.getData(), (byte)0x02, true, prealm);
+ if (encoding.getData().available() > 0)
+ flags = TicketFlags.parse(encoding.getData(), (byte)0x03, true);
+ if (encoding.getData().available() > 0)
+ authtime = KerberosTime.parse(encoding.getData(), (byte)0x04, true);
+ if (encoding.getData().available() > 0)
+ starttime = KerberosTime.parse(encoding.getData(), (byte)0x05, true);
+ if (encoding.getData().available() > 0)
+ endtime = KerberosTime.parse(encoding.getData(), (byte)0x06, true);
+ if (encoding.getData().available() > 0)
+ renewTill = KerberosTime.parse(encoding.getData(), (byte)0x07, true);
+ if (encoding.getData().available() > 0)
+ srealm = Realm.parse(encoding.getData(), (byte)0x08, true);
+ if (encoding.getData().available() > 0)
+ sname = PrincipalName.parse(encoding.getData(), (byte)0x09, true, srealm);
+ if (encoding.getData().available() > 0)
+ caddr = HostAddresses.parse(encoding.getData(), (byte)0x0A, true);
+ if (encoding.getData().available() > 0)
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+
+ /**
+ * Encodes an KrbCredInfo object.
+ * @return the byte array of encoded KrbCredInfo object.
+ * @exception Asn1Exception if an error occurs while decoding an ASN1 encoded data.
+ * @exception IOException if an I/O error occurs while reading encoded data.
+ */
+ public byte[] asn1Encode() throws Asn1Exception, IOException {
+ Vector