git.sr.ht/~pingoo/stdx@v0.0.0-20240218134121-094174641f6e/crypto/bchacha20blake3/bchacha20blake3_test.go (about)

     1  package bchacha20blake3_test
     2  
     3  import (
     4  	"bytes"
     5  	"crypto/rand"
     6  	"errors"
     7  	"testing"
     8  
     9  	"git.sr.ht/~pingoo/stdx/crypto/bchacha20blake3"
    10  )
    11  
    12  func TestBasic(t *testing.T) {
    13  	var key [bchacha20blake3.KeySize]byte
    14  	var nonce [bchacha20blake3.NonceSize]byte
    15  
    16  	originalPlaintext := []byte("Hello World")
    17  	additionalData := []byte("!")
    18  
    19  	rand.Read(key[:])
    20  	rand.Read(nonce[:])
    21  
    22  	cipher, _ := bchacha20blake3.New(key[:])
    23  	ciphertext := cipher.Seal(nil, nonce[:], originalPlaintext, additionalData)
    24  
    25  	decryptedPlaintext, err := cipher.Open(nil, nonce[:], ciphertext, additionalData)
    26  	if err != nil {
    27  		t.Errorf("decrypting message: %s", err)
    28  		return
    29  	}
    30  
    31  	if !bytes.Equal(decryptedPlaintext, originalPlaintext) {
    32  		t.Errorf("original message (%s) != decrypted message (%s)", string(originalPlaintext), string(decryptedPlaintext))
    33  		return
    34  	}
    35  }
    36  
    37  func TestAdditionalData(t *testing.T) {
    38  	var key [bchacha20blake3.KeySize]byte
    39  	var nonce [bchacha20blake3.NonceSize]byte
    40  
    41  	originalPlaintext := []byte("Hello World")
    42  	additionalData := []byte("!")
    43  
    44  	rand.Read(key[:])
    45  	rand.Read(nonce[:])
    46  
    47  	cipher, _ := bchacha20blake3.New(key[:])
    48  	ciphertext := cipher.Seal(nil, nonce[:], originalPlaintext, additionalData)
    49  
    50  	_, err := cipher.Open(nil, nonce[:], ciphertext, []byte{})
    51  	if !errors.Is(err, bchacha20blake3.ErrOpen) {
    52  		t.Errorf("expected error (%s) | got (%s)", bchacha20blake3.ErrOpen, err)
    53  		return
    54  	}
    55  }