Advertisement
Guest User

Untitled

a guest
Sep 28th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. import org.bitcoinj.core.ECKey;
  2. import java.security.SignatureException;
  3.  
  4. public class Test
  5. {
  6. public static void main(String[] args)
  7. {
  8. String message = "some arbitrary message";
  9.  
  10. ECKey k1 = new ECKey(); // random , compressed
  11. ECKey k2 = k1.decompress();
  12.  
  13. // Signature (r,s) encoded as 65 bytes, with leading byte
  14. // allowing key recovery (including compression status)
  15. String sig1 = k1.signMessage(message);
  16. String sig2 = k2.signMessage(message);
  17.  
  18. // compression status is encoded in signature => differing leading byte
  19. System.out.println(sig1); // INgDhkt98Mme9m9AQ+nqtjyvjj ...
  20. System.out.println(sig2); // HNgDhkt98Mme9m9AQ+nqtjyvjj ...
  21.  
  22. // signatures are verified succesfully
  23. try
  24. {
  25. k1.verifyMessage(message, sig1); // compressed case
  26. }
  27. catch(SignatureException e)
  28. {
  29. System.out.println("it should not happen");
  30. }
  31.  
  32. try
  33. {
  34. k2.verifyMessage(message, sig2); // uncompressed case
  35. }
  36. catch(SignatureException e)
  37. {
  38. System.out.println("it should not happen");
  39. }
  40.  
  41. // in fact, compression status is ignored ...
  42. try
  43. {
  44. k1.verifyMessage(message, sig2); // should it throw ?
  45. }
  46. catch(SignatureException e)
  47. {
  48. System.out.println("it does not happen");
  49. }
  50.  
  51. }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement