Is it possible to verify and relay an encryption key with a trusted but transparent third party? I'm wondering if it would be possible to implement this functionality with a trusted but transparent third party (maybe an Ethereum smart contract?):


Bob has an encryption key. Alice has the encrypted data and wants to buy the key from Bob.
Bob sends the key to the smart contract (SC).
Alice sends some ether (and perhaps the encrypted data or some function on it) to the SC. 
The SC verifies that the key decrypts the data properly. If it doesn't, it halts.
The SC sends Bob the ether, and Alice the key.


The main issues I'm finding when I'm trying to think of a solution are:


How does the third party verify a decryption is correct?
Is it possible for the third party to verify this decryption without revealing it, since it is transparent? I know of zero knowledge proofs, but am not sure of how they could apply here.


Thank you!
I'm not sure what you mean by transparent.
With a trusted third party what you ask is trivial. But with etherium I believe you can't, the key would become public there is nothing secret on the blockchain.

If we wanted our own distributed third party this can be done. You can perform secret sharing and send part of the key to each member of the distributed escrow. They can then perform shared computing to verify the secret without revealing the secret.