Browse Source

rtmp: fix RTMPE handshake error when a public key starts with zero (#2269)

pull/2276/head
Alessandro Ros 2 years ago committed by GitHub
parent
commit
fc353ce66b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      internal/rtmp/handshake/dh.go

13
internal/rtmp/handshake/dh.go

@ -1,6 +1,7 @@
package handshake package handshake
import ( import (
"bytes"
"crypto/rand" "crypto/rand"
"fmt" "fmt"
"math/big" "math/big"
@ -100,6 +101,10 @@ func dhGenerateKeyPair() ([]byte, []byte, error) {
y.Exp(&g, &x, &p) y.Exp(&g, &x, &p)
pub := y.Bytes() pub := y.Bytes()
if len(pub) < dhKeyLength {
pub = append(bytes.Repeat([]byte{0}, dhKeyLength-len(pub)), pub...)
}
return priv, pub, nil return priv, pub, nil
} }
@ -114,5 +119,11 @@ func dhComputeSharedSecret(priv []byte, pub []byte) []byte {
p.SetBytes(p1024) p.SetBytes(p1024)
var z big.Int var z big.Int
z.Exp(&y, &x, &p) z.Exp(&y, &x, &p)
return z.Bytes() sec := z.Bytes()
if len(sec) < dhKeyLength {
sec = append(bytes.Repeat([]byte{0}, dhKeyLength-len(sec)), sec...)
}
return sec
} }

Loading…
Cancel
Save