The secp256k1 algorithm signature result is one byte less.
sujiulong opened this issue · 2 comments
@test
public void verifyTest() {
String pri = "87385e10d018f971f66cf2c065663d4aa427286f259f85bb8b2438130f4f1ee7";
String sourceHash = "7d50e029128286afba20cb62cf1b874d76a527a896f3d39167289a9b0446c518";
ECKey ecKey = ECKey.fromPrivate(Hex.decode(pri));
byte[] sign = ecKey.sign(Hex.decode(sourceHash)).toByteArray();
System.out.println(sign.length);
}
The result is always 64 not 65 bytes.
65
on my side for this particular test.
Thank you very much for your reply. My code is too old.
This is my local code.
public byte[] toByteArray() {
final byte fixedV = this.v >= 27
? (byte) (this.v - 27)
: this.v;
return ByteUtil.merge(
ByteUtil.bigIntegerToBytes(this.r),
ByteUtil.bigIntegerToBytes(this.s),
new byte[]{fixedV});
}
This is latest code.
public byte[] toByteArray() {
final byte fixedV = this.v >= 27
? (byte) (this.v - 27)
: this.v;
return ByteUtil.merge(
ByteUtil.bigIntegerToBytes(this.r, 32),
ByteUtil.bigIntegerToBytes(this.s, 32),
new byte[]{fixedV});
}