arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Code Snippet

This section describes how we use the zkPass SDK in our demo code

hashtag
Generate Proof

This code snippet generates a zkPass proof. It requires 3 parameters:

  1. credentials : Get yours API key and secret at https://portal.ssi.id

  2. user_data_tokens : stringified signed users data.

  3. dvr_token : signed Dvr query.

hashtag
Verify Proof

This code snippet verifies a zkPass proof token. Components :

  1. zkpass_proof_token : check section for more details.

  2. expected_metadata : this is the expected metadata of the dvr.

  3. zkvm: zkvm used to generate proof, currently we only support r0

hashtag
Generate User Data Token

This code snippet generate user data token. Components :

  1. signing_key : a private key used to sign user data.

  2. data : user data in JSON format.

hashtag
Generate DVR Token

This code snippet generate DVR token. Components :

  1. signing_key : a private key used to sign dvr.

  2. dvr_data : Dvr data to sign.

use crate::lib_loader::generate_zkpass_proof;

let zkpass_proof_token = unsafe {
    generate_zkpass_proof(credentials, user_data_tokens, dvr_token)
};
.
  • service_url : you can use https://playground-zkpass.ssi.id , or use your own endpoint if you deploy zkPass on your own server.

  • Generate Proof
    use crate::lib_loader::verify_zkpass_proof;
    use dvr_types::ExpectedDvrMetadataFfi;
    
    //
    // Step 1: Create the expected metadata object.
    //
    let expected_metadata = ExpectedDvrMetadataFfi {
        ttl: some_ttl,
        dvr: expected_dvr_cstring.as_ptr(),
        user_data_verifying_keys: user_data_requests_slice.as_ptr(),
        user_data_verifying_keys_len: user_data_requests_slice.len() as u64,
    };
    
    //
    // Step 2: Call verify proof.
    //
    let result = unsafe {
        verify_zkpass_proof(&service_url, zkvm, zkpass_proof_token, expected_metadata)
    };
    use crate::lib_loader::generate_user_data_token;
    
    let user_data_token = unsafe {
        generate_user_data_token(signing_key, &data.to_string())
    };
    use crate::lib_loader::generate_query_token;
    
    let dvr_token = unsafe { generate_query_token(signing_key, dvr_data) };