|
| 1 | +[package] |
| 2 | +name = "git-sign-nostr" |
| 3 | +version.workspace = true |
| 4 | +edition.workspace = true |
| 5 | +rust-version.workspace = true |
| 6 | +license.workspace = true |
| 7 | +repository.workspace = true |
| 8 | +description = "NIP-GS git commit/tag signing program using Nostr secp256k1 keys" |
| 9 | +readme = "README.md" |
| 10 | +publish = false # internal workspace tool, not published to crates.io |
| 11 | + |
| 12 | +[[bin]] |
| 13 | +name = "git-sign-nostr" |
| 14 | +path = "src/main.rs" |
| 15 | + |
| 16 | +[dependencies] |
| 17 | +# Base64 armor encoding/decoding for NIP-GS signature envelopes. |
| 18 | +# Not in workspace deps — each crate pins independently (same pattern as |
| 19 | +# sprout-relay, sprout-mcp, sprout-cli, git-credential-nostr). |
| 20 | +base64 = "0.22" |
| 21 | + |
| 22 | +# Hex encoding for BIP-340 signatures and public keys. |
| 23 | +hex = { workspace = true } |
| 24 | + |
| 25 | +# Secret key zeroization on drop. |
| 26 | +zeroize = { workspace = true, features = ["derive"] } |
| 27 | + |
| 28 | +# Nostr key parsing (nsec/npub bech32), secp256k1 Schnorr signing, SHA-256. |
| 29 | +# Uses the full default feature set because we need: Keys, PublicKey, |
| 30 | +# FromBech32, and the re-exported bitcoin::secp256k1 + bitcoin::hashes. |
| 31 | +nostr = { workspace = true } |
| 32 | + |
| 33 | +# JSON parsing for NIP-OA auth tag and envelope verification. |
| 34 | +serde_json = { workspace = true } |
| 35 | + |
| 36 | +# Timestamp formatting for GnuPG VALIDSIG status lines. |
| 37 | +chrono = { workspace = true } |
| 38 | + |
| 39 | +# Unix-specific: O_NOFOLLOW for keyfile open, fcntl for fd validation. |
| 40 | +[target.'cfg(unix)'.dependencies] |
| 41 | +libc = "0.2" |
0 commit comments