package org.apache.kerberos.kerb.codec.kerberos; import org.apache.haox.asn1.Asn1InputBuffer; import org.apache.haox.asn1.type.Asn1Item; import org.apache.kerberos.kerb.spec.common.EncryptionKey; import java.io.IOException; public class KerberosToken { private KerberosApRequest apRequest; public KerberosToken(byte[] token) throws Exception { this(token, null); } public KerberosToken(byte[] token, EncryptionKey key) throws Exception { if(token.length <= 0) throw new IOException("kerberos.token.empty"); Asn1InputBuffer buffer = new Asn1InputBuffer(token); Asn1Item value = (Asn1Item) buffer.read(); if(! value.isAppSpecific() && ! value.isConstructed()) throw new IOException("kerberos.token.malformed"); buffer = new Asn1InputBuffer(value.getBodyContent()); buffer.skipNext(); buffer.skipBytes(2); apRequest = new KerberosApRequest(buffer.readAllLeftBytes(), key); } public KerberosApRequest getApRequest() { return apRequest; } }