org.bouncycastle.asn1.x509.DigestInfo Java Examples
The following examples show how to use
org.bouncycastle.asn1.x509.DigestInfo.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: RsaSigningClient.java From protect with MIT License | 6 votes |
public static BigInteger EMSA_PKCS1_V1_5_ENCODE(byte[] input, final BigInteger modulus) throws NoSuchAlgorithmException, IOException { // Digest the input final MessageDigest md = MessageDigest.getInstance(HASH_ALGORITHM); final byte[] digest = md.digest(input); // Create a digest info consisting of the algorithm id and the hash final AlgorithmIdentifier algId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha512, DERNull.INSTANCE); final DigestInfo digestInfo = new DigestInfo(algId, digest); final byte[] message = digestInfo.getEncoded(ASN1Encoding.DER); // Do PKCS1 padding final byte[] block = new byte[(modulus.bitLength() / 8) - 1]; System.arraycopy(message, 0, block, block.length - message.length, message.length); block[0] = 0x01; // type code 1 for (int i = 1; i != block.length - message.length - 1; i++) { block[i] = (byte) 0xFF; } return new BigInteger(1, block); }
Example #2
Source File: RsaCertificateAuthorityClient.java From protect with MIT License | 6 votes |
/*** Static Methods ***/ private static BigInteger EMSA_PKCS1_V1_5_ENCODE(byte[] input, final BigInteger modulus) throws NoSuchAlgorithmException, IOException { // Digest the input final MessageDigest md = MessageDigest.getInstance(HASH_ALGORITHM); final byte[] digest = md.digest(input); // Create a digest info consisting of the algorithm id and the hash final AlgorithmIdentifier algId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha512, DERNull.INSTANCE); final DigestInfo digestInfo = new DigestInfo(algId, digest); final byte[] message = digestInfo.getEncoded(ASN1Encoding.DER); // Do PKCS1 padding final byte[] block = new byte[((modulus.bitLength() + 7) / 8) - 1]; System.arraycopy(message, 0, block, block.length - message.length, message.length); block[0] = 0x01; // type code 1 for (int i = 1; i != block.length - message.length - 1; i++) { block[i] = (byte) 0xFF; } return new BigInteger(1, block); }
Example #3
Source File: SignInSteps.java From testarea-itext5 with GNU Affero General Public License v3.0 | 5 votes |
/** * <a href="http://stackoverflow.com/questions/33305800/difference-between-sha256withrsa-and-sha256-then-rsa"> * Difference between SHA256withRSA and SHA256 then RSA * </a> * <p> * This method is the updated code provided by the OP. As expected it shows two equal signatures. * The OP's observations seem to differ, though. * </p> */ public void testAsGreenhandUpdated(PrivateKey privateKey) throws GeneralSecurityException, IOException { System.out.println("\nGreenhandUpdated:"); String s = "1234"; MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); messageDigest.update(s.getBytes()); byte[] outputDigest = messageDigest.digest(); AlgorithmIdentifier sha256Aid = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha256, DERNull.INSTANCE); DigestInfo di = new DigestInfo(sha256Aid, outputDigest); //sign SHA256 with RSA Signature rsaSignature = Signature.getInstance("RSA"); rsaSignature.initSign(privateKey); byte[] encodedDigestInfo = di.toASN1Primitive().getEncoded(); rsaSignature.update(encodedDigestInfo); byte[] signed = rsaSignature.sign(); System.out.println("method 1: "+bytesToHex(signed)); System.out.println(" hash: " + bytesToHex(outputDigest)); System.out.println(" algo: " + sha256Aid.getAlgorithm()); System.out.println(" info: " + bytesToHex(encodedDigestInfo)); //compute SHA256withRSA as a single step Signature rsaSha256Signature = Signature.getInstance("SHA256withRSA"); rsaSha256Signature.initSign(privateKey); rsaSha256Signature.update(s.getBytes()); byte[] signed2 = rsaSha256Signature.sign(); System.out.println("method 2: "+bytesToHex(signed2)); }
Example #4
Source File: P11RSADigestSignatureSpi.java From xipki with Apache License 2.0 | 5 votes |
private byte[] derEncode(byte[] hash) throws IOException { if (digestAlgId == null) { // For raw RSA, the DigestInfo must be prepared externally return hash; } DigestInfo digestInfo = new DigestInfo(digestAlgId, hash); return digestInfo.getEncoded(ASN1Encoding.DER); }
Example #5
Source File: DSSUtils.java From dss with GNU Lesser General Public License v2.1 | 3 votes |
/** * This method wraps the digest value in a DigestInfo (combination of digest * algorithm and value). This encapsulation is required to operate NONEwithRSA * signatures. * * @param digestAlgorithm * the used digest algorithm * @param digest * the digest value * @return DER encoded binaries of the related digest info */ public static byte[] encodeRSADigest(final DigestAlgorithm digestAlgorithm, final byte[] digest) { try { AlgorithmIdentifier algId = new AlgorithmIdentifier(new ASN1ObjectIdentifier(digestAlgorithm.getOid()), DERNull.INSTANCE); DigestInfo digestInfo = new DigestInfo(algId, digest); return digestInfo.getEncoded(ASN1Encoding.DER); } catch (IOException e) { throw new DSSException("Unable to encode digest", e); } }