#### 41 lines 1.1 KiB Go Raw Permalink Blame History

 ```package trostle_parrish ``` ``` ``` ```import ( ``` ``` "math/big" ``` ``` "testing" ``` ```) ``` ``` ``` ```func TestEncryptDecrypt(t *testing.T) { ``` ``` // These are representative encryption params ``` ``` pk := Generate(30, 255) ``` ``` plaintext := big.NewInt(14) ``` ``` ciphertext := pk.Encrypt(plaintext) ``` ``` t.Logf("Encrypted: %v", ciphertext) ``` ``` decrypted := pk.Decrypt(ciphertext) ``` ``` t.Logf("Decrypted: %v", decrypted) ``` ``` if decrypted.Cmp(plaintext) != 0 { ``` ``` t.Error("Failed to Decrypt") ``` ``` } ``` ```} ``` ``` ``` ```func TestMultipleAdditions(t *testing.T) { ``` ``` // These params are ridiculous low, but they enable us to ``` ``` // check that addition is working as expected. ``` ``` pk := Generate(6, 32) ``` ``` plaintext := big.NewInt(1) ``` ``` total := pk.Encrypt(plaintext) ``` ``` for i := 0; i < 128; i++ { ``` ``` plaintext := big.NewInt(5) ``` ``` ciphertext := pk.Encrypt(plaintext) ``` ``` total = Add(total, ciphertext) ``` ``` t.Logf("Encrypted: %v", total) ``` ``` decrypted := pk.Decrypt(total) ``` ``` t.Logf("Decrypted: %v", decrypted) ``` ``` // We should see a wrap around at 16 based on our encryption params ``` ``` if decrypted.Cmp(big.NewInt(int64(((i+1)*5)+1))) != 0 { ``` ``` t.Errorf("Should have been able to do ~2^6 additions = 64, instead: %v", i) ``` ``` } ``` ``` } ``` ``` ``` ```} ```