XMLデジタル署名の検証
-
05-07-2019 - |
質問
XML署名を検証しようとしていました。
このチュートリアルによる検証罰金。
しかし、私も2番目のアプローチを試みました。 Signatureクラスのverifyメソッド 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を検証することはできません。うまくいきません。署名は未加工のXMLに対して計算されません。正規化、ダイジェストなどを行う必要があります。
data []
には何を使用しますか?正しくするには、XMLDsigライブラリを書き直す必要があります。
所属していません StackOverflow