Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: davidjim on March 16, 2016, 09:30:36 AM



Title: implement Bitcoin Core?s signmessage command
Post by: davidjim on March 16, 2016, 09:30:36 AM
How do I implement Bitcoin Core?s signmessage command in Java?

In order to get a signature, I used the following code:

ECKey key = ECKey.fromPrivate("morR2S8NfjiphGnGWwXuSXPoW9pRM9Du9h".getBytes());
String signature = key.signMessage(?create 225015613080074076?);

But I got the following exception. I don't know why?

java.lang.ArrayIndexOutOfBoundsException
   at java.lang.System.arraycopy(Native Method)
   at org.spongycastle.crypto.signers.HMacDSAKCalculator.init(HMacDSAKCalculator.java:58)
   at org.spongycastle.crypto.signers.ECDSASigner.generateSignature(ECDSASigner.java:94)
   at org.bitcoinj.core.ECKey.doSign(ECKey.java:629)
   at org.bitcoinj.core.ECKey.sign(ECKey.java:619)
   at org.bitcoinj.core.ECKey.signMessage(ECKey.java:769)
   at org.bitcoinj.core.ECKey.signMessage(ECKey.java:756)
   at com.am.coinspark.service.MessageCreate.getSignature(MessageCreate.java:115)
   at com.am.coinspark.service.MessageCreate.main(MessageCreate.java:94)


Title: Re: implement Bitcoin Core?s signmessage command
Post by: tonytumble on March 16, 2016, 01:52:52 PM
How do I implement Bitcoin Core?s signmessage command in Java?

In order to get a signature, I used the following code:

ECKey key = ECKey.fromPrivate("morR2S8NfjiphGnGWwXuSXPoW9pRM9Du9h".getBytes());
String signature = key.signMessage(?create 225015613080074076?);

But I got the following exception. I don't know why?

java.lang.ArrayIndexOutOfBoundsException
   at java.lang.System.arraycopy(Native Method)
   at org.spongycastle.crypto.signers.HMacDSAKCalculator.init(HMacDSAKCalculator.java:58)
   at org.spongycastle.crypto.signers.ECDSASigner.generateSignature(ECDSASigner.java:94)
   at org.bitcoinj.core.ECKey.doSign(ECKey.java:629)
   at org.bitcoinj.core.ECKey.sign(ECKey.java:619)
   at org.bitcoinj.core.ECKey.signMessage(ECKey.java:769)
   at org.bitcoinj.core.ECKey.signMessage(ECKey.java:756)
   at com.am.coinspark.service.MessageCreate.getSignature(MessageCreate.java:115)
   at com.am.coinspark.service.MessageCreate.main(MessageCreate.java:94)


follow this instructions: http://bitcoin.stackexchange.com/questions/42245/eckey-ecdsasignature-creation

here is the explicit method description: https://bitcoinj.github.io/javadoc/0.12/org/bitcoinj/core/ECKey.html#signMessage-java.lang.String-

hope it s clear now.