zu erzeugen unzählige Stunden Nach dem Kampf habe ich endlich den aktuellen Code Arbeits CMS hüllt zu erzeugen (RSA-OAEP/PKCS # 1) Daten mit Informationen Empfänger mit JCE/JCA:Wie BouncyCastle lightwigth API verwenden cms Daten hüllt
String digest = "SHA-256";
String mgfDigest = "SHA-256";
// Data to encrypt
CMSTypedData msg = new CMSProcessableByteArray(data);
// Generator for my CMS enveloped data
CMSEnvelopedDataGenerator envelopedDataGen = new CMSEnvelopedDataGenerator();
// Recipient Info Stuff
JcaAlgorithmParametersConverter paramsConverter = new JcaAlgorithmParametersConverter();
OAEPParameterSpec oaepSpec = new OAEPParameterSpec(digest, "MGF1", new MGF1ParameterSpec(mgfDigest), PSource.PSpecified.DEFAULT);
AlgorithmIdentifier oaepAlgId = paramsConverter.getAlgorithmIdentifier(PKCSObjectIdentifiers.id_RSAES_OAEP, oaepSpec);
envelopedDataGen.addRecipientInfoGenerator(
new JceKeyTransRecipientInfoGenerator(
getCert(),
oaepAlgId).setProvider("BC"));
/*
* Generate CMS-Data
* CMSOutputEncryptor is my own Class implementing OutputEncryptor
*/
CMSEnvelopedData ed = envelopedDataGen.generate(
msg,
new CMSOutputEncryptor());
byte[] encoded = ed.getEncoded();
Dies funktioniert wie erwartet, aber weil es JCE verwendet meine Kunden müssen die unbegrenzte Stärke API installieren, um diesen Code zu verwenden. Ich würde einen Weg bevorzugen, diese Bedürfnisse zu überwinden, weil die meisten meiner Kunden Finger sind Daumen ...
Vielleicht kann mir jemand ein Stück Code zeigen, die eine reine BouncyCastle Art und Weise, das gleiche zu tun, so dass man nicht brauchen um die unbegrenzte Stärke API zu installieren?
Danke für diesen Code, aber AFAIK das wird nicht mehr funktionieren, weil die statischen Felder jetzt endlich sind. Bitte werfen Sie einen Blick auf https://github.com/jruby/jruby/issues/4101. Am Ende habe ich beschlossen, eine volle Java JRE mit unbegrenzter Stärke API aktiviert zu liefern. Aber gut zu wissen, dass mein Code eine Hilfe für dich war. –
Diese Zeile setzt den Modifikator auf nicht-final: modifiers.setInt (isRestricted, isRestricted.getModifiers() & ~ Modifier.FINAL); – Juraj