Search in sources :

Example 1 with SecPkgInfo

use of com.sun.jna.platform.win32.Sspi.SecPkgInfo in project jna by java-native-access.

the class Secur32Util method getSecurityPackages.

/**
	 * Get the security packages installed on the current computer.
	 * @return
	 *  An array of SSPI security packages.
	 */
public static SecurityPackage[] getSecurityPackages() {
    IntByReference pcPackages = new IntByReference();
    PSecPkgInfo pPackageInfo = new PSecPkgInfo();
    int rc = Secur32.INSTANCE.EnumerateSecurityPackages(pcPackages, pPackageInfo);
    if (W32Errors.SEC_E_OK != rc) {
        throw new Win32Exception(rc);
    }
    SecPkgInfo[] packagesInfo = pPackageInfo.toArray(pcPackages.getValue());
    ArrayList<SecurityPackage> packages = new ArrayList<SecurityPackage>(pcPackages.getValue());
    for (SecPkgInfo packageInfo : packagesInfo) {
        SecurityPackage securityPackage = new SecurityPackage();
        securityPackage.name = packageInfo.Name.toString();
        securityPackage.comment = packageInfo.Comment.toString();
        packages.add(securityPackage);
    }
    rc = Secur32.INSTANCE.FreeContextBuffer(pPackageInfo.pPkgInfo.getPointer());
    if (W32Errors.SEC_E_OK != rc) {
        throw new Win32Exception(rc);
    }
    return packages.toArray(new SecurityPackage[0]);
}
Also used : IntByReference(com.sun.jna.ptr.IntByReference) SecPkgInfo(com.sun.jna.platform.win32.Sspi.SecPkgInfo) PSecPkgInfo(com.sun.jna.platform.win32.Sspi.PSecPkgInfo) ArrayList(java.util.ArrayList) PSecPkgInfo(com.sun.jna.platform.win32.Sspi.PSecPkgInfo)

Aggregations

PSecPkgInfo (com.sun.jna.platform.win32.Sspi.PSecPkgInfo)1 SecPkgInfo (com.sun.jna.platform.win32.Sspi.SecPkgInfo)1 IntByReference (com.sun.jna.ptr.IntByReference)1 ArrayList (java.util.ArrayList)1