// Copyright 2017 The OPA Authors. All rights reserved. // Use of this source code is governed by an Apache2 // license that can be found in the LICENSE file. package uuid import ( "fmt" "io" ) // New Create a version 4 random UUID func New(r io.Reader) (string, error) { bs := make([]byte, 16) n, err := io.ReadFull(r, bs) if n != len(bs) || err != nil { return "", err } bs[8] = bs[8]&^0xc0 | 0x80 bs[6] = bs[6]&^0xf0 | 0x40 return fmt.Sprintf("%x-%x-%x-%x-%x", bs[0:4], bs[4:6], bs[6:8], bs[8:10], bs[10:]), nil }