Guest User

Untitled

a guest
Jan 30th, 2021
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.06 KB | None | 0 0
  1. import org.bouncycastle.openssl.PEMParser;
  2. import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
  3. import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
  4. import java.io.StringReader;
  5. import java.util.Base64;
  6. import java.security.interfaces.RSAPublicKey;
  7. import java.security.Signature;
  8. import java.security.spec.PSSParameterSpec;
  9. import java.security.spec.MGF1ParameterSpec;
  10. import java.security.MessageDigest;
  11.  
  12. public class MyTest
  13. {
  14.     public static void main(String[] args) throws Exception
  15.     {
  16.         String plaintext = "zzz";
  17.         String signature = "JwqW/Xhh1hFxP5pGJAKkdVM+6WZ5FtQuPdwlmDq+pmJXknIybW4f31w7lJiBvc2VL8fNXg1DllwuwyCnErKRSygDGwdzkHJ/chvrjUequhiqoPhgKe3vQCFvJdlbeUEkF2Ho2qK5xU0VI3ViS1htDuQXJvCHm30wO+zgW9kshCE=";
  18.  
  19.         String key = "-----BEGIN RSA PUBLIC KEY-----\n" +
  20. "MIGJAoGBAM5iHBWEep6wz0o6PrD0MdmjuO2SJivi0Ik01eFZn3GuyEpUvMI1eLtH\n" +
  21. "77wFORzI2eQTc2sGYWctEZk4k/Im91TFW0ahYyeB2m1XQ/cSY8RO9nyrWiGPJjzI\n" +
  22. "FuePuh8dqWHT2hGDfD9CmMmz7Zb+fltmSZ3siF9XbWyUTnemQpOtAgMBAAE=\n" +
  23. "-----END RSA PUBLIC KEY-----\n";
  24.  
  25.         // load the public key
  26.         PEMParser pemParser = new PEMParser(new StringReader(key));
  27.         JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
  28.         SubjectPublicKeyInfo pub = SubjectPublicKeyInfo.getInstance(pemParser.readObject());
  29.         RSAPublicKey publicKey = (RSAPublicKey) converter.getPublicKey(pub);
  30.  
  31.         // load the plaintext
  32.         byte[] signatureBytes = Base64.getDecoder().decode(signature);
  33.  
  34.         // perform the actual signature verification
  35.         Signature sig = Signature.getInstance("RSASSA-PSS");
  36.         PSSParameterSpec pssParams = new PSSParameterSpec(
  37.             "SHA-256",
  38.             "MGF1",
  39.             new MGF1ParameterSpec("SHA-1"),
  40.             MessageDigest.getInstance("SHA-256").getDigestLength(),
  41.             PSSParameterSpec.TRAILER_FIELD_BC
  42.         );
  43.         sig.setParameter(pssParams);
  44.  
  45.         sig.initVerify(publicKey);
  46.         sig.update(plaintext.getBytes());
  47.         System.out.println(sig.verify(signatureBytes) ? "good" : "bad");
  48.     }
  49. }
Add Comment
Please, Sign In to add comment