forked from TrueCloudLab/distribution
ba4a6bbe02
Microsoft has updated the golang Azure SDK significantly. Update the azure storage driver to use the new SDK. Add support for client secret and MSI authentication schemes in addition to shared key authentication. Implement rootDirectory support for the azure storage driver to mirror the S3 driver. Signed-off-by: Kirat Singh <kirat.singh@beacon.io> Co-authored-by: Cory Snider <corhere@gmail.com>
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
// Copyright 2016 Google Inc. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package uuid
|
|
|
|
import "io"
|
|
|
|
// New creates a new random UUID or panics. New is equivalent to
|
|
// the expression
|
|
//
|
|
// uuid.Must(uuid.NewRandom())
|
|
func New() UUID {
|
|
return Must(NewRandom())
|
|
}
|
|
|
|
// NewRandom returns a Random (Version 4) UUID.
|
|
//
|
|
// The strength of the UUIDs is based on the strength of the crypto/rand
|
|
// package.
|
|
//
|
|
// A note about uniqueness derived from the UUID Wikipedia entry:
|
|
//
|
|
// Randomly generated UUIDs have 122 random bits. One's annual risk of being
|
|
// hit by a meteorite is estimated to be one chance in 17 billion, that
|
|
// means the probability is about 0.00000000006 (6 × 10−11),
|
|
// equivalent to the odds of creating a few tens of trillions of UUIDs in a
|
|
// year and having one duplicate.
|
|
func NewRandom() (UUID, error) {
|
|
var uuid UUID
|
|
_, err := io.ReadFull(rander, uuid[:])
|
|
if err != nil {
|
|
return Nil, err
|
|
}
|
|
uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4
|
|
uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10
|
|
return uuid, nil
|
|
}
|