Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ZK BBS+-based selectively disclosable credentials (JPT) #1355

Merged
merged 35 commits into from
May 24, 2024

Conversation

UMR1352
Copy link
Contributor

@UMR1352 UMR1352 commented Apr 25, 2024

Description of change

Implement zero knowledge JPT encoded selectively disclosable credential following IETF's specification.

Links to any relevant issues

Closes #144
Closes #1324

Type of change

  • Bug fix (a non-breaking change which fixes an issue)
  • Enhancement (a non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation Fix

How the change has been tested

Added unit and integration tests, examples for both WASM and Rust targets.

Change checklist

  • I have followed the contribution guidelines for this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

AlbertoSvg and others added 13 commits March 4, 2024 15:52
* refactor `RevocationTimeframeStatus` to other setups

* fix smaller typos
… representation (#1339)

* update zkryptium/json-proof-token deps and new BLS key representation

* minor fix
* update zkryptium/json-proof-token deps and new BLS key representation

* minor fix

* use zkryptium for crypto operations and JPT for serialization

* fix format
* Implement JwkStorageExt for StrongholdStorage

* reorganize code

* persist changes to stronghold when creating bbs+ keypair, clippy, fmt

* feature gate

* zkp wasm example

* zkp_revocation wasm example

* wasm bindings

* fix docs
@UMR1352 UMR1352 added Enhancement New feature or improvement to an existing feature Wasm Related to Wasm bindings. Becomes part of the Wasm changelog Added A new feature that requires a minor release. Part of "Added" section in changelog Rust Related to the core Rust code. Becomes part of the Rust changelog. labels Apr 25, 2024
@UMR1352 UMR1352 added this to the v1.3 milestone Apr 25, 2024
@UMR1352 UMR1352 self-assigned this Apr 25, 2024
@UMR1352 UMR1352 requested a review from a team as a code owner April 25, 2024 09:50
UMR1352 and others added 4 commits April 25, 2024 12:01
commit 30c9bf2
Author: Foorack / Max Faxälv <max@foorack.com>
Date:   Tue Apr 2 10:32:48 2024 +0200

    inherit `repository` in identity_verification (#1348)

commit 1e9c9a3
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Wed Mar 27 15:35:29 2024 +0100

    Release wasm-v1.2.0 (#1345)

commit 84a630d
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Wed Mar 27 15:32:19 2024 +0100

    Release v1.2.0 (#1347)

commit 1aba4b5
Author: Eike Haß <eike-hass@web.de>
Date:   Wed Mar 27 13:13:27 2024 +0100

    removed dev_dep version

commit 0352b84
Author: Enrico Marconi <31142849+UMR1352@users.noreply.github.com>
Date:   Wed Mar 27 10:44:43 2024 +0100

    Support %-encoded characters in DID method id (#1303)

commit e68538f
Author: Enrico Marconi <31142849+UMR1352@users.noreply.github.com>
Date:   Tue Mar 26 11:58:35 2024 +0100

    gRPC bindings (#1264)

commit e53561e
Author: Enrico Marconi <31142849+UMR1352@users.noreply.github.com>
Date:   Tue Mar 26 11:18:14 2024 +0100

    allow large result err variants (#1342)

commit 4a144a3
Author: Eike Haß <eike-hass@web.de>
Date:   Tue Mar 19 09:51:52 2024 +0100

    fix readme links (#1336)

commit 0af29fc
Author: Enrico Marconi <31142849+UMR1352@users.noreply.github.com>
Date:   Mon Mar 18 17:16:57 2024 +0100

    Feat/custom verification method (#1334)

    * Add support for arbitrary (custom) verification method data

    * wasm bindings

    * custom method type + wasm

    * workaround serde's issue

    * Update bindings/wasm/src/verification/wasm_method_data.rs

    Co-authored-by: Abdulrahim Al Methiab <31316147+abdulmth@users.noreply.github.com>

    * review comments

    * fmt

    * review comment

    ---------

    Co-authored-by: Abdulrahim Al Methiab <31316147+abdulmth@users.noreply.github.com>

commit edb9150
Author: Enrico Marconi <31142849+UMR1352@users.noreply.github.com>
Date:   Tue Mar 12 14:45:04 2024 +0100

    use latest release of sd-jwt-payload (#1333)

    * use latest release of sd-jwt-payload

    * make clippy happy

commit 0794379
Author: Abdulrahim Al Methiab <31316147+abdulmth@users.noreply.github.com>
Date:   Wed Mar 6 14:16:00 2024 +0100

    Wasm bindings for `BlockChainAccountId` verification method. (#1326)

commit 59d38f7
Author: Abdulrahim Al Methiab <31316147+abdulmth@users.noreply.github.com>
Date:   Wed Mar 6 10:56:23 2024 +0100

    Add constructor for VerificationMethod in TS (#1321)
Copy link

@semenov-vladyslav semenov-vladyslav left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cleanup sk after use. Validate pk before signing.

identity_stronghold/src/stronghold_jwk_storage_ext.rs Outdated Show resolved Hide resolved
identity_stronghold/src/stronghold_jwk_storage_ext.rs Outdated Show resolved Hide resolved
identity_stronghold/src/stronghold_jwk_storage_ext.rs Outdated Show resolved Hide resolved
identity_stronghold/src/stronghold_jwk_storage_ext.rs Outdated Show resolved Hide resolved
identity_stronghold/src/stronghold_jwk_storage_ext.rs Outdated Show resolved Hide resolved
identity_stronghold/src/stronghold_jwk_storage_ext.rs Outdated Show resolved Hide resolved
@UMR1352 UMR1352 requested review from semenov-vladyslav and wulfraem and removed request for semenov-vladyslav April 29, 2024 12:36
identity_stronghold/src/stronghold_jwk_storage.rs Outdated Show resolved Hide resolved
identity_stronghold/src/stronghold_jwk_storage.rs Outdated Show resolved Hide resolved
identity_stronghold/src/stronghold_jwk_storage_ext.rs Outdated Show resolved Hide resolved
identity_stronghold/Cargo.toml Outdated Show resolved Hide resolved
identity_storage/src/storage/jwp_document_ext.rs Outdated Show resolved Hide resolved
@wulfraem
Copy link
Contributor

Also tests::test_jwk_storage::write_to_disk (in identity_stronghold) runs into an error on my machine:

$ cargo test tests::test_jwk_storage::write_to_disk -- --exact
    Finished test [unoptimized + debuginfo] target(s) in 0.15s
     Running unittests src/lib.rs (/Users/swo/projects/iota/identity.rs-2/target/debug/deps/identity_stronghold-2e61cbd91c5befb5)

running 1 test
test tests::test_jwk_storage::write_to_disk ... FAILED

failures:

---- tests::test_jwk_storage::write_to_disk stdout ----
thread 'tests::test_jwk_storage::write_to_disk' panicked at identity_stronghold/src/tests/test_jwk_storage.rs:97:3:
assertion failed: exists
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    tests::test_jwk_storage::write_to_disk

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 12 filtered out; finished in 0.02s

@wulfraem
Copy link
Contributor

CI errors looks like to fail due to feature "bbs-plus" not being enabled in identity_stronghold.

Works locally if I start the tests with cargo test --features "bbs-plus". ^^

commit 9abdb38
Author: Sven <sven.feuchtmueller@gmx.de>
Date:   Tue May 14 09:16:09 2024 +0200

    Add EcDSA verifier (#1353)

    * add ecdsa verifier

    * add identity_ecdsa_verifier to workspace, add license headers

    * Update identity_ecdsa_verifier/Cargo.toml

    Co-authored-by: wulfraem <wulfraem@users.noreply.github.com>

    * Update identity_ecdsa_verifier/src/secp256k1.rs

    Co-authored-by: wulfraem <wulfraem@users.noreply.github.com>

    * Update identity_ecdsa_verifier/Cargo.toml

    Co-authored-by: wulfraem <wulfraem@users.noreply.github.com>

    * Update identity_ecdsa_verifier/src/secp256k1.rs

    Co-authored-by: wulfraem <wulfraem@users.noreply.github.com>

    * Update identity_ecdsa_verifier/src/secp256r1.rs

    Co-authored-by: wulfraem <wulfraem@users.noreply.github.com>

    * add feedback

    * add OpenSSL installation to windows runner in CI

    * update license headers and authors for ecdsa verifier

    * update license template to allow multiple contributors

    ---------

    Co-authored-by: Sebastian Wolfram <wulfraem@users.noreply.github.com>

commit 149bfac
Author: wulfraem <wulfraem@users.noreply.github.com>
Date:   Mon May 13 10:44:09 2024 +0200

    Fix findings after clippy update (#1365)

    * fix clippy findings

    * fix formatting

    * refactor .clone_into calls into .to_string

    * fix previous edit

    * disable empty_docs for wasm binding for now

    * fix missing newline

    * disable self update from rust setup in ci for now

    * update self update skip to skip only for windows build

commit 51aedd5
Author: Enrico Marconi <31142849+UMR1352@users.noreply.github.com>
Date:   Tue Apr 30 16:16:36 2024 +0200

    Use STRONGHOLD_PWD_FILE env variable to pass stronghold's password (#1363)

commit edec26c
Author: Enrico Marconi <31142849+UMR1352@users.noreply.github.com>
Date:   Tue Apr 30 15:40:55 2024 +0200

    Arbitrary data signing service (#1350)

commit f59e75a
Author: Eike Haß <eike-hass@web.de>
Date:   Tue Apr 30 15:34:40 2024 +0200

    Fix dockerhub workflow (#1343)

commit 993cfec
Author: Enrico Marconi <31142849+UMR1352@users.noreply.github.com>
Date:   Fri Apr 26 13:39:29 2024 +0200

    add inx-faucet profile (#1356)
@eike-hass eike-hass self-requested a review May 23, 2024 14:46
@UMR1352 UMR1352 merged commit f25c593 into main May 24, 2024
13 checks passed
@UMR1352 UMR1352 deleted the feat/jpt-bbs+-sd branch May 24, 2024 10:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Added A new feature that requires a minor release. Part of "Added" section in changelog Enhancement New feature or improvement to an existing feature Rust Related to the core Rust code. Becomes part of the Rust changelog. Wasm Related to Wasm bindings. Becomes part of the Wasm changelog
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Create Wasm Bindings Add Selective Disclosure Support to VC
5 participants