ExecuteQuery is having trouble with byte[]
I am trying to build a helper function to insert data into a column that is using column encryption with a symmetric key
The decrypt is working fine, using the following code:
T Decrypt<T>(Binary value) { return this.ExecuteQuery<T>(@" OPEN SYMMETRIC KEY symtest DECRYPTION BY CERTIFICATE certtest; select convert(varchar, DecryptByKey({0})) as data; CLOSE SYMMETRIC KEY symtest ", value).First(); }
But I can't seem to get a similar Encrypt function to work
Binary Encrypt<T>(T value) { return ExecuteQuery<Binary>(@" OPEN SYMMETRIC KEY symtest DECRYPTION BY CERTIFICATE certtest; select EncryptByKey(Key_GUID('symtest'), {0}) as data; close symmetric key symtest ", value) .First() ; }
Since Binary/byte[] do not have a public parameterless constructor.
If I try using string, I get an error though that I can not convert byte[] to string
So the driver seems to know what the underlying type is, but it can't manage to give it to me.