func deriveKey(ctx context.Context, mk, nonce []byte, size uint8) ([]byte, error) {
	err := ctxutil.ErrIfDone(ctx)
	if err != nil {
		return nil, err
	}

	h := blake2b.NewMAC(size, nonce) // NewMAC can panic if size is too big.
	h.Sum(mk)
	return h.Sum(nil), nil
}
// deriveKey Derives a single use key from the given master key via blake2b
// and a nonce.
deriveKey Derives a single use key from the given master key via blake2b
and a nonce.
// deriveKey Derives a single use key from the given master key via blake2b // and a nonce .
func deriveKey(ctx context.Context, mk, nonce []byte, size uint8) ([]byte, error) {
	err := ctxutil.ErrIfDone(ctx)
	if err != nil {
		return nil, err
	}
	h := blake2b.NewMAC(size, nonce) 
	h.Sum(mk)
	return h.Sum(nil), nil
}
func deriveKey ( ctx context . Context , mk , nonce [ ] byte , size uint8 ) ( [ ] byte , error ) { err := ctxutil . ErrIfDone ( ctx ) if err != nil { return nil , err } h := blake2b . NewMAC ( size , nonce ) h . Sum ( mk ) return h . Sum ( nil ) , nil }
deriveKey Derives a single use key from the given master key via blake2b
and a nonce.
deriveKey Derives a single use key from the given master key via blake2b and a nonce .
// NewMAC can panic if size is too big.