func (s *cipherTestSuite) TestMessage() { var ( assert = s.Assertions c = s.cipher ) var ( ka cipherset.Key kb cipherset.Key sa cipherset.State box []byte msg []byte err error ) ka, err = c.GenerateKey() assert.NoError(err) assert.NotNil(ka) sa, err = c.NewState(ka) assert.NoError(err) assert.NotNil(sa) assert.False(sa.CanEncryptMessage()) assert.False(sa.CanEncryptHandshake()) assert.False(sa.CanDecryptMessage()) assert.True(sa.CanDecryptHandshake()) assert.True(sa.NeedsRemoteKey()) kb, err = c.GenerateKey() assert.NoError(err) assert.NotNil(kb) err = sa.SetRemoteKey(kb) assert.NoError(err) assert.True(sa.CanEncryptMessage()) assert.True(sa.CanEncryptHandshake()) assert.True(sa.CanDecryptMessage()) assert.True(sa.CanDecryptHandshake()) assert.False(sa.NeedsRemoteKey()) box, err = sa.EncryptMessage([]byte("Hello World!")) assert.NoError(err) assert.NotNil(box) msg, err = c.DecryptMessage(kb, ka, box) assert.NoError(err) assert.NotNil(msg) assert.Equal([]byte("Hello World!"), msg) }