# Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, see <http://www.gnu.org/licenses/>. from __future__ import absolute_import, print_function, unicode_literals import gpg import support del absolute_import, print_function, unicode_literals c = gpg.Context() source = gpg.Data(file=support.make_filename("cipher-1.asc")) sink = gpg.Data() c.op_decrypt(source, sink) result = c.op_decrypt_result() assert not result.unsupported_algorithm, \ "Unsupported algorithm: {}".format(result.unsupported_algorithm) support.print_data(sink) # Idiomatic interface. with gpg.Context() as c: plaintext, _, _ = c.decrypt(open(support.make_filename("cipher-1.asc"))) assert len(plaintext) > 0 assert plaintext.find(b'Wenn Sie dies lesen k') >= 0, \ 'Plaintext not found'
source = gpg.Data("Hallo Leute\n") cipher = gpg.Data() passphrase_cb_called = 0 def passphrase_cb(hint, desc, prev_bad, hook=None): global passphrase_cb_called passphrase_cb_called += 1 return passphrase c.set_passphrase_cb(passphrase_cb, None) c.op_encrypt([], 0, source, cipher) assert passphrase_cb_called == 1, \ "Callback called {} times".format(passphrase_cb_called) support.print_data(cipher) c = gpg.Context() c.set_armor(True) c.set_pinentry_mode(gpg.constants.PINENTRY_MODE_LOOPBACK) c.set_passphrase_cb(passphrase_cb, None) plain = gpg.Data() cipher.seek(0, os.SEEK_SET) c.op_decrypt(cipher, plain) # Seems like the passphrase is cached. # assert passphrase_cb_called == 2, \ # "Callback called {} times".format(passphrase_cb_called) support.print_data(plain) plain.seek(0, os.SEEK_SET)
sys.exit("Wrong fingerprint reported: {}".format(signature.fpr)) support.init_gpgme(constants.PROTOCOL_OpenPGP) c = core.Context() c.set_textmode(True) c.set_armor(True) source = core.Data("Hallo Leute\n") sink = core.Data() c.op_sign(source, sink, constants.SIG_MODE_NORMAL) result = c.op_sign_result() check_result(result, constants.SIG_MODE_NORMAL) support.print_data(sink) # Now a detached signature. source.seek(0, os.SEEK_SET) sink = core.Data() c.op_sign(source, sink, constants.SIG_MODE_DETACH) result = c.op_sign_result() check_result(result, constants.SIG_MODE_DETACH) support.print_data(sink) # And finally a cleartext signature. */ source.seek(0, os.SEEK_SET) sink = core.Data()
source = core.Data("Hallo Leute\n") cipher = core.Data() passphrase_cb_called = 0 def passphrase_cb(hint, desc, prev_bad, hook=None): global passphrase_cb_called passphrase_cb_called += 1 return passphrase c.set_passphrase_cb(passphrase_cb, None) c.op_encrypt([], 0, source, cipher) assert passphrase_cb_called == 1, \ "Callback called {} times".format(passphrase_cb_called) support.print_data(cipher) c = core.Context() c.set_armor(True) c.set_pinentry_mode(constants.PINENTRY_MODE_LOOPBACK) c.set_passphrase_cb(passphrase_cb, None) plain = core.Data() cipher.seek(0, os.SEEK_SET) c.op_decrypt(cipher, plain) # Seems like the passphrase is cached. #assert passphrase_cb_called == 2, \ # "Callback called {} times".format(passphrase_cb_called) support.print_data(plain) plain.seek(0, os.SEEK_SET)