Commit 71f35a4b authored by Marten Seemann's avatar Marten Seemann

expose the function to derive the peer's public key from the cert chain

parent b3618ca6
......@@ -66,9 +66,7 @@ func (i *Identity) ConfigForAny() (*tls.Config, <-chan ic.PubKey) {
//
// It should be used to create a new tls.Config before securing either an
// incoming or outgoing connection.
func (i *Identity) ConfigForPeer(
remote peer.ID,
) (*tls.Config, <-chan ic.PubKey) {
func (i *Identity) ConfigForPeer(remote peer.ID) (*tls.Config, <-chan ic.PubKey) {
keyCh := make(chan ic.PubKey, 1)
// We need to check the peer ID in the VerifyPeerCertificate callback.
// The tls.Config it is also used for listening, and we might also have concurrent dials.
......@@ -88,7 +86,7 @@ func (i *Identity) ConfigForPeer(
chain[i] = cert
}
pubKey, err := getRemotePubKey(chain)
pubKey, err := PubKeyFromCertChain(chain)
if err != nil {
return err
}
......@@ -101,8 +99,8 @@ func (i *Identity) ConfigForPeer(
return conf, keyCh
}
// getRemotePubKey derives the remote's public key from the certificate chain.
func getRemotePubKey(chain []*x509.Certificate) (ic.PubKey, error) {
// PubKeyFromCertChain verifies the certificate chain and extract the remote's public key.
func PubKeyFromCertChain(chain []*x509.Certificate) (ic.PubKey, error) {
if len(chain) != 1 {
return nil, errors.New("expected one certificates in the chain")
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment