1. A method comprising: obtaining data to be sealed and one or more conditions that are to be satisfied in order for the data to be unsealed; and encrypting, using public key encryption, both the data and the one or more conditions to generate a ciphertext that includes both the encrypted data and the encrypted one or more conditions, wherein the data is not unsealed if the one or more conditions are not satisfied, wherein one of the one or more conditions comprises a program to be executed, and wherein the data can be unsealed only if execution of the program returns an indication of true.