2015-08-04 10:36:00 -07:00
|
|
|
# go-i2p
|
2016-01-30 17:17:45 -05:00
|
|
|
|
2016-06-16 23:17:21 -07:00
|
|
|
A pure Go implementation of the I2P router.
|
2016-06-16 22:45:38 -07:00
|
|
|
|
|
|
|
## Status
|
|
|
|
|
2021-04-22 23:47:04 -04:00
|
|
|
go-i2p was in early development. Now it's being restructured in some
|
|
|
|
fundamental ways, so it's even less done than before(on this branch, for now)
|
|
|
|
but when this restructuring is complete, it will be a fully-fledged I2P router
|
|
|
|
and library for writing, embedding, and possiblly extending I2P routers in Go
|
|
|
|
applications.
|
|
|
|
|
2021-04-22 23:49:00 -04:00
|
|
|
The go module is declared as: `github.com/go-i2p/go-i2p`, in order to clone
|
2021-04-22 23:47:04 -04:00
|
|
|
anonymously you may use `torsocks` with `go get`(YMMV) or you may clone
|
|
|
|
it from git.idk.i2p using:
|
|
|
|
|
|
|
|
#Set your $GOPATH, if it isn't set already then GOPATH=$HOME/go
|
|
|
|
$GOPATH/go/src/i2pgit.org/idk/
|
|
|
|
git clone git@127.0.0.1:idk/go-i2p $GOPATH/go/src/github.com/go-i2p/go-i2p
|
|
|
|
$GOPATH/go/src/github.com/go-i2p/go-i2p
|
|
|
|
|
|
|
|
And build with `GO111MODULES=off` or use a `replace` directive in your `go.mod`
|
|
|
|
to direct to the local module source. Or you may run your own Go Modules proxy as
|
|
|
|
a hidden service. I'll make this about a billion times easier in the near future I
|
|
|
|
promise.
|
2016-06-16 22:45:38 -07:00
|
|
|
|
2021-04-19 20:43:37 -04:00
|
|
|
### Implemented Features
|
|
|
|
|
2021-04-22 23:47:04 -04:00
|
|
|
As the application is restructured and moved away from representing I2P data
|
2021-04-26 20:54:32 -04:00
|
|
|
structures as byte slices, this chart will be filled in, when the tests pass,
|
|
|
|
the item will be checked off. Currently, much of this is partially implemented
|
|
|
|
in byte-slice versions and partially implemented as Go Structs. Very little of
|
|
|
|
it will work until it's all moved to Go Structs where appropriate. Most of
|
|
|
|
this will happen in /lib/common.
|
2021-04-22 23:47:04 -04:00
|
|
|
|
2021-04-19 20:43:37 -04:00
|
|
|
- Cryptographic primitives
|
|
|
|
- Signing
|
|
|
|
- [ ] ECDSA_SHA256_P256
|
|
|
|
- [ ] ECDSA_SHA384_P384
|
|
|
|
- [ ] ECDSA_SHA512_P521
|
|
|
|
- [ ] Ed25519
|
|
|
|
- Verifying
|
|
|
|
- [ ] DSA
|
|
|
|
- [ ] ECDSA_SHA256_P256
|
|
|
|
- [ ] ECDSA_SHA384_P384
|
|
|
|
- [ ] ECDSA_SHA512_P521
|
|
|
|
- [ ] RSA_SHA256_2048
|
|
|
|
- [ ] RSA_SHA384_3072
|
|
|
|
- [ ] RSA_SHA512_4096
|
|
|
|
- [ ] Ed25519
|
2021-04-26 20:54:32 -04:00
|
|
|
- [x] ElGamal
|
|
|
|
- [x] AES256
|
|
|
|
- Common Structures
|
|
|
|
- Common Type Specification
|
|
|
|
- [x] Integer
|
|
|
|
- [x] Date
|
|
|
|
- [x] String
|
|
|
|
- [x] PublicKey* As interface in lib/crypto
|
|
|
|
- [x] PrivateKey* As interface in lib/crypto
|
|
|
|
- [ ] SessionKey
|
|
|
|
- [ ] SigningPublicKey
|
|
|
|
- [ ] Signature
|
|
|
|
- [x] Hash
|
|
|
|
- [ ] Session Tag
|
|
|
|
- [ ] Tunnel ID
|
|
|
|
- [x] Certificate
|
|
|
|
- [ ] Mapping
|
|
|
|
- Common Structure Specification
|
|
|
|
- [ ] KeysAndCert
|
|
|
|
- [ ] RouterIdentity
|
|
|
|
- [ ] Destination
|
|
|
|
- [ ] Lease
|
|
|
|
- [ ] LeaseSet
|
|
|
|
- [ ] Lease2
|
|
|
|
- [ ] OfflineSigntature
|
|
|
|
- [ ] LeaseSet2Header
|
|
|
|
- [ ] LeaseSet2
|
|
|
|
- [ ] MetaLease
|
|
|
|
- [ ] MetaLeaseSet
|
|
|
|
- [ ] EncryptedLeaseSet
|
|
|
|
- [ ] RouterAddress
|
|
|
|
- [ ] RouterInfo
|
2021-04-19 20:43:37 -04:00
|
|
|
- I2NP
|
|
|
|
- [ ] Message parsing
|
|
|
|
- [ ] Message handling
|
|
|
|
- NetDB
|
|
|
|
- [ ] Local storage
|
|
|
|
- [ ] Persistence to disk
|
|
|
|
- [ ] Reseeding
|
|
|
|
- [ ] Lookups
|
|
|
|
- [ ] Expiry
|
|
|
|
- [ ] Exploration
|
|
|
|
- [ ] Publishing
|
|
|
|
- [ ] Floodfill
|
|
|
|
- Transports
|
|
|
|
- [ ] Transport manager
|
|
|
|
- NTCP
|
|
|
|
- [ ] Handshake
|
|
|
|
- [ ] Session tracking
|
|
|
|
- [ ] Automatic session creation
|
|
|
|
- NTCP2
|
|
|
|
- [ ] Handshake
|
|
|
|
- [ ] Session tracking
|
|
|
|
- [ ] Automatic session creation
|
|
|
|
- [ ] SSU
|
|
|
|
|
|
|
|
|
2016-06-16 22:45:38 -07:00
|
|
|
## Contributing
|
|
|
|
|
2016-06-19 15:23:01 -07:00
|
|
|
See CONTRIBUTING.md for more information.
|
2016-06-16 22:45:38 -07:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
This project is licensed under the MIT license, see LICENSE for more information.
|