59 * <a href="http://www.ietf.org/rfc/rfc4120.txt"> |
59 * <a href="http://www.ietf.org/rfc/rfc4120.txt"> |
60 * http://www.ietf.org/rfc/rfc4120.txt</a>. |
60 * http://www.ietf.org/rfc/rfc4120.txt</a>. |
61 */ |
61 */ |
62 public class KDCRep { |
62 public class KDCRep { |
63 |
63 |
64 public Realm crealm; |
|
65 public PrincipalName cname; |
64 public PrincipalName cname; |
66 public Ticket ticket; |
65 public Ticket ticket; |
67 public EncryptedData encPart; |
66 public EncryptedData encPart; |
68 public EncKDCRepPart encKDCRepPart; //not part of ASN.1 encoding |
67 public EncKDCRepPart encKDCRepPart; //not part of ASN.1 encoding |
69 private int pvno; |
68 private int pvno; |
71 public PAData[] pAData = null; //optional |
70 public PAData[] pAData = null; //optional |
72 private boolean DEBUG = Krb5.DEBUG; |
71 private boolean DEBUG = Krb5.DEBUG; |
73 |
72 |
74 public KDCRep( |
73 public KDCRep( |
75 PAData[] new_pAData, |
74 PAData[] new_pAData, |
76 Realm new_crealm, |
|
77 PrincipalName new_cname, |
75 PrincipalName new_cname, |
78 Ticket new_ticket, |
76 Ticket new_ticket, |
79 EncryptedData new_encPart, |
77 EncryptedData new_encPart, |
80 int req_type) throws IOException { |
78 int req_type) throws IOException { |
81 pvno = Krb5.PVNO; |
79 pvno = Krb5.PVNO; |
172 pAData[i] = new PAData(padata[i]); |
169 pAData[i] = new PAData(padata[i]); |
173 } |
170 } |
174 } else { |
171 } else { |
175 pAData = null; |
172 pAData = null; |
176 } |
173 } |
177 crealm = Realm.parse(der.getData(), (byte) 0x03, false); |
174 Realm crealm = Realm.parse(der.getData(), (byte) 0x03, false); |
178 cname = PrincipalName.parse(der.getData(), (byte) 0x04, false); |
175 cname = PrincipalName.parse(der.getData(), (byte) 0x04, false, crealm); |
179 ticket = Ticket.parse(der.getData(), (byte) 0x05, false); |
176 ticket = Ticket.parse(der.getData(), (byte) 0x05, false); |
180 encPart = EncryptedData.parse(der.getData(), (byte) 0x06, false); |
177 encPart = EncryptedData.parse(der.getData(), (byte) 0x06, false); |
181 if (der.getData().available() > 0) { |
178 if (der.getData().available() > 0) { |
182 throw new Asn1Exception(Krb5.ASN1_BAD_ID); |
179 throw new Asn1Exception(Krb5.ASN1_BAD_ID); |
183 } |
180 } |
210 temp.write(DerValue.tag_SequenceOf, padata_stream); |
207 temp.write(DerValue.tag_SequenceOf, padata_stream); |
211 bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, |
208 bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, |
212 true, (byte) 0x02), temp); |
209 true, (byte) 0x02), temp); |
213 } |
210 } |
214 bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, |
211 bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, |
215 true, (byte) 0x03), crealm.asn1Encode()); |
212 true, (byte) 0x03), cname.getRealm().asn1Encode()); |
216 bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, |
213 bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, |
217 true, (byte) 0x04), cname.asn1Encode()); |
214 true, (byte) 0x04), cname.asn1Encode()); |
218 bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, |
215 bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, |
219 true, (byte) 0x05), ticket.asn1Encode()); |
216 true, (byte) 0x05), ticket.asn1Encode()); |
220 bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, |
217 bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, |