Este artículo describe el método de Java utilizando pares de claves DSA para generar firmas XML. Compártelo para su referencia. El método de implementación específico es el siguiente:
El código Java MainClass.java es el siguiente:
La copia del código es la siguiente: import java.security.keypair;
import java.security.keypairgenerator;
import java.security.secureurandom;
import java.util.collections;
import javax.xml.crypto.dsig.anonicalizationmethod;
import javax.xml.crypto.dsig.digestmethod;
import javax.xml.crypto.dsig.reference;
import javax.xml.crypto.dsig.signatureMethod;
import javax.xml.crypto.dsig.signedInfo;
import javax.xml.crypto.dsig.xmlsignature;
import javax.xml.crypto.dsig.xmlsignatureFactory;
import javax.xml.crypto.dsig.keyinfo.keyinfo;
import javax.xml.crypto.dsig.keyinfo.keyinfofactory;
import javax.xml.crypto.dsig.keyinfo.keyValue;
import javax.xml.crypto.dsig.spec.c14nmethodparameterspec;
Clase pública MainClass {
public static void main (string [] args) lanza la excepción {
KeyPairGenerator kpg = keyPairGenerator.getInstance ("dsa");
kpg.initialize (1024, new SecureRandom ());
KeyPair dsakypair = kpg.generatekypair ();
XMLSignatureFactory SigFactory = XMLSignatureFactory.getInStance ();
Referencia ref = sigfactory.newreference ("#cuerpo", sigfactory.newdigestmethod (digestMethod.sha1, null));
FirmedInfo firmedInfo = SigFactory.NeWSignedInfo (SigFactory.newcanonicalizationMethod (
CanonicalizationMethod.inclusive_with_comments, (c14nmethodparameterspec) null), sigfactory.newsignatureMethod (Signaturemethod.Dsa_Sha1, null), colección.singletonlist (ref));
KeyInfofactory kif = sigfactory.getKeyInfOfactory ();
KeyValue kv = kif.newkeyValue (dsakepair.getPublic ());
KeyInfo KeyInfo = Kif.newkeyinfo (colección.singletonList (kv));
XmlSignature xmlsig = sigfactory.newxmlSignature (firmedInfo, keyInfo);
}
}
Espero que este artículo sea útil para la programación Java de todos.