diff --git a/certificate.go b/certificate.go index 776928c3..30cc7fcf 100644 --- a/certificate.go +++ b/certificate.go @@ -14,7 +14,7 @@ import ( "math/big" "time" - "github.com/pion/dtls/v2" + "github.com/pion/dtls/v2/pkg/crypto/fingerprint" "github.com/pion/webrtc/v2/pkg/rtcerr" ) @@ -94,17 +94,21 @@ func (c Certificate) Expires() time.Time { // GetFingerprints returns the list of certificate fingerprints, one of which // is computed with the digest algorithm used in the certificate signature. func (c Certificate) GetFingerprints() ([]DTLSFingerprint, error) { - fingerprintAlgorithms := []dtls.HashAlgorithm{dtls.HashAlgorithmSHA256} + fingerprintAlgorithms := []crypto.Hash{crypto.SHA256} res := make([]DTLSFingerprint, len(fingerprintAlgorithms)) i := 0 for _, algo := range fingerprintAlgorithms { - value, err := dtls.Fingerprint(c.x509Cert, algo) + name, err := fingerprint.StringFromHash(algo) + if err != nil { + return nil, fmt.Errorf("failed to create fingerprint: %v", err) + } + value, err := fingerprint.Fingerprint(c.x509Cert, algo) if err != nil { return nil, fmt.Errorf("failed to create fingerprint: %v", err) } res[i] = DTLSFingerprint{ - Algorithm: algo.String(), + Algorithm: name, Value: value, } } diff --git a/dtlstransport.go b/dtlstransport.go index e64a97b8..7ed76a4c 100644 --- a/dtlstransport.go +++ b/dtlstransport.go @@ -15,6 +15,7 @@ import ( "time" "github.com/pion/dtls/v2" + "github.com/pion/dtls/v2/pkg/crypto/fingerprint" "github.com/pion/srtp" "github.com/pion/webrtc/v2/internal/mux" "github.com/pion/webrtc/v2/internal/util" @@ -350,12 +351,12 @@ func (t *DTLSTransport) Stop() error { func (t *DTLSTransport) validateFingerPrint(remoteCert *x509.Certificate) error { for _, fp := range t.remoteParameters.Fingerprints { - hashAlgo, err := dtls.HashAlgorithmString(fp.Algorithm) + hashAlgo, err := fingerprint.HashFromString(fp.Algorithm) if err != nil { return err } - remoteValue, err := dtls.Fingerprint(remoteCert, hashAlgo) + remoteValue, err := fingerprint.Fingerprint(remoteCert, hashAlgo) if err != nil { return err } diff --git a/go.mod b/go.mod index e1aa8bf4..304c3829 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.12 require ( github.com/pion/datachannel v1.4.14 - github.com/pion/dtls/v2 v2.0.0-rc.5 + github.com/pion/dtls/v2 v2.0.0-rc.6 github.com/pion/ice v0.7.8 github.com/pion/logging v0.2.2 github.com/pion/quic v0.1.1 diff --git a/go.sum b/go.sum index 97c59b16..0d498529 100644 --- a/go.sum +++ b/go.sum @@ -27,8 +27,8 @@ github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pion/datachannel v1.4.14 h1:Kbx9/pdbEsK86aFS2QPiL3AJi5Op+lz5hQBE/nMJOrg= github.com/pion/datachannel v1.4.14/go.mod h1:egqeB66tjsze0tI3ohqXQyPwA6NpT70L895sminy/lg= -github.com/pion/dtls/v2 v2.0.0-rc.5 h1:O6RZZGTnHryfMezTisWMSR02XS/Gf6jWnCnYqg5VjMY= -github.com/pion/dtls/v2 v2.0.0-rc.5/go.mod h1:k7HAs0qpJSz+Pelkbc5ZDNtenQpUvXgjg/yq4ZC6CdU= +github.com/pion/dtls/v2 v2.0.0-rc.6 h1:oLlWlxOyVYZy+A41bkN4L8x2fVhnaBVuIqtAPpVIMEY= +github.com/pion/dtls/v2 v2.0.0-rc.6/go.mod h1:U199DvHpRBN0muE9+tVN4TMy1jvEhZIZ63lk4xkvVSk= github.com/pion/ice v0.7.8 h1:uSlntnlDRl2k6TczPO+3ib+Z1JnawBKS6LxA8ZkNP74= github.com/pion/ice v0.7.8/go.mod h1:iGjOIz/lF16Nf+OGv8KZwRt8yioihLQikge3CkxfybU= github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= @@ -70,8 +70,8 @@ github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJy github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd h1:GGJVjV8waZKRHrgwvtH66z9ZGVurTD1MT0n1Bb+q4aM= -golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d h1:9FCpayM9Egr1baVnV1SX0H87m+XB0B8S0hAMi99X/3U= +golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -86,6 +86,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/quictransport.go b/quictransport.go index 85d364f3..180b55ab 100644 --- a/quictransport.go +++ b/quictransport.go @@ -13,7 +13,7 @@ import ( "sync" "time" - "github.com/pion/dtls/v2" + "github.com/pion/dtls/v2/pkg/crypto/fingerprint" "github.com/pion/logging" "github.com/pion/quic" "github.com/pion/webrtc/v2/internal/mux" @@ -139,12 +139,12 @@ func (t *QUICTransport) Start(remoteParameters QUICParameters) error { func (t *QUICTransport) validateFingerPrint(remoteParameters QUICParameters, remoteCert *x509.Certificate) error { for _, fp := range remoteParameters.Fingerprints { - hashAlgo, err := dtls.HashAlgorithmString(fp.Algorithm) + hashAlgo, err := fingerprint.HashFromString(fp.Algorithm) if err != nil { return err } - remoteValue, err := dtls.Fingerprint(remoteCert, hashAlgo) + remoteValue, err := fingerprint.Fingerprint(remoteCert, hashAlgo) if err != nil { return err }