10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.security.jgss;
27
28 import org.ietf.jgss.GSSContext;
29 import org.ietf.jgss.GSSCredential;
30 import sun.security.jgss.GSSContextImpl;
31 import sun.security.jgss.GSSCredentialImpl;
32 import sun.security.jgss.JgssExtender;
33
34 // The com.sun.security.jgss extension to JGSS-API
35 class Extender extends JgssExtender {
36
37 static {
38 JgssExtender.setExtender(new Extender());
39 }
40
41 public GSSCredential wrap(GSSCredential cred) {
42 if (cred instanceof ExtendedGSSCredential.ExtendedGSSCredentialImpl) {
43 return cred;
44 } else {
45 return new ExtendedGSSCredential.ExtendedGSSCredentialImpl((GSSCredentialImpl)cred);
46 }
47 }
48
49 public GSSContext wrap(GSSContext ctxt) {
50 if (ctxt instanceof ExtendedGSSContext.ExtendedGSSContextImpl) {
51 return ctxt;
52 } else {
53 return new ExtendedGSSContext.ExtendedGSSContextImpl((GSSContextImpl)ctxt);
54 }
55 }
56 }
|
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.security.jgss;
27
28 import org.ietf.jgss.GSSContext;
29 import org.ietf.jgss.GSSCredential;
30 import org.ietf.jgss.GSSException;
31 import sun.security.jgss.GSSContextImpl;
32 import sun.security.jgss.GSSCredentialImpl;
33 import sun.security.jgss.JgssExtender;
34 import sun.security.krb5.internal.AuthorizationData;
35
36 // The com.sun.security.jgss extension to JGSS-API
37 class Extender extends JgssExtender {
38
39 static {
40 JgssExtender.setExtender(new Extender());
41 }
42
43 public GSSCredential wrap(GSSCredential cred) {
44 if (cred instanceof ExtendedGSSCredentialImpl) {
45 return cred;
46 } else {
47 return new ExtendedGSSCredentialImpl((GSSCredentialImpl)cred);
48 }
49 }
50
51 public GSSContext wrap(GSSContext ctxt) {
52 if (ctxt instanceof ExtendedGSSContextImpl) {
53 return ctxt;
54 } else {
55 return new ExtendedGSSContextImpl((GSSContextImpl)ctxt);
56 }
57 }
58
59 // The impl is almost identical to GSSContextImpl with only 2 differences:
60 // 1. It implements the extended interface
61 // 2. It translates result to data types here in inquireSecContext
62 class ExtendedGSSContextImpl extends GSSContextImpl
63 implements ExtendedGSSContext {
64
65 public ExtendedGSSContextImpl(GSSContextImpl old) {
66 super(old);
67 }
68
69 @Override
70 public Object inquireSecContext(InquireType type) throws GSSException {
71 SecurityManager security = System.getSecurityManager();
72 if (security != null) {
73 security.checkPermission(
74 new InquireSecContextPermission(type.toString()));
75 }
76 Object output = super.inquireSecContext(type.name());
77 if (output != null) {
78 if (type == InquireType.KRB5_GET_AUTHZ_DATA) {
79 AuthorizationData ad = (AuthorizationData) output;
80 AuthorizationDataEntry[] authzData =
81 new AuthorizationDataEntry[ad.count()];
82 for (int i = 0; i < ad.count(); i++) {
83 authzData[i] = new AuthorizationDataEntry(
84 ad.item(i).adType, ad.item(i).adData);
85 }
86 output = authzData;
87 }
88 }
89 return output;
90 }
91 }
92
93 class ExtendedGSSCredentialImpl extends GSSCredentialImpl
94 implements ExtendedGSSCredential {
95
96 public ExtendedGSSCredentialImpl(GSSCredentialImpl old) {
97 super(old);
98 }
99 }
100
101 }
|