1 Star 1 Fork 0

微光工作室 / ice

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
rand.go 1.75 KB
一键复制 编辑 原始数据 按行查看 历史
Pion 提交于 2020-09-17 03:21 . Update CI configs to v0.4.7
package ice
import "github.com/pion/randutil"
const (
runesAlpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
runesDigit = "0123456789"
runesCandidateIDFoundation = runesAlpha + runesDigit + "+/"
lenUFrag = 16
lenPwd = 32
)
// Seeding random generator each time limits number of generated sequence to 31-bits,
// and causes collision on low time accuracy environments.
// Use global random generator seeded by crypto grade random.
var (
globalMathRandomGenerator = randutil.NewMathRandomGenerator() //nolint:gochecknoglobals
globalCandidateIDGenerator = candidateIDGenerator{globalMathRandomGenerator} //nolint:gochecknoglobals
)
// candidateIDGenerator is a random candidate ID generator.
// Candidate ID is used in SDP and always shared to the other peer.
// It doesn't require cryptographic random.
type candidateIDGenerator struct {
randutil.MathRandomGenerator
}
func newCandidateIDGenerator() *candidateIDGenerator {
return &candidateIDGenerator{
randutil.NewMathRandomGenerator(),
}
}
func (g *candidateIDGenerator) Generate() string {
// https://tools.ietf.org/html/rfc5245#section-15.1
// candidate-id = "candidate" ":" foundation
// foundation = 1*32ice-char
// ice-char = ALPHA / DIGIT / "+" / "/"
return "candidate:" + g.MathRandomGenerator.GenerateString(32, runesCandidateIDFoundation)
}
// generatePwd generates ICE pwd.
// This internally uses generateCryptoRandomString.
func generatePwd() (string, error) {
return randutil.GenerateCryptoRandomString(lenPwd, runesAlpha)
}
// generateUFrag generates ICE user fragment.
// This internally uses generateCryptoRandomString.
func generateUFrag() (string, error) {
return randutil.GenerateCryptoRandomString(lenUFrag, runesAlpha)
}
1
https://gitee.com/GlimmerStudio/ice.git
git@gitee.com:GlimmerStudio/ice.git
GlimmerStudio
ice
ice
71411edf4499

搜索帮助