Commit Graph

17 Commits

Author SHA1 Message Date
Jeromy
4f083d54d6 write a few package doc strings to improve look of godoc 2014-11-08 21:42:36 -08:00
Jeromy
88bf39118c comment comment comment comment 2014-11-03 03:02:56 +00:00
Jeromy
5edbca2e70 cleanup from CR 2014-11-01 16:07:56 -07:00
Jeromy
01c0c6e169 implement signed pipe and add blowfish cipher to supported suites 2014-11-01 16:07:56 -07:00
Brian Tiger Chow
2ed7da8cfd refactor(crypto) mv proto PBPublicKey -> PublicKey, etc. 2014-10-22 21:49:43 -07:00
Brian Tiger Chow
e3a9a11afc refactor(crypto) move proto to internal pb package
https://docs.google.com/document/d/1e8kOo3r51b2BWtTs_1uADIA5djfXhPT36s6eHVRIvaU/edit
2014-10-22 15:54:17 -07:00
Juan Batiz-Benet
63d6ee6daa multiconn in swarm 2014-10-19 05:05:28 -07:00
Juan Batiz-Benet
972c0f7b4b u.DOut -> log.Debug
and other logging switches. I kept the u.PErr and u.POut in cli
commands, as those do need to write raw output directly.
2014-10-09 04:50:22 -07:00
Juan Batiz-Benet
f3ae0e8e1b u.Hash - error
the u.Hash error can be safely ignored (panic) because multihash
only fails from the selection of hash function. If the fn + length
are valid, it won't error.

cc @whyrusleeping
2014-10-06 02:26:52 -07:00
Juan Batiz-Benet
5136c786e5 Bugfix: "Malformed Public Key" Error
This commit fixed the notoriously annoying "Malformed Public Key"
problem. The issue was that sometimes the byte representation of
the points (x,y in big.Int) generated would be one less byte than
expected. This is simply because (* big.Int) Write uses the least
amount of bytes needed for the int.

I instead changed the marshalling/unmarshalling to do exactly
what stdlib crypto/tls does: use `ellipctic.Marshal` which marshals
according to the ANSI X9.62 standard.

http://golang.org/pkg/crypto/elliptic/#Marshal
http://golang.org/src/pkg/crypto/tls/key_agreement.go#L214

```Go
// crypto/tls
ka.privateKey, x, y, err = elliptic.GenerateKey(ka.curve, config.rand())
ecdhePublic := elliptic.Marshal(ka.curve, x, y)

// ipfs/crypto
priv, x, y, err := elliptic.GenerateKey(curve, rand.Reader)
pubKey := elliptic.Marshal(curve, x, y)
```

((Warning: we're using `rand.Reader` directly, which we shouldn't
do, as it can be seeded. We should use a configured source, as
crypto/tls. Flagged in #143))

This makes me think we should re-use a lot of their datastructures
and functions directly (e.g. ecdheKeyAgreement)

Fixed: #135

cc @bren2010 @whyrusleeping
2014-10-05 15:56:52 -07:00
Juan Batiz-Benet
7e83982247 print out key if 'malformed' 2014-10-05 14:50:30 -07:00
Juan Batiz-Benet
26a481a904 fixed key hashing interface + test 2014-10-01 00:52:26 -07:00
Jeromy
d1f011244f address comments from the PR #45 2014-10-01 00:33:00 -07:00
Juan Batiz-Benet
484d6004f7 crypto: abstracted Key and added Equals. 2014-09-27 00:18:54 -07:00
Brian Tiger Chow
7968b45e58 vendor dependencies with godep
dependencies are vendored into Godeps/_workspace and commit versions are
recorded in Godeps.json

update datastore to e89f0511
update go.crypto
2014-09-09 22:39:42 -07:00
Brendan Mc
c6823ac6e4 Cleaned up code some. 2014-09-04 13:15:22 -04:00
Jeromy
4b97f1f270 create new crypto package and make rest of repo use it 2014-09-03 20:15:10 +00:00