testing and improvements to the common data structures

This commit is contained in:
Hayden Parker
2016-02-05 02:23:11 -08:00
parent f5e806dd14
commit b3fa7082cf
24 changed files with 551 additions and 235 deletions

View File

@ -1,41 +1,24 @@
package common
import (
"errors"
"github.com/bounce-chat/go-i2p/lib/crypto"
)
type RouterIdentity []byte
func (router_identity RouterIdentity) PublicKey() (key crypto.ElgPublicKey) {
copy(router_identity[:256], key[:])
return
return KeysAndCert(router_identity).PublicKey()
}
func (router_identity RouterIdentity) SigningPublicKey() (key crypto.SigningPublicKey) {
cert := router_identity.Certificate()
if cert.Type() == CERT_KEY {
key = KeyCert(cert).SigningPublicKey()
} else {
var pk crypto.DSAPublicKey
copy(pk[:], router_identity[256:256+128])
key = pk
}
return
return KeysAndCert(router_identity).SigningPublicKey()
}
func (router_identity RouterIdentity) Certificate() (cert Certificate) {
copy(router_identity[256+128:], cert)
return
return KeysAndCert(router_identity).Certificate()
}
func readRouterIdentity(data []byte) (RouterIdentity, []byte, error) {
var router_identity RouterIdentity
copy(data[:387], router_identity)
n := router_identity.Certificate().Len()
if n == -1 {
return router_identity, data, errors.New("invalid certificate")
}
router_identity = append(router_identity, data[387:n]...)
return router_identity, data[387+n:], nil
func ReadRouterIdentity(data []byte) (RouterIdentity, []byte, error) {
keys_and_certs, remainder, err := ReadKeysAndCert(data)
return RouterIdentity(keys_and_certs), remainder, err
}