| 1234567891011121314151617181920212223242526272829 | 
							- package crypto
 
- import (
 
- 	"crypto/cipher"
 
- 	"github.com/aead/chacha20"
 
- )
 
- func makeNonce(nonce *[chacha20.NonceSize]byte, iv []byte) {
 
- 	switch len(iv) {
 
- 	case 8:
 
- 		copy(nonce[4:], iv)
 
- 	case 12:
 
- 		copy(nonce[:], iv)
 
- 	default:
 
- 		panic("bad nonce length")
 
- 	}
 
- }
 
- func NewChaCha20Stream(key []byte, iv []byte) cipher.Stream {
 
- 	var Key [32]byte
 
- 	var Nonce [12]byte
 
- 	if len(key) != 32 {
 
- 		panic("bad key length")
 
- 	}
 
- 	copy(Key[:], key)
 
- 	makeNonce(&Nonce, iv)
 
- 	return chacha20.NewCipher(&Nonce, &Key)
 
- }
 
 
  |