mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 11:34:38 +02:00
6722928: Support SSPI as a native GSS-API provider
Reviewed-by: erikj, nwilliams, valeriep
This commit is contained in:
parent
118fd65d44
commit
475996adc2
8 changed files with 1702 additions and 111 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -26,7 +26,6 @@
|
|||
package sun.security.jgss.spnego;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import org.ietf.jgss.*;
|
||||
import sun.security.jgss.*;
|
||||
import sun.security.util.*;
|
||||
|
@ -113,18 +112,6 @@ public class NegTokenTarg extends SpNegoToken {
|
|||
mic.putOctetString(mechListMIC);
|
||||
targToken.write(DerValue.createTag(DerValue.TAG_CONTEXT,
|
||||
true, (byte) 0x03), mic);
|
||||
} else if (GSSUtil.useMSInterop()) {
|
||||
// required for MS-interoperability
|
||||
if (responseToken != null) {
|
||||
if (DEBUG) {
|
||||
System.out.println("SpNegoToken NegTokenTarg: " +
|
||||
"sending additional token for MS Interop");
|
||||
}
|
||||
DerOutputStream rspToken = new DerOutputStream();
|
||||
rspToken.putOctetString(responseToken);
|
||||
targToken.write(DerValue.createTag(DerValue.TAG_CONTEXT,
|
||||
true, (byte) 0x03), rspToken);
|
||||
}
|
||||
}
|
||||
|
||||
// insert in a SEQUENCE
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -66,7 +66,7 @@ public final class SunNativeProvider extends Provider {
|
|||
static {
|
||||
MECH_MAP =
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedAction<HashMap<String, String>>() {
|
||||
new PrivilegedAction<>() {
|
||||
public HashMap<String, String> run() {
|
||||
DEBUG = Boolean.parseBoolean(
|
||||
System.getProperty("sun.security.nativegss.debug"));
|
||||
|
@ -77,7 +77,7 @@ public final class SunNativeProvider extends Provider {
|
|||
if (DEBUG) err.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
String[] gssLibs = new String[0];
|
||||
String[] gssLibs;
|
||||
String defaultLib
|
||||
= System.getProperty("sun.security.jgss.lib");
|
||||
if (defaultLib == null || defaultLib.trim().equals("")) {
|
||||
|
@ -95,6 +95,12 @@ public final class SunNativeProvider extends Provider {
|
|||
"libgssapi_krb5.dylib",
|
||||
"/usr/lib/sasl2/libgssapiv2.2.so",
|
||||
};
|
||||
} else if (osname.contains("Windows")) {
|
||||
// Full path needed, DLL is in jre/bin
|
||||
gssLibs = new String[]{ System.getProperty("java.home")
|
||||
+ "\\bin\\sspi_bridge.dll" };
|
||||
} else {
|
||||
gssLibs = new String[0];
|
||||
}
|
||||
} else {
|
||||
gssLibs = new String[]{ defaultLib };
|
||||
|
@ -103,8 +109,7 @@ public final class SunNativeProvider extends Provider {
|
|||
if (GSSLibStub.init(libName, DEBUG)) {
|
||||
debug("Loaded GSS library: " + libName);
|
||||
Oid[] mechs = GSSLibStub.indicateMechs();
|
||||
HashMap<String, String> map =
|
||||
new HashMap<String, String>();
|
||||
HashMap<String,String> map = new HashMap<>();
|
||||
for (int i = 0; i < mechs.length; i++) {
|
||||
debug("Native MF for " + mechs[i]);
|
||||
map.put("GssApiMechanism." + mechs[i],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue