(Java) Sun MSCapi provider на x64 Windows

В Java 6 е добавен удобен и лесен начин за достъп до сертификатите от Windows Crypto store чрез

 

За съжаление горното работи само, ако JRE е 32 битово. Ако JRE 64 битово, то SunMSCAPI не се поддържа. Което е най-малкото странно. Има няколко thread-a по въпроса в интернет например тук: http://forums.oracle.com/forums/thread.jspa?threadID=1526024

 

Общо взето това, което предлагат е да се прекомпилира sunmscapi.dll и да се постави в bin директория на JRE

Source-a на OpenJDK6 се сваля лесно и бързо, за съжаление компилацията на цялото JDK е доста времеотнемаща задача, а ако е нужно само да се прекомпилира sunmscapi.dll няма нужда да се прави. Може да се съкрати до следните стъпки:

  1. Сваля се source-a на OpenJDK 6 от тук
  2. Изтегля се x64 Windows SDK април 2005 от тук
  3. Компилация на sunmscapi.dll
  4. Конфигуриране

 

 

Най-удачно е Crypt32.lib, Advapi32.liv, bufferoverflowU.lib в съответната папка от x64 битовите папки на машината

Горната команда ще генерира 64 битов sunmscapi.dll, като cl.exe e Microsoft-ския компилатор за AMD64. DLL-а се копира в bin директорията на JRE.

В Jre6libsecurityjava.security се добавя следния ред в секцията за security providers:

 

В Jre6libext се копира sunmscapi.jar от друга инсталация на JRE6 (32 bit). Може и да се компилира директно от кода, но е доста по-лесно да се копира от друга 32 битова JRE.