init: v1.0.0
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
//go:build ignore
|
||||
// +build ignore
|
||||
|
||||
|
||||
package paillier
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"xdx.jelly/xgcl/grand"
|
||||
"xdx.jelly/xgcl/sm/sm4"
|
||||
)
|
||||
|
||||
func TestEnv(t *testing.T) {
|
||||
sk, pk, err := GenerateKey(2048)
|
||||
assert.Nil(t, err)
|
||||
for i := 0; i < 1000; i++ {
|
||||
kek := grand.GetRandom(16) //[]byte{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
|
||||
|
||||
mykey := grand.GetRandom(16)
|
||||
mykeyPaillierCipher, err := EncryptKey(mykey, pk)
|
||||
assert.Nil(t, err)
|
||||
|
||||
iv, mykeyEnvelopeCipher, err := GenEnvelope(mykeyPaillierCipher, kek, pk)
|
||||
assert.Nil(t, err)
|
||||
|
||||
mykeyEnvelope, err := DecryptEnvelope(mykeyEnvelopeCipher, sk) // mykeyEnvelope = SM4CTREnc(kek, mykey) = sm4.Enc(kek, iv) ^ key
|
||||
assert.Nil(t, err)
|
||||
|
||||
// recover mykey from mykeyEnvelope
|
||||
|
||||
mykey2 := DecryptKey(iv []byte, keyEnvelope []byte, pk *PublicKey)
|
||||
|
||||
// check
|
||||
key2, err := sm4.EncryptECB(nil, kek, iv)
|
||||
assert.Nil(t, err)
|
||||
|
||||
for i := range key2 {
|
||||
key2[i] ^= ctrEncKey[i]
|
||||
}
|
||||
assert.Equal(t, key, key2)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEncKey(t *testing.T) {
|
||||
key := grand.GetRandom(128)
|
||||
|
||||
sk, pk, err := GenerateKey(2048)
|
||||
assert.Nil(t, err)
|
||||
|
||||
c, err := EncryptKey(key, pk)
|
||||
assert.Nil(t, err)
|
||||
|
||||
key2, err := DecryptKey(c, 128, sk)
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, key, key2)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user