jdk/src/share/classes/sun/security/krb5/internal/KDCRep.java
changeset 13247 74902cfeb9c6
parent 7183 d8ccc1c73358
equal deleted inserted replaced
13246:a54c4f70775c 13247:74902cfeb9c6
    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;
    88                 } else {
    86                 } else {
    89                     pAData[i] = (PAData) new_pAData[i].clone();
    87                     pAData[i] = (PAData) new_pAData[i].clone();
    90                 }
    88                 }
    91             }
    89             }
    92         }
    90         }
    93         crealm = new_crealm;
       
    94         cname = new_cname;
    91         cname = new_cname;
    95         ticket = new_ticket;
    92         ticket = new_ticket;
    96         encPart = new_encPart;
    93         encPart = new_encPart;
    97     }
    94     }
    98 
    95 
   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,