<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nostr.git/internal/secp256k1/keys.go, branch main</title>
<subtitle>zero-dependency Go library for the Nostr protocol</subtitle>
<id>https://code.northwest.io/nostr.git/atom?h=main</id>
<link rel='self' href='https://code.northwest.io/nostr.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://code.northwest.io/nostr.git/'/>
<updated>2026-02-21T02:52:08+00:00</updated>
<entry>
<title>embed secp256k1: replace btcec with internal pure-go implementation</title>
<updated>2026-02-21T02:52:08+00:00</updated>
<author>
<name>Clawd</name>
<email>ai@clawd.bot</email>
</author>
<published>2026-02-21T02:52:08+00:00</published>
<link rel='alternate' type='text/html' href='https://code.northwest.io/nostr.git/commit/?id=d641f4566f051656bae79e406155c4f7f65ec338'/>
<id>urn:sha1:d641f4566f051656bae79e406155c4f7f65ec338</id>
<content type='text'>
This removes all external dependencies by embedding the secp256k1-learn
implementation into internal/secp256k1.

Changes:
- Add internal/secp256k1 with field arithmetic, curve ops, keys, schnorr
- Update keys.go to use internal secp256k1 package
- Remove btcec/btcutil dependencies (go.mod is now clean)
- All tests pass

Tradeoffs:
- ~10x slower crypto ops vs btcec (acceptable for nostr use case)
- Not constant-time (documented limitation)
- Zero external dependencies

Refs: code.northwest.io/secp256k1-learn
</content>
</entry>
</feed>
