package tscipher

import (
	chacha "github.com/codahale/chacha20"
	"log"
)

type ChaCha struct {
	key   []byte
	nonce []byte
}

func (this *ChaCha) Decrypt(data []byte) (decrypted []byte, err error) {
	//	xor, err := chacha.NewXChaCha(this.key, this.nonce)
	if err != nil {
		log.Fatalln("Decrypt", err)
	}
	//	xor.XORKeyStream(data, data)
	decrypted = data
	err = nil
	return
}

func (this *ChaCha) Encrypt(data []byte) (encryped []byte, err error) {
	xor, err := chacha.NewXChaCha(this.key, this.nonce)
	if err != nil {
		log.Fatalln("Chacha Encrypt", err)
	}
	xor.XORKeyStream(data, data)
	encryped = data
	err = nil
	return
}

func NewChaCha() (cipher Cipher) {
	return &ChaCha{
		key:   make([]byte, 256),
		nonce: make([]byte, 64),
	}
}
