{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":450471192,"defaultBranch":"main","name":"ssh-agent-lib","ownerLogin":"wiktor-k","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-01-21T11:50:22.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1718963?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1716993974.0","currentOid":""},"activityList":{"items":[{"before":"082fa3b3ec1eed153e2c7d25573d70733ba88c7d","after":"6da5a7e8780334b2b6e2b709f07bf0342b9f3eec","ref":"refs/heads/wiktor/reexports","pushedAt":"2024-05-29T14:46:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Re-export types that we use in our public API\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Re-export types that we use in our public API"}},{"before":null,"after":"082fa3b3ec1eed153e2c7d25573d70733ba88c7d","ref":"refs/heads/wiktor/reexports","pushedAt":"2024-05-29T14:46:14.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Merge pull request #63 from wiktor-k/wiktor/use-secrecy\n\nUse `secrecy` crate to protect PINs from accidental leaks","shortMessageHtmlLink":"Merge pull request #63 from wiktor-k/wiktor/use-secrecy"}},{"before":"9ba2225ca8cab0000d3b2192a3ca7926e8ddd930","after":"3ae4dc2805a3fd2b488158cbd24bf7318f112332","ref":"refs/heads/wiktor/better-readmes","pushedAt":"2024-05-29T14:29:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Add README to examples\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Add README to examples"}},{"before":"2e5127d54e6474cf1682fc8c4c57e1feb46cb7b1","after":"9ba2225ca8cab0000d3b2192a3ca7926e8ddd930","ref":"refs/heads/wiktor/better-readmes","pushedAt":"2024-05-29T13:34:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Add README to examples\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Add README to examples"}},{"before":null,"after":"2e5127d54e6474cf1682fc8c4c57e1feb46cb7b1","ref":"refs/heads/wiktor/better-readmes","pushedAt":"2024-05-29T13:19:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Add client example to README.md\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Add client example to README.md"}},{"before":"4756c67a77c4ff1e9a5c3cbe5ebfccfae9998588","after":null,"ref":"refs/heads/wiktor/use-secrecy","pushedAt":"2024-05-20T15:08:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"}},{"before":"2fcef7a9db9f1c089059ee0066f78d15bc7c920a","after":"082fa3b3ec1eed153e2c7d25573d70733ba88c7d","ref":"refs/heads/main","pushedAt":"2024-05-20T15:08:15.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Merge pull request #63 from wiktor-k/wiktor/use-secrecy\n\nUse `secrecy` crate to protect PINs from accidental leaks","shortMessageHtmlLink":"Merge pull request #63 from wiktor-k/wiktor/use-secrecy"}},{"before":"ce32e1cbd865082d51163e5aae97ff6bdf0b4d0a","after":"4756c67a77c4ff1e9a5c3cbe5ebfccfae9998588","ref":"refs/heads/wiktor/use-secrecy","pushedAt":"2024-05-20T08:53:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Use `secrecy` crate to protect PINs from accidental leaks\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Use secrecy crate to protect PINs from accidental leaks"}},{"before":"df138edc9dbb04888392562e54164c98d507fd49","after":null,"ref":"refs/heads/wiktor/add-extensions-to-examples","pushedAt":"2024-05-20T07:27:51.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"}},{"before":"874e9860fac4ae0e1316cf5ebcdf868eb89ce66b","after":"2fcef7a9db9f1c089059ee0066f78d15bc7c920a","ref":"refs/heads/main","pushedAt":"2024-05-20T07:27:50.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Merge pull request #70 from wiktor-k/wiktor/add-extensions-to-examples\n\nAdd an example of using SSH agent extensions for curve 25519 decryption","shortMessageHtmlLink":"Merge pull request #70 from wiktor-k/wiktor/add-extensions-to-examples"}},{"before":"2c19ab843a469fdce8a551f35ca54d1fd88340a9","after":"df138edc9dbb04888392562e54164c98d507fd49","ref":"refs/heads/wiktor/add-extensions-to-examples","pushedAt":"2024-05-20T07:24:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Add an example of using SSH agent extensions\n\nAdds the `decrypt-derive-ids@metacode.biz` and `decrypt-derive@metacode.biz`\nextensions with encoding and decoding rules.\n\nThe extension is used to facilitate curve 25519 decryption over SSH\nagent connections.\n\nThis PR additionally makes the OpenPGP Card agent example implement\nthese two extensions thus providing clients with public keys of its\ndecryption keys. Additionally a `decrypt derive` extension similar to\nthe sign request is implemented.\n\nThe PGP wrapper example has been extended to emit encryption subkeys\nif the agent supports them. An extra `decrypt` subcommand has been\nadded. The docs have been updated to showcase how to use the feature:\n\n```sh\necho I like strawberries | gpg -er 4EB27E153DDC454364B36B59A142E92C91BE3AD5 > /tmp/encrypted.pgp\nSSH_AUTH_SOCK=/tmp/ext-agent.sock cargo run --example pgp-wrapper -- decrypt < /tmp/encrypted.pgp\n...\nI like strawberries\n```\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Add an example of using SSH agent extensions"}},{"before":"0a509e6452eb1ea321a31f7bfbb3fd25fd4cfc30","after":"874e9860fac4ae0e1316cf5ebcdf868eb89ce66b","ref":"refs/heads/main","pushedAt":"2024-05-19T20:31:44.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"baloo","name":"Arthur Gautier","path":"/baloo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59060?s=80&v=4"},"commit":{"message":"Merge pull request #73 from overhacked/overhacked/unparsed-asref\n\nImplement `AsRef<[u8]>` and `into_bytes(self)` for `Unparsed`","shortMessageHtmlLink":"Merge pull request #73 from overhacked/overhacked/unparsed-asref"}},{"before":"845c21853be1ecb51b4943690d585092c4cd26af","after":"0a509e6452eb1ea321a31f7bfbb3fd25fd4cfc30","ref":"refs/heads/main","pushedAt":"2024-05-18T20:24:48.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"baloo","name":"Arthur Gautier","path":"/baloo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59060?s=80&v=4"},"commit":{"message":"Merge pull request #71 from baloo/baloo/key_storage/try_from\n\nkey_storage: use `ssh_key`'s `TryFrom` implementation","shortMessageHtmlLink":"Merge pull request #71 from baloo/baloo/key_storage/try_from"}},{"before":"8b920a8aa5a113e7948cb1c66b0617abe92ef815","after":"2c19ab843a469fdce8a551f35ca54d1fd88340a9","ref":"refs/heads/wiktor/add-extensions-to-examples","pushedAt":"2024-05-16T11:27:07.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Add an example of using SSH agent extensions\n\nAdds the `decrypt-derive-ids@metacode.biz` and `decrypt-derive@metacode.biz`\nextensions with encoding and decoding rules.\n\nThe extension is used to facilitate curve 25519 decryption over SSH\nagent connections.\n\nThis PR additionally makes the OpenPGP Card agent example implement\nthese two extensions thus providing clients with public keys of its\ndecryption keys. Additionally a `decrypt derive` extension similar to\nthe sign request is implemented.\n\nThe PGP wrapper example has been extended to emit encryption subkeys\nif the agent supports them. An extra `decrypt` subcommand has been\nadded. The docs have been updated to showcase how to use the feature:\n\n```sh\necho I like strawberries | gpg -er 4EB27E153DDC454364B36B59A142E92C91BE3AD5 > /tmp/encrypted.pgp\nSSH_AUTH_SOCK=/tmp/ext-agent.sock cargo run --example pgp-wrapper -- decrypt < /tmp/encrypted.pgp\n...\nI like strawberries\n```\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Add an example of using SSH agent extensions"}},{"before":"63f2146b489465badafc1ea7f1625af0d3efd2fe","after":"8b920a8aa5a113e7948cb1c66b0617abe92ef815","ref":"refs/heads/wiktor/add-extensions-to-examples","pushedAt":"2024-05-15T15:27:15.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Add decryption to pgp-wrapper\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Add decryption to pgp-wrapper"}},{"before":null,"after":"63f2146b489465badafc1ea7f1625af0d3efd2fe","ref":"refs/heads/wiktor/add-extensions-to-examples","pushedAt":"2024-05-15T10:58:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"WIP: ext\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"WIP: ext"}},{"before":"1b556c8e1f9ecc5e4f7335db5051d899899f7def","after":"845c21853be1ecb51b4943690d585092c4cd26af","ref":"refs/heads/main","pushedAt":"2024-05-15T09:53:56.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Merge pull request #69 from overhacked/overhacked/roundtrip-test-expected-object\n\nAdd support for expected objects to roundtrip test","shortMessageHtmlLink":"Merge pull request #69 from overhacked/overhacked/roundtrip-test-expe…"}},{"before":"73fcf48180191f0e614a59248eb4352781ca0579","after":"1b556c8e1f9ecc5e4f7335db5051d899899f7def","ref":"refs/heads/main","pushedAt":"2024-05-13T11:52:46.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Merge pull request #65 from wiktor-k/wiktor/add-proto-dumper\n\nAdd protocol dumper example","shortMessageHtmlLink":"Merge pull request #65 from wiktor-k/wiktor/add-proto-dumper"}},{"before":"181d7ceb56d944422b245966a68eb1912e15d3e0","after":null,"ref":"refs/heads/wiktor/add-proto-dumper","pushedAt":"2024-05-13T11:52:46.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"}},{"before":"6f3d4f506e8897b8113d164730ff2bf2f8c14ffd","after":"181d7ceb56d944422b245966a68eb1912e15d3e0","ref":"refs/heads/wiktor/add-proto-dumper","pushedAt":"2024-05-13T11:48:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Adjust `pgp-wrapper` example\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Adjust pgp-wrapper example"}},{"before":"7d062c3c14bd085abb7e78bec277a6904c13a29f","after":"6f3d4f506e8897b8113d164730ff2bf2f8c14ffd","ref":"refs/heads/wiktor/add-proto-dumper","pushedAt":"2024-05-13T11:38:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Adjust `pgp-wrapper` example\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Adjust pgp-wrapper example"}},{"before":"688b29148e4e3f98c236303e970bf866e2fa2725","after":"7d062c3c14bd085abb7e78bec277a6904c13a29f","ref":"refs/heads/wiktor/add-proto-dumper","pushedAt":"2024-05-13T11:18:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Adjust `pgp-wrapper` example\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Adjust pgp-wrapper example"}},{"before":"6981c15f4ab28a224642b9dda93eab56341e3bc2","after":null,"ref":"refs/heads/wiktor/pgp-wrapper","pushedAt":"2024-05-13T11:03:06.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"}},{"before":"bd362874ba418334dd24f5207f2be34b32509aa5","after":"73fcf48180191f0e614a59248eb4352781ca0579","ref":"refs/heads/main","pushedAt":"2024-05-13T11:03:05.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Merge pull request #68 from wiktor-k/wiktor/pgp-wrapper\n\nAdd `pgp-wrapper` example","shortMessageHtmlLink":"Merge pull request #68 from wiktor-k/wiktor/pgp-wrapper"}},{"before":"8d6ff1676627c5a8b46a0524d4c038e82333f9ba","after":"6981c15f4ab28a224642b9dda93eab56341e3bc2","ref":"refs/heads/wiktor/pgp-wrapper","pushedAt":"2024-05-13T11:00:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Add `pgp-wrapper` example\n\nCreates an OpenPGP certificate based on the SSH key and allows signing files\nemitting OpenPGP framed packets.\n\nRequires that the first key in SSH is ed25519 (see `ssh-add -L`).\n\nGenerate a key with:\n`cargo run --example pgp-wrapper generate \"John Doe \" > key.pgp`\n\nSign data using:\n`cargo run --example pgp-wrapper sign < Cargo.toml > Cargo.toml.sig`\n\nImport the certificate using GnuPG:\n```sh\n$ gpg --import key.pgp\ngpg: key A142E92C91BE3AD5: public key \"John Doe \" imported\ngpg: Total number processed: 1\ngpg: imported: 1\n```\n\nVerify the signature using GnuPG:\n```sh\n$ gpg --verify Cargo.toml.sig\ngpg: assuming signed data in 'Cargo.toml'\ngpg: Signature made Fri May 10 11:15:53 2024 CEST\ngpg: using EDDSA key 4EB27E153DDC454364B36B59A142E92C91BE3AD5\ngpg: Good signature from \"John Doe \" [unknown]\ngpg: WARNING: This key is not certified with a trusted signature!\ngpg: There is no indication that the signature belongs to the owner.\nPrimary key fingerprint: 4EB2 7E15 3DDC 4543 64B3 6B59 A142 E92C 91BE 3AD5\n```\n\nWorks perfectly in conjunction with `openpgp-card-agent.rs`!\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Add pgp-wrapper example"}},{"before":"8c3fb5b00a7fdf7996fb64a3427b5bf007371af2","after":null,"ref":"refs/heads/wiktor/add-socket-to-new-session","pushedAt":"2024-05-13T10:41:45.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"}},{"before":"f07a4368a203d66526bdc91d312fdcdb3790d072","after":"bd362874ba418334dd24f5207f2be34b32509aa5","ref":"refs/heads/main","pushedAt":"2024-05-13T10:41:44.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Merge pull request #60 from wiktor-k/wiktor/add-socket-to-new-session\n\nExpose socket info in `new_session`","shortMessageHtmlLink":"Merge pull request #60 from wiktor-k/wiktor/add-socket-to-new-session"}},{"before":"ba45d7d367c776dfa2a9c3c168c12e072f3331a9","after":"8c3fb5b00a7fdf7996fb64a3427b5bf007371af2","ref":"refs/heads/wiktor/add-socket-to-new-session","pushedAt":"2024-05-13T10:38:12.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Add example illustrating retrieving underlying socket info\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Add example illustrating retrieving underlying socket info"}},{"before":"d9756ed09a8cce6474c2cd5d2077c162b5b201f0","after":"8d6ff1676627c5a8b46a0524d4c038e82333f9ba","ref":"refs/heads/wiktor/pgp-wrapper","pushedAt":"2024-05-10T09:27:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Add `pgp-wrapper` example\n\nCreates an OpenPGP certificate based on the SSH key and allows signing files\nemitting OpenPGP framed packets.\n\nRequires that the first key in SSH is ed25519 (see `ssh-add -L`).\n\nGenerate a key with:\n`cargo run --example pgp-wrapper generate \"John Doe \" > key.pgp`\n\nSign data using:\n`cargo run --example pgp-wrapper sign < Cargo.toml > Cargo.toml.sig`\n\nImport the certificate using GnuPG:\n```sh\n$ gpg --import key.pgp\ngpg: key A142E92C91BE3AD5: public key \"John Doe \" imported\ngpg: Total number processed: 1\ngpg: imported: 1\n```\n\nVerify the signature using GnuPG:\n```sh\n$ gpg --verify Cargo.toml.sig\ngpg: assuming signed data in 'Cargo.toml'\ngpg: Signature made Fri May 10 11:15:53 2024 CEST\ngpg: using EDDSA key 4EB27E153DDC454364B36B59A142E92C91BE3AD5\ngpg: Good signature from \"John Doe \" [unknown]\ngpg: WARNING: This key is not certified with a trusted signature!\ngpg: There is no indication that the signature belongs to the owner.\nPrimary key fingerprint: 4EB2 7E15 3DDC 4543 64B3 6B59 A142 E92C 91BE 3AD5\n```\n\nWorks perfectly in conjunction with `openpgp-card-agent.rs`!\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Add pgp-wrapper example"}},{"before":null,"after":"d9756ed09a8cce6474c2cd5d2077c162b5b201f0","ref":"refs/heads/wiktor/pgp-wrapper","pushedAt":"2024-05-10T09:23:33.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"wiktor-k","name":"Wiktor Kwapisiewicz","path":"/wiktor-k","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1718963?s=80&v=4"},"commit":{"message":"Add `pgp-wrapper` example\n\nCreates an OpenPGP certificate based on the SSH key and allows signing files\nemitting OpenPGP framed packets.\n\nRequires that the first key in SSH is ed25519 (see `ssh-add -L`).\n\nGenerate a key with:\n`cargo run --example pgp-wrapper generate \"John Doe \" > key.pgp`\n\nSign data using:\n`cargo run --example pgp-wrapper sign < Cargo.toml > Cargo.toml.sig`\n\nImport the certificate using GnuPG:\n```sh\n$ gpg --import key.pgp\ngpg: key A142E92C91BE3AD5: public key \"John Doe \" imported\ngpg: Total number processed: 1\ngpg: imported: 1\n```\n\nVerify the signature using GnuPG:\n```sh\n$ gpg --verify Cargo.toml.sig\ngpg: assuming signed data in 'Cargo.toml'\ngpg: Signature made Fri May 10 11:15:53 2024 CEST\ngpg: using EDDSA key 4EB27E153DDC454364B36B59A142E92C91BE3AD5\ngpg: Good signature from \"John Doe \" [unknown]\ngpg: WARNING: This key is not certified with a trusted signature!\ngpg: There is no indication that the signature belongs to the owner.\nPrimary key fingerprint: 4EB2 7E15 3DDC 4543 64B3 6B59 A142 E92C 91BE 3AD5\n```\n\nWorks perfectly in conjunction with `openpgp-card-agent.rs`!\n\nSigned-off-by: Wiktor Kwapisiewicz ","shortMessageHtmlLink":"Add pgp-wrapper example"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEVxJQBQA","startCursor":null,"endCursor":null}},"title":"Activity · wiktor-k/ssh-agent-lib"}