< prev index next >

src/java.base/share/classes/sun/security/util/SignatureUtil.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 27,148 **** import java.io.IOException; import java.security.*; import java.security.spec.*; import sun.security.rsa.RSAUtil; - import jdk.internal.access.SharedSecrets; /** * Utility class for Signature related operations. Currently used by various * internal PKI classes such as sun.security.x509.X509CertImpl, * sun.security.pkcs.SignerInfo, for setting signature parameters. * * @since 11 */ public class SignatureUtil { - private static String checkName(String algName) throws ProviderException { - if (algName.indexOf(".") == -1) { - return algName; - } - // convert oid to String - try { - return Signature.getInstance(algName).getAlgorithm(); - } catch (Exception e) { - throw new ProviderException("Error mapping algorithm name", e); - } - } - // Utility method of creating an AlgorithmParameters object with // the specified algorithm name and encoding private static AlgorithmParameters createAlgorithmParameters(String algName, byte[] paramBytes) throws ProviderException { try { - algName = checkName(algName); AlgorithmParameters result = AlgorithmParameters.getInstance(algName); result.init(paramBytes); return result; } catch (NoSuchAlgorithmException | IOException e) { throw new ProviderException(e); } } ! // Utility method for converting the specified AlgorithmParameters object ! // into an AlgorithmParameterSpec object. ! public static AlgorithmParameterSpec getParamSpec(String sigName, AlgorithmParameters params) ! throws ProviderException { ! sigName = checkName(sigName); ! AlgorithmParameterSpec paramSpec = null; ! if (params != null) { ! if (sigName.toUpperCase().indexOf("RSA") == -1) { ! throw new ProviderException ! ("Unrecognized algorithm for signature parameters " + ! sigName); ! } ! // AlgorithmParameters.getAlgorithm() may returns oid if it's ! // created during DER decoding. Convert to use the standard name ! // before passing it to RSAUtil ! if (params.getAlgorithm().indexOf(".") != -1) { ! try { ! params = createAlgorithmParameters(sigName, ! params.getEncoded()); ! } catch (IOException e) { ! throw new ProviderException(e); ! } } - paramSpec = RSAUtil.getParamSpec(params); } ! return paramSpec; } ! // Utility method for converting the specified parameter bytes into an ! // AlgorithmParameterSpec object. ! public static AlgorithmParameterSpec getParamSpec(String sigName, ! byte[] paramBytes) ! throws ProviderException { ! sigName = checkName(sigName); ! AlgorithmParameterSpec paramSpec = null; if (paramBytes != null) { ! if (sigName.toUpperCase().indexOf("RSA") == -1) { ! throw new ProviderException ! ("Unrecognized algorithm for signature parameters " + ! sigName); ! } AlgorithmParameters params = createAlgorithmParameters(sigName, paramBytes); ! paramSpec = RSAUtil.getParamSpec(params); } - return paramSpec; - } - - // Utility method for initializing the specified Signature object - // for verification with the specified key and params (may be null) - public static void initVerifyWithParam(Signature s, PublicKey key, - AlgorithmParameterSpec params) - throws ProviderException, InvalidAlgorithmParameterException, - InvalidKeyException { - SharedSecrets.getJavaSecuritySignatureAccess().initVerify(s, key, params); - } - - // Utility method for initializing the specified Signature object - // for verification with the specified Certificate and params (may be null) - public static void initVerifyWithParam(Signature s, - java.security.cert.Certificate cert, - AlgorithmParameterSpec params) - throws ProviderException, InvalidAlgorithmParameterException, - InvalidKeyException { - SharedSecrets.getJavaSecuritySignatureAccess().initVerify(s, cert, params); } ! // Utility method for initializing the specified Signature object ! // for signing with the specified key and params (may be null) ! public static void initSignWithParam(Signature s, PrivateKey key, ! AlgorithmParameterSpec params, SecureRandom sr) ! throws ProviderException, InvalidAlgorithmParameterException, ! InvalidKeyException { ! SharedSecrets.getJavaSecuritySignatureAccess().initSign(s, key, params, sr); } } --- 27,105 ---- import java.io.IOException; import java.security.*; import java.security.spec.*; import sun.security.rsa.RSAUtil; /** * Utility class for Signature related operations. Currently used by various * internal PKI classes such as sun.security.x509.X509CertImpl, * sun.security.pkcs.SignerInfo, for setting signature parameters. * * @since 11 */ public class SignatureUtil { // Utility method of creating an AlgorithmParameters object with // the specified algorithm name and encoding private static AlgorithmParameters createAlgorithmParameters(String algName, byte[] paramBytes) throws ProviderException { try { AlgorithmParameters result = AlgorithmParameters.getInstance(algName); result.init(paramBytes); return result; } catch (NoSuchAlgorithmException | IOException e) { throw new ProviderException(e); } } ! private static AlgorithmParameterSpec getParamSpec(String sigName, AlgorithmParameters params) ! throws InvalidAlgorithmParameterException, ProviderException { ! if (params == null) return null; ! ! if (sigName.toUpperCase().indexOf("RSA") == -1) { ! throw new ProviderException ! ("Unrecognized algorithm for signature parameters " + ! sigName); ! } ! // AlgorithmParameters.getAlgorithm() may returns oid if it's ! // created during DER decoding. Convert to use the standard name ! // before passing it to RSAUtil ! String alg = params.getAlgorithm(); ! if (alg.equalsIgnoreCase(sigName) || alg.indexOf(".") != -1) { ! try { ! params = createAlgorithmParameters(sigName, ! params.getEncoded()); ! } catch (IOException e) { ! throw new ProviderException(e); } } ! return RSAUtil.getParamSpec(params); } ! // Special method for setting the specified parameter bytes into the ! // specified Signature object as signature parameters. ! public static void specialSetParameter(Signature sig, byte[] paramBytes) ! throws InvalidAlgorithmParameterException, ProviderException { if (paramBytes != null) { ! String sigName = sig.getAlgorithm(); AlgorithmParameters params = createAlgorithmParameters(sigName, paramBytes); ! specialSetParameter(sig, params); } } ! // Special method for setting the specified AlgorithmParameter object ! // into the specified Signature object as signature parameters. ! public static void specialSetParameter(Signature sig, ! AlgorithmParameters params) ! throws InvalidAlgorithmParameterException, ProviderException { ! if (params != null) { ! String sigName = sig.getAlgorithm(); ! sig.setParameter(getParamSpec(sigName, params)); ! } } }
< prev index next >