При переходе с JCP 2.0 на
Java CSP (JCSP), установленную на чистую Java 8
перестал работать метод расшифровки.
Provider provider = Security.getProvider("JCSP");
keyStore = KeyStore.getInstance("FAT12_D",provider);
keyStore.load(null, null);
gg = "superkey";
char[] parol = new char[1];
Key key = keyStore.getKey(gg, parol);
XMLCipher xmlCipher2 = XMLCipher.getInstance();
xmlCipher2.init(XMLCipher.DECRYPT_MODE, null);
Element encKeyElem = (Element) doc2.getElementsByTagName("xenc:EncryptedKey").item(0);
Element encryptedDataElement2 = (Element) doc2.getElementsByTagNameNS(EncryptionConstants.EncryptionSpecNS, EncryptionConstants._TAG_ENCRYPTEDDATA).item(0);
EncryptedKey encKey = xmlCipher2.loadEncryptedKey(doc2, encKeyElem);
EncryptedData encData = xmlCipher2.loadEncryptedData(doc2, encryptedDataElement2);
XMLCipher keyCipher22 = XMLCipher.getInstance(Consts.URI_GOST_TRANSPORT);
keyCipher22.init(XMLCipher.UNWRAP_MODE, key);
Key sKey = keyCipher22.decryptKey(encKey, encData.getEncryptionMethod().getAlgorithm());
xmlCipher2.init(XMLCipher.DECRYPT_MODE, sKey);
xmlCipher2.doFinal(doc2, encryptedDataElement2);
Мог уже подпортить после бесконечных попыток, но в итоге на doFinal всегда прихожу к стэктрейсу:
org.apache.xml.security.encryption.XMLEncryptionException: ru.CryptoPro.JCSP.Key.GostSecretKey cannot be cast to ru.CryptoPro.Crypto.Key.GostSecretKey
Original Exception was java.security.InvalidKeyException: ru.CryptoPro.JCSP.Key.GostSecretKey cannot be cast to ru.CryptoPro.Crypto.Key.GostSecretKey
at org.apache.xml.security.encryption.XMLCipher.decryptToByteArray(XMLCipher.java:1859)
at org.apache.xml.security.encryption.XMLCipher.decryptElement(XMLCipher.java:1715)
at org.apache.xml.security.encryption.XMLCipher.doFinal(XMLCipher.java:944)
at fssw.FSSServiceHandler.StartDecrypt(FSSServiceHandler.java:739)
at fssw.FSSServiceHandler.handleMessage(FSSServiceHandler.java:183)
at fssw.FSSServiceHandler.handleMessage(FSSServiceHandler.java:74)
at com.sun.xml.internal.ws.handler.HandlerProcessor.callHandleMessageReverse(HandlerProcessor.java:326)
at com.sun.xml.internal.ws.handler.HandlerProcessor.callHandlersResponse(HandlerProcessor.java:199)
at com.sun.xml.internal.ws.handler.ClientSOAPHandlerTube.callHandlersOnResponse(ClientSOAPHandlerTube.java:148)
at com.sun.xml.internal.ws.handler.HandlerTube.processResponse(HandlerTube.java:159)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:1132)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:1035)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:1004)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:862)
at com.sun.xml.internal.ws.client.Stub.process(Stub.java:448)
at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:178)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:77)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:147)
at com.sun.proxy.$Proxy37.getPrivateLNData(Unknown Source)
Отредактировано пользователем 14 марта 2019 г. 15:56:36(UTC)
| Причина: Не указана