user31202: I have my ECKey key. In order to create an ECDSASignature object with BitcoinJ, we have to call ECDSASignature mySignature = key.sign(Sha256Hash input).
Is the Sha256Hash input my message? Or is it the result of Sha256(byte[] myArray)?
What if I don't have a message to sign? Is it acceptable to sign the key.getPrivKeyBytes() in order to create an ECDSASignature, or it is unacceptable because it reveals information including in getPrivKeyBytes() and as a result reveal my private key?
And if it is unacceptable what must be my message? Can I can sign whatever I want in order to create my ECDSASignature?

user31202: Signing the bytes of the private key of ECKey key is unacceptable because you are vulnerable for realeasing information about your private key.
In the case of signing a message(as a String) you have to estimate the :
 byte[] result= sha256(message)

The result will be a byte[] and this array finally will insert to the :
 Sha256Hash input= new Sha256Hash(result);

Then the procedure is simple in order to produce the ECDSASignature.
You have to do the following:
ECDSASignature signature= key.sign(input);

and finally in order to validate your signature you have to check the following:
key.verify(input, signature)


31202: <p>I have my <code>ECKey key</code>. In order to create an <code>ECDSASignature</code> object with BitcoinJ, we have to call <code>ECDSASignature mySignature = key.sign(Sha256Hash input)</code>.</p>

<p>Is the <code>Sha256Hash input</code> my message? Or is it the result of <code>Sha256(byte[] myArray)</code>?</p>

<p>What if I don't have a message to sign? Is it acceptable to sign the <code>key.getPrivKeyBytes()</code> in order to create an <code>ECDSASignature</code>, or it is unacceptable because it reveals information including in <code>getPrivKeyBytes()</code> and as a result reveal my private key?</p>

<p>And if it is unacceptable what must be my message? Can I can sign whatever I want in order to create my <code>ECDSASignature</code>?</p>
 31202: <p>Signing the bytes of the private key of <code>ECKey key</code> is unacceptable because you are vulnerable for realeasing information about your private key.</p>

<p>In the case of signing a <strong>message</strong>(as a String) you have to estimate the :</p>

<pre><code> byte[] result= sha256(message)
</code></pre>

<p>The result will be a byte[] and this array finally will insert to the :</p>

<pre><code> Sha256Hash input= new Sha256Hash(result);
</code></pre>

<p>Then the procedure is simple in order to produce the <strong>ECDSASignature</strong>.
You have to do the following:</p>

<pre><code>ECDSASignature signature= key.sign(input);
</code></pre>

<p>and finally in order to validate your signature you have to check the following:</p>

<pre><code>key.verify(input, signature)
</code></pre>
