Skip to content

Releases: q9f/secp256k1.cr

lib secp256k1.cr v0.5.0

06 Apr 15:21
@q9f q9f
v0.5.0
58e955c
Compare
Choose a tag to compare

lib secp256k1.cr v0.5.0 is a complete rewrite of the secp256k1.cr shard.

notables:

  • the entire gem has been completely refactored and optimized. instead of listing all the changes, it's worth taking a look at the docs: https://q9f.github.io/secp256k1.cr/
  • the only logic change is that signatures are now deterministic as per rfc-6979: https://datatracker.ietf.org/doc/html/rfc6979
    • old signatures remain valid, though.
    • new signatures also encode a recovery id in v.
  • ethereum and bitcoin accounts have been demoted to examples as they should be handled in external libraries. they live in their own namespace now and should be considered educational material.

changes:

  • docs: publish for 0.5 by @q9f in #60
  • lib: add an ethereum example implementation by @q9f in #59
  • lib: add an bitcoin example implementation by @q9f in #58
  • secp256k1: rewrite entire shard to 0.5 by @q9f in #57
  • spec: update formatting for crystal 1.3.0 by @q9f in #55
  • ci: bump codecov version by @q9f in #54
  • ci: bump codecov version by @q9f in #53
  • codecov: clean up html/js by @q9f in #51
  • github: add codecov workflow by @q9f in #50
  • github: switch to nightly default branch main by @q9f in #49
  • docs: publish docs for v0.3.6 by @q9f in #48

full changelog: v0.3.6...v0.5.0

lib secp256k1.cr v0.3.6

29 Sep 10:27
@q9f q9f
v0.3.6
b018dd5
Compare
Choose a tag to compare

lib secp256k1.cr v0.3.6 is a service release that ensures compatibility with crystal 1.1.1.

changes:

  • ci: fix github workflows #45
  • docs: regenerate crystal documentation #46
  • shards: update supported crystal version to v1.1.1 #47

lib secp256k1.cr v0.3.5

09 Feb 11:30
@q9f q9f
v0.3.5
5fffb6d
Compare
Choose a tag to compare

lib secp256k1.cr v0.3.5 is a service release which ensures compatibility with crystal 0.36.1.

changes:

  • Shards: bump crystal to v0.36.1 (#44)

lib secp256k1.cr v0.3.4

23 Oct 10:45
@q9f q9f
v0.3.4
5e5f124
Compare
Choose a tag to compare

lib secp256k1.cr v0.3.4 is a service release which ensures compatibility with crystal 0.35.1.

changes:

  • Shards: bump crystal version to 0.35.1 (#43)

lib secp256k1.cr v0.3.3

19 Jun 12:23
@q9f q9f
v0.3.3
16021a0
Compare
Choose a tag to compare

lib secp256k1.cr v0.3.3 is a service release which ensures compatibility with crystal 0.35.0.

changes:

  • Hash: Fix deprecated warnings (crystal 0.35) (#41)
  • Shards: bump crystal version to 0.35.0 (#42)

lib secp256k1.cr v0.3.2

11 Apr 20:18
@q9f q9f
v0.3.2
ffd0c7f
Compare
Choose a tag to compare

lib secp256k1.cr v0.3.2 is a service release which ensures compatibility with crystal 0.34.0.

changes:

  • ensure crystal 0.34 compatibility (#40)

lib secp256k1.cr v0.3.1

17 Feb 08:29
@q9f q9f
v0.3.1
7c8d124
Compare
Choose a tag to compare

lib secp256k1.cr v0.3.1 is a service release which ensures compatibility with crystal 0.33.0.

changes:

  • update crystal version to 0.33.0 #39

lib secp256k1.cr v0.3.0

11 Feb 12:08
@q9f q9f
v0.3.0
5895f35
Compare
Choose a tag to compare

this minor release improves stability. the following api renames shall be noted:

  • EC_Point is now ECPoint
  • ECDSA_Signature is now ECDSASignature
  • all hashing functions ending with _string are renamed now overloadable with String

changes:

  • changes to code style (#34)
  • add stats to nightly workflows (#36)
  • overload hashing functions with strings (#37)
  • update contributors (#38)

lib secp256k1.cr v0.2.2

13 Jan 10:06
@q9f q9f
v0.2.2
Compare
Choose a tag to compare

this feature release improves keypair and account management by introducing data structures for

  • Secp256k1::Keypair
  • Secp256k1::Bitcoin::Account
  • Secp256k1::Ethereum::Account
  • Secp256k1::Ethereum::Enode

changes:

  • add devp2p enode support #31
  • add mini_is_valid? #29

lib secp256k1.cr v0.2.1

09 Jan 10:11
@q9f q9f
v0.2.1
Compare
Choose a tag to compare

this release significantly improves the documentation at https://q9f.github.io/secp256k1.cr/ and applies some minor enhancements to the exposed apis of the library, namely:

  • mini-private keys now use BASE-56 instead of BASE-57. that does not affect existing mini-private keys.
  • added Secp256k1::Bitcoin.wif_from_private_uncompressed wrapper for uncompressed wif
  • renamed Secp256k1::Bitcoin.wif_compressed_from_private to .wif_from_private_compressed
  • private keys are handled as BigInt instead of a String literals wherever possible, e.g., Secp256k1::Bitcoin.address_from_private or Secp256k1::Ethereum.address_from_private
  • constants: renamed EC_PARAM_PRIME to EC_PRIME_P
  • replaced BASE_57 in favor of BASE_56 by removing the o from the alphabet as recommended by the Bitcoin Wiki.
  • binary hashing operations now directly operate on Bytes instead of String literals, e.g., Secp256k1::Hash.sha3, .sha256, .keccak256, .ripemd160
  • added Secp256k1::Hash.ripemd160_string for RIPEMD-160 hashes on String literals to complement .sha3_string, .sha256_string, and .keccak256_string
  • added Secp256k1::Hash.base58_char to complement .base56_char
  • pass the prime through Secp256k1::Util.restore_public_key

changes:

  • improve the documentation #27