Skip to content

Releases: longfellow-zk/longfellow-zk

Release of version v0.9

Choose a tag to compare

@ask77nl ask77nl released this 31 Mar 18:51
fe83ec6

This release focuses on reducing memory utilization.

  • Reduced memory utilization of zk_mdoc prover from 600MB to <200MB.
  • used more idiomatic C++ for circuit creation. Previously we used type system tricks to enforce determinism, but an improved compiler has subsumed these tricks.
  • fixes #139 , fixes #140 both raised by @GUJustin

Release of version v0.8.6

Choose a tag to compare

@ask77nl ask77nl released this 13 Jan 22:27
4d2e8fa

This release introduces circuits version 7.

The main changes are:

  • Increased the supported MSO size to 2551 bytes. This is enough to support ~50 attributes.
  • Enable all valid orderings of the fields in the cbor salted hash structure
  • The proof will use rate 7, 132 columns to achieve 109bits of security
  • Added checks in run_mdoc_verifier to ensure that the RequestedAttribute value strings are valid cbor encodings
  • Add new types of errors to indicate problems in the run_mdoc_prover inputs

Release of version v0.8.5

Choose a tag to compare

@ask77nl ask77nl released this 10 Nov 15:25
901c856

This release deprecates old version 3 and 4 circuits.

Release of version v0.8.4

Choose a tag to compare

@ask77nl ask77nl released this 17 Oct 18:55
2dcdcf9

This release introduces circuits version 6.

The most important change is the new range checks against SHA block lengths

The SHA circuit verifies that all extra bytes in the input array are zero-padded. Furthermore, the mdoc circuit verifies that all indices occur within the bytes that were verified by the SHA component.

This change does not add any witnesses. Although it results in a different circuit (v6), the same prover, witness generator, and verifier from v5 works.

Release of version v0.8.3

Choose a tag to compare

@ask77nl ask77nl released this 25 Aug 15:23
902a955

This version introduces new circuits version 5.

The most important change is support for namespaces different than org.iso.18013.5.1

There are the following limitations:

The prior version searched for a specific namespace org.iso.18013.5.1, both during witness parsing and inside the circuit. This change removes that hard-coded search and the circuit will no longer check for a namespace. This is because the namespace does not seem to add much value to the verification process. A future iteration of this circuit will perform more robust parsing.
The witness parsing now accepts a list of valid namespaces that are defined in the standards literature (see lib/circuits/mdoc/mdoc_attribute_ids.h for currently supported ones).
If multiple attributes are requested, they must have the same namespace, requesting attributes from different namespaces is not supported yet.

Release of version v0.8.2

Choose a tag to compare

@ask77nl ask77nl released this 21 Aug 20:15
a7a9b02

Changes in this release:

  1. [Breaking API Change!] The format of RequestedAttribute that is passed to run_mdoc_prover() and run_mdoc_verifier() has changed. The major change concerns how an identity attribute is conveyed to these low-level functions. Previously, the API supported an inconsistent approach in which some values (e.g., like the primitive 'true') were given in CBOR-encoded format (e.g., '0xf5'), and other values, such as strings and dates, were given as basic text encodings, and were internally transformed into CBOR encodings by the function. To address this inconsistency, the API now requires that all attribute values are given in their expected CBOR-encoded format. Thus, strings require the pre-pending of the length, dates require the pre-pending of a tag code, etc. The low-level run_mdoc_{*} API now only verifies bytestring equality between the requested attribute identifier and its value. It is the responsibility of the caller to prepare arguments for this semantics. The authors have integrated this change into a few systems that use longfellow, and believe this change is easy to support because most systems naturally perform CBOR manipulation both before and after calling this ZK library. As a result, we believe that API consistency was worth this breaking change.
  2. namespace field was added to the RequestedAttribute.
  3. There are new sumcheck optimizations
  4. CBOR parser now works over binary fields
  5. Circuit generator is separated from prover/verifier and doesn't have to be linked during compilation

Release of version v0.8.1

Choose a tag to compare

@ask77nl ask77nl released this 20 Aug 17:05
87474f3
Merge pull request #22 from google/upstream

Adding -01 version of spec