Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
d4cc2d35
Commit
d4cc2d35
authored
Jan 22, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Pad private key when signing & length check for hashes in sign
parent
b777d6aa
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
19 additions
and
2 deletions
+19
-2
crypto.go
crypto/crypto.go
+6
-1
crypto_test.go
crypto/crypto_test.go
+13
-1
No files found.
crypto/crypto.go
View file @
d4cc2d35
...
...
@@ -5,6 +5,7 @@ import (
"crypto/elliptic"
"crypto/rand"
"crypto/sha256"
"fmt"
"code.google.com/p/go.crypto/ripemd160"
"github.com/ethereum/go-ethereum/crypto/secp256k1"
...
...
@@ -101,7 +102,11 @@ func SigToPub(hash, sig []byte) *ecdsa.PublicKey {
}
func
Sign
(
hash
[]
byte
,
prv
*
ecdsa
.
PrivateKey
)
(
sig
[]
byte
,
err
error
)
{
sig
,
err
=
secp256k1
.
Sign
(
hash
,
prv
.
D
.
Bytes
())
if
len
(
hash
)
!=
32
{
return
nil
,
fmt
.
Errorf
(
"hash is required to be exactly 32 bytes (%d)"
,
len
(
hash
))
}
sig
,
err
=
secp256k1
.
Sign
(
hash
,
ethutil
.
LeftPadBytes
(
prv
.
D
.
Bytes
(),
32
))
return
}
...
...
crypto/crypto_test.go
View file @
d4cc2d35
...
...
@@ -52,7 +52,7 @@ func BenchmarkSha3(b *testing.B) {
}
func
Test0Key
(
t
*
testing
.
T
)
{
t
.
Skip
()
key
:=
ethutil
.
Hex2Bytes
(
"1111111111111111111111111111111111111111111111111111111111111111"
)
p
,
err
:=
secp256k1
.
GeneratePubKey
(
key
)
...
...
@@ -60,3 +60,15 @@ func Test0Key(t *testing.T) {
fmt
.
Printf
(
"%x
\n
"
,
p
)
fmt
.
Printf
(
"%v %x
\n
"
,
err
,
addr
)
}
func
TestInvalidSign
(
t
*
testing
.
T
)
{
_
,
err
:=
Sign
(
make
([]
byte
,
1
),
nil
)
if
err
==
nil
{
t
.
Errorf
(
"expected sign with hash 1 byte to error"
)
}
_
,
err
=
Sign
(
make
([]
byte
,
33
),
nil
)
if
err
==
nil
{
t
.
Errorf
(
"expected sign with hash 33 byte to error"
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment