|  | @@ -6,24 +6,16 @@ import (
 | 
	
		
			
				|  |  |  	"github.com/aead/chacha20"
 | 
	
		
			
				|  |  |  )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -func makeNonce(nonce *[chacha20.NonceSize]byte, iv []byte) {
 | 
	
		
			
				|  |  | +// NewChaCha20Stream creates a new Chacha/20 cipher stream. Caller must ensure that key is 32-bytes long and iv is either 8 or 12 bytes.
 | 
	
		
			
				|  |  | +func NewChaCha20Stream(key []byte, iv []byte) cipher.Stream {
 | 
	
		
			
				|  |  | +	var keyArray [32]byte
 | 
	
		
			
				|  |  | +	var nonce [12]byte
 | 
	
		
			
				|  |  | +	copy(keyArray[:], key)
 | 
	
		
			
				|  |  |  	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)
 | 
	
		
			
				|  |  | +	return chacha20.NewCipher(&nonce, &keyArray)
 | 
	
		
			
				|  |  |  }
 |