chore: refresh gramsrv public release
This commit is contained in:
parent
75cebe8dbf
commit
70b6820474
1274 changed files with 378751 additions and 59919 deletions
43
internal/sfu/cert.go
Normal file
43
internal/sfu/cert.go
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
package sfu
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"crypto/tls"
|
||||
"crypto/x509"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/pion/dtls/v3/pkg/crypto/selfsign"
|
||||
)
|
||||
|
||||
// newDTLSCertificate 生成进程级自签证书(DTLS 身份不靠 CA,靠信令面下发的指纹)。
|
||||
func newDTLSCertificate() (tls.Certificate, string, error) {
|
||||
cert, err := selfsign.GenerateSelfSigned()
|
||||
if err != nil {
|
||||
return tls.Certificate{}, "", fmt.Errorf("sfu: self-signed cert: %w", err)
|
||||
}
|
||||
fp, err := certificateFingerprint(cert.Certificate[0])
|
||||
if err != nil {
|
||||
return tls.Certificate{}, "", err
|
||||
}
|
||||
return cert, fp, nil
|
||||
}
|
||||
|
||||
// certificateFingerprint 计算 RFC 4572 风格 sha-256 指纹("AA:BB:...")。
|
||||
func certificateFingerprint(der []byte) (string, error) {
|
||||
if _, err := x509.ParseCertificate(der); err != nil {
|
||||
return "", fmt.Errorf("sfu: parse cert: %w", err)
|
||||
}
|
||||
sum := sha256.Sum256(der)
|
||||
parts := make([]string, len(sum))
|
||||
for i, b := range sum {
|
||||
parts[i] = strings.ToUpper(hex.EncodeToString([]byte{b}))
|
||||
}
|
||||
return strings.Join(parts, ":"), nil
|
||||
}
|
||||
|
||||
// normalizeFingerprint 去除大小写/分隔差异后比较用。
|
||||
func normalizeFingerprint(fp string) string {
|
||||
return strings.ToUpper(strings.ReplaceAll(strings.TrimSpace(fp), ":", ""))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue