testing and improvements to the common data structures
This commit is contained in:
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user