XML 디지털 서명 검증
-
05-07-2019 - |
문제
XML 서명을 검증하려고했습니다.
이에 따른 검증 지도 시간 잘 작동합니다.
그러나 나는 또한 두 번째 접근법을 시도했습니다. 그것을 확인합니다 방법을 확인하십시오 서명 클래스의 I는 XML 파일에서 서명과 인증서를 추출했으며 다음을 수행했습니다.
public static boolean checkSignedFile(byte[] data, byte[] sigToVerify,
byte[] cert, String algorithm) throws CertificateException,
NoSuchAlgorithmException, InvalidKeyException, SignatureException {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate c = (Certificate) cf
.generateCertificate(new ByteArrayInputStream(cert));
PublicKey pk = c.getPublicKey();
Signature sig;
boolean verifies = false;
sig = Signature.getInstance(algorithm);
sig.initVerify(pk);
sig.update(data);
verifies = sig.verify(sigToVerify);
return verifies;
}
결과는 거짓이었습니다. 서명이 확인되지 않았습니다. 그 이유는 무엇입니까?
해결책
이렇게 xmldsig를 확인할 수 없습니다. 작동하지 않을 것입니다. 서명은 RAW XML에서 계산되지 않습니다. 그것은 표준화, 다이제스트 등을 거쳐야합니다.
당신은 무엇을 위해 사용합니까? data[]
? 올바르게 얻으려면 거의 XMLDSig 라이브러리를 다시 작성해야합니다.
제휴하지 않습니다 StackOverflow