def wrapped(*args, **kw):
                for i in range(self.count):
                    cfg = {
                        "key_type": "RSA",
                        "key_length": 1024,
                        "name_real": "Test Key #%d" % i,
                        "name_comment": "Test key for %s" % f.__class__.__name__,
                        "name_email": "*****@*****.**" % i,
                        "passphrase": "secret"
                    }
                    key = self.gpg.gen_key(self.gpg.gen_key_input(**cfg))
                    assert key is not None, "GPG key not generated"
                    assert key.fingerprint is not None, "Key missing fingerprint"

                    cfg.update({
                        "key": key,
                        "fingerprint": key.fingerprint,
                        "key_id": key.fingerprint[-16:],
                        "locations": ["http://www.example.com/pubkey/%s" % key.fingerprint[-16:] ],
                        "owner": "%s (%s)" % (cfg["name_real"], cfg["name_email"]) 
                        })
                    self.keys.append(cfg)

                kw["pgp_keys"] = self.keys
                kw["gnupghome"] = self.gnupghome
                kw["gpgbin"] = self.gpgbin
                kw["gpg"] = self.gpg

                backup_props = [
                    "lr.publish.signing.privatekeyid",
                    "lr.publish.signing.passphrase",
                    "lr.publish.signing.gnupghome",
                    "lr.publish.signing.gpgbin",
                    "lr.publish.signing.publickeylocations",
                    "lr.publish.signing.signer"
                ]
                backup_conf = _backup(backup_props)

                config["app_conf"].update({
                    "lr.publish.signing.privatekeyid": self.keys[0]["key_id"],
                    "lr.publish.signing.passphrase": self.keys[0]["passphrase"],
                    "lr.publish.signing.gnupghome": self.gnupghome,
                    "lr.publish.signing.gpgbin": self.gpgbin,
                    "lr.publish.signing.publickeylocations": '''["http://localhost/pubkey"]''',
                    "lr.publish.signing.signer": self.keys[0]["owner"]
                    })

                reloadGPGConfig(config["app_conf"])

                try:
                    return f(*args, **kw)
                finally:
                    shutil.rmtree(self.gnupghome)
                    _restore(backup_conf)
                    reloadGPGConfig(config["app_conf"])
 def activate(self):
     ITombstonePolicy.activate(self)
     signing.reloadGPGConfig()
Example #3
0
        def wrapped(*args, **kw):
            for i in range(self.count):
                cfg = {
                    "key_type": "RSA",
                    "key_length": 1024,
                    "name_real": "Test Key #%d" % i,
                    "name_comment": "Test key for %s" % f.__class__.__name__,
                    "name_email": "*****@*****.**" % i,
                    "passphrase": "secret"
                }
                key = self.gpg.gen_key(self.gpg.gen_key_input(**cfg))
                assert key is not None, "GPG key not generated"
                assert key.fingerprint is not None, "Key missing fingerprint"

                cfg.update({
                    "key":
                    key,
                    "fingerprint":
                    key.fingerprint,
                    "key_id":
                    key.fingerprint[-16:],
                    "locations": [
                        "http://www.example.com/pubkey/%s" %
                        key.fingerprint[-16:]
                    ],
                    "owner":
                    "%s (%s)" % (cfg["name_real"], cfg["name_email"])
                })
                self.keys.append(cfg)

            kw["pgp_keys"] = self.keys
            kw["gnupghome"] = self.gnupghome
            kw["gpgbin"] = self.gpgbin
            kw["gpg"] = self.gpg

            backup_props = [
                "lr.publish.signing.privatekeyid",
                "lr.publish.signing.passphrase",
                "lr.publish.signing.gnupghome", "lr.publish.signing.gpgbin",
                "lr.publish.signing.publickeylocations",
                "lr.publish.signing.signer"
            ]
            backup_conf = _backup(backup_props)

            config["app_conf"].update({
                "lr.publish.signing.privatekeyid":
                self.keys[0]["key_id"],
                "lr.publish.signing.passphrase":
                self.keys[0]["passphrase"],
                "lr.publish.signing.gnupghome":
                self.gnupghome,
                "lr.publish.signing.gpgbin":
                self.gpgbin,
                "lr.publish.signing.publickeylocations":
                '''["http://localhost/pubkey"]''',
                "lr.publish.signing.signer":
                self.keys[0]["owner"]
            })

            reloadGPGConfig(config["app_conf"])

            try:
                return f(*args, **kw)
            finally:
                shutil.rmtree(self.gnupghome)
                _restore(backup_conf)
                reloadGPGConfig(config["app_conf"])
 def activate(self):
     ITombstonePolicy.activate(self)
     signing.reloadGPGConfig()