org.postgresql.sspi.NTDSAPIWrapper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of postgresql Show documentation
Show all versions of postgresql Show documentation
PostgreSQL JDBC Driver JDBC4
/*
* Copyright (c) 2003, PostgreSQL Global Development Group
* See the LICENSE file in the project root for more information.
*/
// Copyright (c) 2004, Open Cloud Limited.
package org.postgresql.sspi;
import com.sun.jna.LastErrorException;
import com.sun.jna.WString;
import com.sun.jna.ptr.IntByReference;
public class NTDSAPIWrapper {
static final NTDSAPIWrapper instance = new NTDSAPIWrapper();
/**
* Convenience wrapper for NTDSAPI DsMakeSpn with Java friendly string and exception handling.
*
* @param serviceClass See MSDN
* @param serviceName See MSDN
* @param instanceName See MSDN
* @param instancePort See MSDN
* @param referrer See MSDN
* @return SPN generated
* @throws LastErrorException If buffer too small or parameter incorrect
* @see
* https://msdn.microsoft.com/en-us/library/ms676007(v=vs.85).aspx
*/
public String DsMakeSpn(String serviceClass, String serviceName, String instanceName,
short instancePort, String referrer) throws LastErrorException {
IntByReference spnLength = new IntByReference(2048);
char[] spn = new char[spnLength.getValue()];
final int ret =
NTDSAPI.instance.DsMakeSpnW(
new WString(serviceClass),
new WString(serviceName),
instanceName == null ? null : new WString(instanceName),
instancePort,
referrer == null ? null : new WString(referrer),
spnLength,
spn);
if (ret != NTDSAPI.ERROR_SUCCESS) {
/* Should've thrown LastErrorException, but just in case */
throw new RuntimeException("NTDSAPI DsMakeSpn call failed with " + ret);
}
return new String(spn, 0, spnLength.getValue());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy