github.com/trustbloc/kms-go@v1.1.2/util/cryptoutil/legacy_utils.go (about) 1 /* 2 Copyright SecureKey Technologies Inc. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package cryptoutil 8 9 import "golang.org/x/crypto/blake2b" 10 11 // Nonce makes a nonce using blake2b, to match the format expected by libsodium. 12 func Nonce(pub1, pub2 []byte) (*[NonceSize]byte, error) { 13 var nonce [NonceSize]byte 14 // generate an equivalent nonce to libsodium's (see link above) 15 nonceWriter, err := blake2b.New(NonceSize, nil) 16 if err != nil { 17 return nil, err 18 } 19 20 _, err = nonceWriter.Write(pub1) 21 if err != nil { 22 return nil, err 23 } 24 25 _, err = nonceWriter.Write(pub2) 26 if err != nil { 27 return nil, err 28 } 29 30 nonceOut := nonceWriter.Sum(nil) 31 copy(nonce[:], nonceOut) 32 33 return &nonce, nil 34 }