--- a/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java Tue Mar 04 17:09:09 2008 +0000
+++ b/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java Wed Mar 05 09:52:50 2008 +0800
@@ -56,128 +56,134 @@
* <a href="http://www.ietf.org/rfc/rfc4120.txt">
* http://www.ietf.org/rfc/rfc4120.txt</a>.
*/
+public class KRBCred {
-public class KRBCred {
- public Ticket[] tickets = null;
- public EncryptedData encPart;
-
- private int pvno;
- private int msgType;
+ public Ticket[] tickets = null;
+ public EncryptedData encPart;
+ private int pvno;
+ private int msgType;
- public KRBCred(Ticket[] new_tickets, EncryptedData new_encPart) throws IOException {
- pvno = Krb5.PVNO;
- msgType = Krb5.KRB_CRED;
- if (new_tickets != null) {
- tickets = new Ticket[new_tickets.length];
- for (int i = 0; i < new_tickets.length; i++) {
- if (new_tickets[i] == null) {
- throw new IOException("Cannot create a KRBCred");
- } else {
- tickets[i] = (Ticket)new_tickets[i].clone();
- }
- }
+ public KRBCred(Ticket[] new_tickets, EncryptedData new_encPart) throws IOException {
+ pvno = Krb5.PVNO;
+ msgType = Krb5.KRB_CRED;
+ if (new_tickets != null) {
+ tickets = new Ticket[new_tickets.length];
+ for (int i = 0; i < new_tickets.length; i++) {
+ if (new_tickets[i] == null) {
+ throw new IOException("Cannot create a KRBCred");
+ } else {
+ tickets[i] = (Ticket) new_tickets[i].clone();
}
- encPart = new_encPart;
+ }
}
+ encPart = new_encPart;
+ }
- public KRBCred(byte[] data) throws Asn1Exception,
- RealmException, KrbApErrException, IOException {
- init(new DerValue(data));
- }
+ public KRBCred(byte[] data) throws Asn1Exception,
+ RealmException, KrbApErrException, IOException {
+ init(new DerValue(data));
+ }
- public KRBCred(DerValue encoding) throws Asn1Exception,
- RealmException, KrbApErrException, IOException {
- init(encoding);
- }
+ public KRBCred(DerValue encoding) throws Asn1Exception,
+ RealmException, KrbApErrException, IOException {
+ init(encoding);
+ }
- /**
- * Initializes an KRBCred object.
- * @param encoding a single DER-encoded value.
- * @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 KrbApErrException if the value read from the DER-encoded data
- * stream does not match the pre-defined value.
- * @exception RealmException if an error occurs while parsing a Realm object.
- */
- private void init(DerValue encoding) throws Asn1Exception,
- RealmException, KrbApErrException, IOException {
- if (((encoding.getTag() & (byte)0x1F) != (byte)0x16)
- || (encoding.isApplication() != true)
- || (encoding.isConstructed() != true))
- throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ /**
+ * Initializes an KRBCred object.
+ * @param encoding a single DER-encoded value.
+ * @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 KrbApErrException if the value read from the DER-encoded data
+ * stream does not match the pre-defined value.
+ * @exception RealmException if an error occurs while parsing a Realm object.
+ */
+ private void init(DerValue encoding) throws Asn1Exception,
+ RealmException, KrbApErrException, IOException {
+ if (((encoding.getTag() & (byte) 0x1F) != (byte) 0x16)
+ || (encoding.isApplication() != true)
+ || (encoding.isConstructed() != true)) {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
DerValue der, subDer;
- der = encoding.getData().getDerValue();
- if (der.getTag() != DerValue.tag_Sequence)
- throw new Asn1Exception(Krb5.ASN1_BAD_ID);
- subDer = der.getData().getDerValue();
- if ((subDer.getTag() & 0x1F) == 0x00) {
- pvno = subDer.getData().getBigInteger().intValue();
- if (pvno != Krb5.PVNO) {
+ der = encoding.getData().getDerValue();
+ if (der.getTag() != DerValue.tag_Sequence) {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+ subDer = der.getData().getDerValue();
+ if ((subDer.getTag() & 0x1F) == 0x00) {
+ pvno = subDer.getData().getBigInteger().intValue();
+ if (pvno != Krb5.PVNO) {
throw new KrbApErrException(Krb5.KRB_AP_ERR_BADVERSION);
- }
- }
- else
- throw new Asn1Exception(Krb5.ASN1_BAD_ID);
- subDer = der.getData().getDerValue();
- if ((subDer.getTag() & 0x1F) == 0x01) {
- msgType = subDer.getData().getBigInteger().intValue();
- if (msgType != Krb5.KRB_CRED)
+ }
+ } else {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+ subDer = der.getData().getDerValue();
+ if ((subDer.getTag() & 0x1F) == 0x01) {
+ msgType = subDer.getData().getBigInteger().intValue();
+ if (msgType != Krb5.KRB_CRED) {
throw new KrbApErrException(Krb5.KRB_AP_ERR_MSG_TYPE);
- }
- else
- throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+ } else {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
subDer = der.getData().getDerValue();
- if ((subDer.getTag() & 0x1F) == 0x02) {
- DerValue subsubDer = subDer.getData().getDerValue();
+ if ((subDer.getTag() & 0x1F) == 0x02) {
+ DerValue subsubDer = subDer.getData().getDerValue();
if (subsubDer.getTag() != DerValue.tag_SequenceOf) {
- throw new Asn1Exception(Krb5.ASN1_BAD_ID);
- }
- Vector<Ticket> v = new Vector<Ticket> ();
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+ Vector<Ticket> v = new Vector<Ticket>();
while (subsubDer.getData().available() > 0) {
- v.addElement(new Ticket(subsubDer.getData().getDerValue()));
- }
+ v.addElement(new Ticket(subsubDer.getData().getDerValue()));
+ }
if (v.size() > 0) {
- tickets = new Ticket[v.size()];
- v.copyInto(tickets);
- }
- }
- else
- throw new Asn1Exception(Krb5.ASN1_BAD_ID);
- encPart = EncryptedData.parse(der.getData(), (byte)0x03, false);
+ tickets = new Ticket[v.size()];
+ v.copyInto(tickets);
+ }
+ } else {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+ encPart = EncryptedData.parse(der.getData(), (byte) 0x03, false);
- if (der.getData().available() > 0)
- throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ if (der.getData().available() > 0) {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
}
-
+ }
- /**
- * Encodes an KRBCred object.
- * @return the data of encoded EncAPRepPart 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 {
+ /**
+ * Encodes an KRBCred object.
+ * @return the data of encoded EncAPRepPart 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 {
DerOutputStream temp, bytes, out;
temp = new DerOutputStream();
temp.putInteger(BigInteger.valueOf(pvno));
out = new DerOutputStream();
- out.write(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x00), temp);
- temp = new DerOutputStream();
- temp.putInteger(BigInteger.valueOf(msgType));
- out.write(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x01), temp);
+ out.write(DerValue.createTag(DerValue.TAG_CONTEXT,
+ true, (byte) 0x00), temp);
temp = new DerOutputStream();
- for (int i = 0; i < tickets.length; i++) {
- temp.write(tickets[i].asn1Encode());
- }
+ temp.putInteger(BigInteger.valueOf(msgType));
+ out.write(DerValue.createTag(DerValue.TAG_CONTEXT,
+ true, (byte) 0x01), temp);
+ temp = new DerOutputStream();
+ for (int i = 0; i < tickets.length; i++) {
+ temp.write(tickets[i].asn1Encode());
+ }
bytes = new DerOutputStream();
bytes.write(DerValue.tag_SequenceOf, temp);
- out.write(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x02), bytes);
- out.write(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x03), encPart.asn1Encode());
+ out.write(DerValue.createTag(DerValue.TAG_CONTEXT,
+ true, (byte) 0x02), bytes);
+ out.write(DerValue.createTag(DerValue.TAG_CONTEXT,
+ true, (byte) 0x03), encPart.asn1Encode());
bytes = new DerOutputStream();
bytes.write(DerValue.tag_Sequence, out);
- out = new DerOutputStream();
- out.write(DerValue.createTag(DerValue.TAG_APPLICATION, true, (byte)0x16), bytes);
- return out.toByteArray();
- }
-
+ out = new DerOutputStream();
+ out.write(DerValue.createTag(DerValue.TAG_APPLICATION,
+ true, (byte) 0x16), bytes);
+ return out.toByteArray();
+ }
}