Refine search
private static Map<SignatureAlgorithm, PSSParameterSpec> createPssParameterSpecs() { Map<SignatureAlgorithm, PSSParameterSpec> m = new HashMap<SignatureAlgorithm, PSSParameterSpec>(); MGF1ParameterSpec ps = MGF1ParameterSpec.SHA256; PSSParameterSpec spec = new PSSParameterSpec(ps.getDigestAlgorithm(), "MGF1", ps, 32, 1); m.put(SignatureAlgorithm.PS256, spec); ps = MGF1ParameterSpec.SHA384; spec = new PSSParameterSpec(ps.getDigestAlgorithm(), "MGF1", ps, 48, 1); m.put(SignatureAlgorithm.PS384, spec); ps = MGF1ParameterSpec.SHA512; spec = new PSSParameterSpec(ps.getDigestAlgorithm(), "MGF1", ps, 64, 1); m.put(SignatureAlgorithm.PS512, spec); return m; }
if (!DigestFactory.isSameDigest(originalSpec.getDigestAlgorithm(), newParamSpec.getDigestAlgorithm())) { throw new InvalidParameterException("parameter must be using " + originalSpec.getDigestAlgorithm()); MGF1ParameterSpec mgfParams = (MGF1ParameterSpec) newParamSpec.getMGFParameters(); if (!DigestFactory.isSameDigest(mgfParams.getDigestAlgorithm(), newParamSpec.getDigestAlgorithm())) { throw new InvalidParameterException( Digest newDigest = DigestFactory.getDigest(mgfParams.getDigestAlgorithm()); "no match on MGF digest algorithm: " + mgfParams.getDigestAlgorithm());
public SHA512withRSA() { super(new PSSParameterSpec("SHA-512", "MGF1", new MGF1ParameterSpec("SHA-512"), 64, 1)); }
private void readOAEPParameters(OAEPParameterSpec spec) throws InvalidAlgorithmParameterException { String mgfAlgUpper = spec.getMGFAlgorithm().toUpperCase(Locale.US); AlgorithmParameterSpec mgfSpec = spec.getMGFParameters(); if ((!EvpMdRef.MGF1_ALGORITHM_NAME.equals(mgfAlgUpper) && !EvpMdRef.MGF1_OID.equals(mgfAlgUpper)) || !(mgfSpec instanceof MGF1ParameterSpec)) { throw new InvalidAlgorithmParameterException( "Only MGF1 supported as mask generation function"); } MGF1ParameterSpec mgf1spec = (MGF1ParameterSpec) mgfSpec; String oaepAlgUpper = spec.getDigestAlgorithm().toUpperCase(Locale.US); try { oaepMd = EvpMdRef.getEVP_MDByJcaDigestAlgorithmStandardName(oaepAlgUpper); oaepMdSizeBytes = EvpMdRef.getDigestSizeBytesByJcaDigestAlgorithmStandardName(oaepAlgUpper); mgf1Md = EvpMdRef.getEVP_MDByJcaDigestAlgorithmStandardName( mgf1spec.getDigestAlgorithm()); } catch (NoSuchAlgorithmException e) { throw new InvalidAlgorithmParameterException(e); } PSource pSource = spec.getPSource(); if (!"PSpecified".equals(pSource.getAlgorithm()) || !(pSource instanceof PSource.PSpecified)) { throw new InvalidAlgorithmParameterException( "Only PSpecified accepted for PSource"); } label = ((PSource.PSpecified) pSource).getValue(); }
private static OAEPParameterSpec getOAEPParameterSpec(String algorithm, String oaepHashingAlgorithm) { if (algorithm.contains("OAEPWith")) { //OAEPWith<digest>And<mgf>Padding // String template = "OAEPWith<digest>And<mgf>Padding"; int startDigest = algorithm.indexOf("OAEPWith") + 8; int endDigest = algorithm.indexOf("And"); int startPadding = endDigest + 3; int endPadding = algorithm.indexOf("Padding"); String digest = algorithm.substring(startDigest, endDigest); String padding = algorithm.substring(startPadding, endPadding); if (oaepHashingAlgorithm != null) { return new OAEPParameterSpec(digest, padding, new MGF1ParameterSpec(oaepHashingAlgorithm), PSource.PSpecified.DEFAULT); } else { return new OAEPParameterSpec(digest, padding, new MGF1ParameterSpec(digest), PSource.PSpecified.DEFAULT); } } return null; }
private void initFromSpec( OAEPParameterSpec pSpec) throws NoSuchPaddingException { MGF1ParameterSpec mgfParams = (MGF1ParameterSpec)pSpec.getMGFParameters(); Digest digest = DigestFactory.getDigest(mgfParams.getDigestAlgorithm()); if (digest == null) { throw new NoSuchPaddingException("no match on OAEP constructor for digest algorithm: "+ mgfParams.getDigestAlgorithm()); } cipher = new OAEPEncoding(new RSABlindedEngine(), digest, ((PSource.PSpecified)pSpec.getPSource()).getValue()); paramSpec = pSpec; }
protected void engineInit( byte[] params) throws IOException { try { RSAESOAEPparams oaepP = RSAESOAEPparams.getInstance(params); if (!oaepP.getMaskGenAlgorithm().getAlgorithm().equals(PKCSObjectIdentifiers.id_mgf1)) { throw new IOException("unknown mask generation function: " + oaepP.getMaskGenAlgorithm().getAlgorithm()); } currentSpec = new OAEPParameterSpec( MessageDigestUtils.getDigestName(oaepP.getHashAlgorithm().getAlgorithm()), OAEPParameterSpec.DEFAULT.getMGFAlgorithm(), new MGF1ParameterSpec(MessageDigestUtils.getDigestName(AlgorithmIdentifier.getInstance(oaepP.getMaskGenAlgorithm().getParameters()).getAlgorithm())), new PSource.PSpecified(ASN1OctetString.getInstance(oaepP.getPSourceAlgorithm().getParameters()).getOctets())); } catch (ClassCastException e) { throw new IOException("Not a valid OAEP Parameter encoding."); } catch (ArrayIndexOutOfBoundsException e) { throw new IOException("Not a valid OAEP Parameter encoding."); } }
Cipher oaepFromInit = Cipher.getInstance("RSA/ECB/OAEPPadding"); OAEPParameterSpec oaepParams = new OAEPParameterSpec("SHA-256", "MGF1", new MGF1ParameterSpec("SHA-1"), PSpecified.DEFAULT); oaepFromInit.init(Cipher.DECRYPT_MODE, privkey, oaepParams); byte[] pt = oaepFromInit.doFinal(ct); System.out.println(new String(pt, StandardCharsets.UTF_8));
if (!mgfSpec.getDigestAlgorithm().equals("SHA-1")) { long mgfRef = 0; long mgfParamsRef = 0; mgfParamsRef = writeAlgorithmIdentifier(mgfRef, MGF1_OID); hashParamsRef = writeAlgorithmIdentifier( mgfParamsRef, NAME_TO_OID.get(mgfSpec.getDigestAlgorithm())); NativeCrypto.asn1_write_null(hashParamsRef); } finally {
if (!DigestFactory.isSameDigest(originalSpec.getDigestAlgorithm(), newParamSpec.getDigestAlgorithm())) { throw new InvalidParameterException("parameter must be using " + originalSpec.getDigestAlgorithm()); MGF1ParameterSpec mgfParams = (MGF1ParameterSpec) newParamSpec.getMGFParameters(); if (!DigestFactory.isSameDigest(mgfParams.getDigestAlgorithm(), newParamSpec.getDigestAlgorithm())) { throw new InvalidParameterException( Digest newDigest = DigestFactory.getDigest(mgfParams.getDigestAlgorithm()); "no match on MGF digest algorithm: " + mgfParams.getDigestAlgorithm());
public SHA3_256withRSA() { super(new PSSParameterSpec("SHA3-256", "MGF1", new MGF1ParameterSpec("SHA3-256"), 32, 1)); }
private void readOAEPParameters(OAEPParameterSpec spec) throws InvalidAlgorithmParameterException { String mgfAlgUpper = spec.getMGFAlgorithm().toUpperCase(Locale.US); AlgorithmParameterSpec mgfSpec = spec.getMGFParameters(); if ((!EvpMdRef.MGF1_ALGORITHM_NAME.equals(mgfAlgUpper) && !EvpMdRef.MGF1_OID.equals(mgfAlgUpper)) || !(mgfSpec instanceof MGF1ParameterSpec)) { throw new InvalidAlgorithmParameterException( "Only MGF1 supported as mask generation function"); } MGF1ParameterSpec mgf1spec = (MGF1ParameterSpec) mgfSpec; String oaepAlgUpper = spec.getDigestAlgorithm().toUpperCase(Locale.US); try { oaepMd = EvpMdRef.getEVP_MDByJcaDigestAlgorithmStandardName(oaepAlgUpper); oaepMdSizeBytes = EvpMdRef.getDigestSizeBytesByJcaDigestAlgorithmStandardName(oaepAlgUpper); mgf1Md = EvpMdRef.getEVP_MDByJcaDigestAlgorithmStandardName( mgf1spec.getDigestAlgorithm()); } catch (NoSuchAlgorithmException e) { throw new InvalidAlgorithmParameterException(e); } PSource pSource = spec.getPSource(); if (!"PSpecified".equals(pSource.getAlgorithm()) || !(pSource instanceof PSource.PSpecified)) { throw new InvalidAlgorithmParameterException( "Only PSpecified accepted for PSource"); } label = ((PSource.PSpecified) pSource).getValue(); }
MGF1ParameterSpec mgfParameterSpec = new MGF1ParameterSpec("SHA-1"); if (XMLCipher.RSA_OAEP_11.equals(encryptionAlgorithm)) { if (EncryptionConstants.MGF1_SHA256.equals(mgfAlgorithm)) { mgfParameterSpec = new MGF1ParameterSpec("SHA-256"); } else if (EncryptionConstants.MGF1_SHA384.equals(mgfAlgorithm)) { mgfParameterSpec = new MGF1ParameterSpec("SHA-384"); } else if (EncryptionConstants.MGF1_SHA512.equals(mgfAlgorithm)) { mgfParameterSpec = new MGF1ParameterSpec("SHA-512"); return new OAEPParameterSpec(jceDigestAlgorithm, "MGF1", mgfParameterSpec, pSource);
private void initFromSpec( OAEPParameterSpec pSpec) throws NoSuchPaddingException { MGF1ParameterSpec mgfParams = (MGF1ParameterSpec)pSpec.getMGFParameters(); Digest digest = DigestFactory.getDigest(mgfParams.getDigestAlgorithm()); if (digest == null) { throw new NoSuchPaddingException("no match on OAEP constructor for digest algorithm: "+ mgfParams.getDigestAlgorithm()); } cipher = new OAEPEncoding(new RSABlindedEngine(), digest, ((PSource.PSpecified)pSpec.getPSource()).getValue()); paramSpec = pSpec; }
protected void engineInit( byte[] params) throws IOException { try { RSAESOAEPparams oaepP = RSAESOAEPparams.getInstance(params); if (!oaepP.getMaskGenAlgorithm().getAlgorithm().equals(PKCSObjectIdentifiers.id_mgf1)) { throw new IOException("unknown mask generation function: " + oaepP.getMaskGenAlgorithm().getAlgorithm()); } currentSpec = new OAEPParameterSpec( MessageDigestUtils.getDigestName(oaepP.getHashAlgorithm().getAlgorithm()), OAEPParameterSpec.DEFAULT.getMGFAlgorithm(), new MGF1ParameterSpec(MessageDigestUtils.getDigestName(AlgorithmIdentifier.getInstance(oaepP.getMaskGenAlgorithm().getParameters()).getAlgorithm())), new PSource.PSpecified(ASN1OctetString.getInstance(oaepP.getPSourceAlgorithm().getParameters()).getOctets())); } catch (ClassCastException e) { throw new IOException("Not a valid OAEP Parameter encoding."); } catch (ArrayIndexOutOfBoundsException e) { throw new IOException("Not a valid OAEP Parameter encoding."); } }
if (!mgfSpec.getDigestAlgorithm().equals("SHA-1")) { long mgfRef = 0; long mgfParamsRef = 0; mgfParamsRef = writeAlgorithmIdentifier(mgfRef, MGF1_OID); hashParamsRef = writeAlgorithmIdentifier( mgfParamsRef, NAME_TO_OID.get(mgfSpec.getDigestAlgorithm())); NativeCrypto.asn1_write_null(hashParamsRef); } finally {
if (!DigestFactory.isSameDigest(originalSpec.getDigestAlgorithm(), newParamSpec.getDigestAlgorithm())) { throw new InvalidParameterException("parameter must be using " + originalSpec.getDigestAlgorithm()); MGF1ParameterSpec mgfParams = (MGF1ParameterSpec) newParamSpec.getMGFParameters(); if (!DigestFactory.isSameDigest(mgfParams.getDigestAlgorithm(), newParamSpec.getDigestAlgorithm())) { throw new InvalidParameterException( Digest newDigest = DigestFactory.getDigest(mgfParams.getDigestAlgorithm()); "no match on MGF digest algorithm: " + mgfParams.getDigestAlgorithm());
public SHA384withRSA() { super(new PSSParameterSpec("SHA-384", "MGF1", new MGF1ParameterSpec("SHA-384"), 48, 1)); }
private static AlgorithmIdentifier extractFromSpec(AlgorithmParameterSpec algorithmParameterSpec) { if (algorithmParameterSpec instanceof OAEPParameterSpec) { OAEPParameterSpec oaepSpec = (OAEPParameterSpec)algorithmParameterSpec; if (oaepSpec.getMGFAlgorithm().equals(OAEPParameterSpec.DEFAULT.getMGFAlgorithm())) { if (oaepSpec.getPSource() instanceof PSource.PSpecified) { return new AlgorithmIdentifier(PKCSObjectIdentifiers.id_RSAES_OAEP, new RSAESOAEPparams(getDigest(oaepSpec.getDigestAlgorithm()), new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, getDigest(((MGF1ParameterSpec)oaepSpec.getMGFParameters()).getDigestAlgorithm())), new AlgorithmIdentifier(PKCSObjectIdentifiers.id_pSpecified, new DEROctetString(((PSource.PSpecified)oaepSpec.getPSource()).getValue())))); } else { throw new IllegalArgumentException("unknown PSource: " + oaepSpec.getPSource().getAlgorithm()); } } else { throw new IllegalArgumentException("unknown MGF: " + oaepSpec.getMGFAlgorithm()); } } throw new IllegalArgumentException("unknown spec: " + algorithmParameterSpec.getClass().getName()); }
MGF1ParameterSpec mgfParameterSpec = new MGF1ParameterSpec("SHA-1"); if (XMLCipher.RSA_OAEP_11.equals(encryptionAlgorithm)) { if (EncryptionConstants.MGF1_SHA256.equals(mgfAlgorithm)) { mgfParameterSpec = new MGF1ParameterSpec("SHA-256"); } else if (EncryptionConstants.MGF1_SHA384.equals(mgfAlgorithm)) { mgfParameterSpec = new MGF1ParameterSpec("SHA-384"); } else if (EncryptionConstants.MGF1_SHA512.equals(mgfAlgorithm)) { mgfParameterSpec = new MGF1ParameterSpec("SHA-512"); return new OAEPParameterSpec(jceDigestAlgorithm, "MGF1", mgfParameterSpec, pSource);