XML-знак Java добавить X509IssuerSerial (имя и номер)

Я не знаю, как добавить X509IssuerName и X509IssuerSerialNumber к моему подписанному XML из моего сертификата.

Я использую Java 1.6.

Это мой код:

KeyStore p12 = KeyStore.getInstance("pkcs12");
p12.load(new FileInputStream("c:/cert/mycert.p12"),"PASSWORD".toCharArray());
Enumeration e = p12.aliases();
String alias = (String) e.nextElement();
System.out.println("Cert alias:" + alias);
Key privateKey = p12.getKey(alias, "PASSWORD".toCharArray());
KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) p12.getEntry(alias, new KeyStore.PasswordProtection("PASSWORD".toCharArray()));
X509Certificate cert = (X509Certificate) keyEntry.getCertificate();   
KeyInfoFactory kif = fac.getKeyInfoFactory();
List x509Content = new ArrayList();  
x509Content.add(cert.getSubjectX500Principal().getName()); 
X509Data xd = kif.newX509Data(x509Content);
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
DOMSignContext dsc = new DOMSignContext(privateKey, doc.getDocumentElement());
XMLSignature signature = fac.newXMLSignature(si, ki);
signature.sign(dsc);

Что я должен добавить к x509Content список, чтобы получить что-то вроде этого в моем узле X509Data?

<X509IssuerSerial>
   <X509IssuerName>CN=Tax CA Test,O=state-institutions,C=SI</X509IssuerName>
   <X509SerialNumber>4723074879886330622</X509SerialNumber>
</X509IssuerSerial>

Я получил исходный код здесь: http://www.oracle.com/technetwork/articles/javase/dig-signature-api-140772.html

Также, если я попытаюсь бежать

cert.getSerialNumber();

выдаст исключение java.lang.ClassCastException: content[1] не является допустимым типом X509Data

1 ответ

final List<Object> x509Content = new ArrayList<Object>();
final X509IssuerSerial issuer = kifactory.newX509IssuerSerial(x509ce.getIssuerX500Principal().getName(),x509ce.getSerialNumber());
x509Content.add(issuer);
Другие вопросы по тегам