| 394 | |
| 395 | class GpgSigner: |
| 396 | def __init__(self, gpg_id: str, gpg_secret_key: str, gpg_passphrase: str): |
| 397 | self.gpg_id = gpg_id |
| 398 | self.gpg_secret_key = gpg_secret_key |
| 399 | self.gpg_passphrase = gpg_passphrase |
| 400 | |
| 401 | self.gpg_home = pathlib.Path.home() / ".gnupg-tmp" |
| 402 | self.gpg_home.mkdir(parents=True, exist_ok=True, mode=0o700) |
| 403 | |
| 404 | # write gpg secret key to file |
| 405 | self.gpg_secret_key_path = self.gpg_home / "gpg_secret" |
| 406 | self.gpg_secret_key_path.write_bytes(base64.b64decode(gpg_secret_key)) |
| 407 | |
| 408 | self.gpg_passphrase_path = self.gpg_home / "gpg_pass" |
| 409 | self.gpg_passphrase_path.write_text(gpg_passphrase) |
| 410 | |
| 411 | run_cmd(["gpg", "--version"]) |
| 412 | |
| 413 | info("Importing GPG key") |
| 414 | run_cmd(["gpg", "--list-keys"], env=self.gpg_env()) |
| 415 | run_cmd( |
| 416 | ["gpg", *self.sign_args(), "--allow-secret-key-import", "--import", self.gpg_secret_key_path], |
| 417 | env=self.gpg_env(), |
| 418 | ) |
| 419 | run_cmd(["gpg", "--list-keys"], env=self.gpg_env()) |
| 420 | |
| 421 | def gpg_env(self) -> Env: |
| 422 | return {**os.environ, "GNUPGHOME": self.gpg_home} |