fix multiple leading zeros padding in ECDSA sig conversion
This commit is contained in:
parent
171594a92d
commit
ca2a932485
@ -527,18 +527,18 @@ public class SignUtils
|
|||||||
len = (byte) (6 + r_src_len + s_src_len);
|
len = (byte) (6 + r_src_len + s_src_len);
|
||||||
|
|
||||||
// leading zeroes are forbidden
|
// leading zeroes are forbidden
|
||||||
if (signature[r_src_pos] == 0) {
|
while (signature[r_src_pos] == 0 && r_src_len > 0) {
|
||||||
r_src_pos++; r_src_len--; len--;
|
r_src_pos++; r_src_len--; len--;
|
||||||
}
|
}
|
||||||
if (signature[s_src_pos] == 0) {
|
while (signature[s_src_pos] == 0 && s_src_len > 0) {
|
||||||
s_src_pos++; s_src_len--; len--;
|
s_src_pos++; s_src_len--; len--;
|
||||||
}
|
}
|
||||||
|
|
||||||
// except when they are mandatory
|
// except when they are mandatory
|
||||||
if (signature[r_src_pos] < 0) {
|
if (r_src_len > 0 && signature[r_src_pos] < 0) {
|
||||||
r_pad = 1; len++;
|
r_pad = 1; len++;
|
||||||
}
|
}
|
||||||
if (signature[s_src_pos] < 0) {
|
if (s_src_len > 0 && signature[s_src_pos] < 0) {
|
||||||
s_pad = 1; len++;
|
s_pad = 1; len++;
|
||||||
}
|
}
|
||||||
byte[] sig = new byte[len];
|
byte[] sig = new byte[len];
|
||||||
|
Loading…
Reference in New Issue
Block a user