History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/sun/security/krb5/internal/APRep.java (1 of 18352 files). Show all

Unified · Split

java/pkg/sun/security/krb5/internal/APRep.java+141−0
@@ -0,0 +1,141 @@
1+/*
2+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3+ *
4+ * This code is free software; you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 2 only, as
6+ * published by the Free Software Foundation. Oracle designates this
7+ * particular file as subject to the "Classpath" exception as provided
8+ * by Oracle in the LICENSE file that accompanied this code.
9+ *
10+ * This code is distributed in the hope that it will be useful, but WITHOUT
11+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13+ * version 2 for more details (a copy is included in the LICENSE file that
14+ * accompanied this code).
15+ *
16+ * You should have received a copy of the GNU General Public License version
17+ * 2 along with this work; if not, write to the Free Software Foundation,
18+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19+ *
20+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21+ * or visit www.oracle.com if you need additional information or have any
22+ * questions.
23+ */
24+
25+/*
26+ *
27+ * (C) Copyright IBM Corp. 1999 All Rights Reserved.
28+ * Copyright 1997 The Open Group Research Institute. All rights reserved.
29+ */
30+
31+package sun.security.krb5.internal;
32+
33+import sun.security.krb5.EncryptedData;
34+import sun.security.krb5.Asn1Exception;
35+import sun.security.util.*;
36+import java.io.IOException;
37+import java.math.BigInteger;
38+
39+/**
40+ * Implements the ASN.1 AP-REP type.
41+ *
42+ * <xmp>
43+ * AP-REP ::= [APPLICATION 15] SEQUENCE {
44+ * pvno [0] INTEGER (5),
45+ * msg-type [1] INTEGER (15),
46+ * enc-part [2] EncryptedData -- EncAPRepPart
47+ * }
48+ * </xmp>
49+ *
50+ * <p>
51+ * This definition reflects the Network Working Group RFC 4120
52+ * specification available at
53+ * <a href="http://www.ietf.org/rfc/rfc4120.txt">
54+ * http://www.ietf.org/rfc/rfc4120.txt</a>.
55+ */
56+public class APRep {
57+
58+ public int pvno;
59+ public int msgType;
60+ public EncryptedData encPart;
61+
62+ public APRep(EncryptedData new_encPart) {
63+ pvno = Krb5.PVNO;
64+ msgType = Krb5.KRB_AP_REP;
65+ encPart = new_encPart;
66+ }
67+
68+ public APRep(byte[] data) throws Asn1Exception,
69+ KrbApErrException, IOException {
70+ init(new DerValue(data));
71+ }
72+
73+ public APRep(DerValue encoding) throws Asn1Exception,
74+ KrbApErrException, IOException {
75+ init(encoding);
76+ }
77+
78+ /**
79+ * Initializes an APRep object.
80+ * @param encoding a single DER-encoded value.
81+ * @exception Asn1Exception if an error occurs while decoding an ASN1 encoded data.
82+ * @exception IOException if an I/O error occurs while reading encoded data.
83+ * @exception KrbApErrException if the value read from the DER-encoded data
84+ * stream does not match the pre-defined value.
85+ */
86+ private void init(DerValue encoding) throws Asn1Exception,
87+ KrbApErrException, IOException {
88+
89+ if (((encoding.getTag() & (byte) (0x1F)) != Krb5.KRB_AP_REP)
90+ || (encoding.isApplication() != true)
91+ || (encoding.isConstructed() != true)) {
92+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
93+ }
94+ DerValue der = encoding.getData().getDerValue();
95+ if (der.getTag() != DerValue.tag_Sequence) {
96+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
97+ }
98+ DerValue subDer = der.getData().getDerValue();
99+ if ((subDer.getTag() & (byte) 0x1F) != (byte) 0x00) {
100+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
101+ }
102+ pvno = subDer.getData().getBigInteger().intValue();
103+ if (pvno != Krb5.PVNO) {
104+ throw new KrbApErrException(Krb5.KRB_AP_ERR_BADVERSION);
105+ }
106+ subDer = der.getData().getDerValue();
107+ if ((subDer.getTag() & (byte) 0x1F) != (byte) 0x01) {
108+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
109+ }
110+ msgType = subDer.getData().getBigInteger().intValue();
111+ if (msgType != Krb5.KRB_AP_REP) {
112+ throw new KrbApErrException(Krb5.KRB_AP_ERR_MSG_TYPE);
113+ }
114+ encPart = EncryptedData.parse(der.getData(), (byte) 0x02, false);
115+ if (der.getData().available() > 0) {
116+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
117+ }
118+ }
119+
120+ /**
121+ * Encodes an APRep object.
122+ * @return byte array of encoded APRep object.
123+ * @exception Asn1Exception if an error occurs while decoding an ASN1 encoded data.
124+ * @exception IOException if an I/O error occurs while reading encoded data.
125+ */
126+ public byte[] asn1Encode() throws Asn1Exception, IOException {
127+ DerOutputStream bytes = new DerOutputStream();
128+ DerOutputStream temp = new DerOutputStream();
129+ temp.putInteger(BigInteger.valueOf(pvno));
130+ bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte) 0x00), temp);
131+ temp = new DerOutputStream();
132+ temp.putInteger(BigInteger.valueOf(msgType));
133+ bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte) 0x01), temp);
134+ bytes.write(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte) 0x02), encPart.asn1Encode());
135+ temp = new DerOutputStream();
136+ temp.write(DerValue.tag_Sequence, bytes);
137+ DerOutputStream aprep = new DerOutputStream();
138+ aprep.write(DerValue.createTag(DerValue.TAG_APPLICATION, true, (byte) 0x0F), temp);
139+ return aprep.toByteArray();
140+ }
141+}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t