public async Task TestProverStoreClaimWorks()
        {
            await InitCommonWallet();

            await WalletUtils.CreateWallet(WALLET_NAME, WALLET_KEY);

            var proverWallet = await WalletUtils.OpenWallet(WALLET_NAME, WALLET_KEY);

            await AnonCreds.ProverCreateMasterSecretAsync(proverWallet, masterSecretName);

            var claimOffer = string.Format(claimOfferTemplate, issuerDid, 1);

            var claimRequest = await AnonCreds.ProverCreateCredentialReqAsync(proverWallet, proverDid, claimOffer, claimDef, masterSecretName);

            var claim = "{\"sex\":[\"male\",\"5944657099558967239210949258394887428692050081607692519917050011144233115103\"],\n" +
                        "                 \"name\":[\"Alex\",\"1139481716457488690172217916278103335\"],\n" +
                        "                 \"height\":[\"175\",\"175\"],\n" +
                        "                 \"age\":[\"28\",\"28\"]\n" +
                        "        }";

            // TODO var createClaimResult = await AnonCreds.IssuerCreateCredentialAsync(commonWallet, claimRequest, claim, -1);
            // var claimJson = createClaimResult.ClaimJson;

            // TODO await AnonCreds.ProverStoreClaimAsync(proverWallet, claimJson, createClaimResult.RevocRegUpdateJson);

            await proverWallet.CloseAsync();

            await WalletUtils.DeleteWallet(WALLET_NAME, WALLET_KEY);
        }
示例#2
0
        public async Task DeleteWallet()
        {
            if (_wallet != null)
            {
                await _wallet.CloseAsync();
            }

            await WalletUtils.DeleteWallet(WALLET_NAME, WALLET_KEY);
        }
        public async Task TestGetClaimOffersForPlugged()
        {
            var type       = "proverInmem";
            var poolName   = "default";
            var walletName = "proverCustomWallet";

            await WalletUtils.CreateWallet(WALLET_NAME, WALLET_KEY);


            string claimOffers = string.Empty;
            Wallet wallet      = null;

            var claimOffer  = string.Format(claimOfferTemplate, issuerDid, 1);
            var claimOffer2 = string.Format(claimOfferTemplate, issuerDid, 2);
            var claimOffer3 = string.Format(claimOfferTemplate, issuerDid2, 2);

            try
            {
                wallet = await WalletUtils.OpenWallet(WALLET_NAME, WALLET_KEY);

                // TODO await AnonCreds.ProverStoreCredentialOfferAsync(wallet, claimOffer);
                // TODO await AnonCreds.ProverStoreCredentialOfferAsync(wallet, claimOffer2);
                // TODO await AnonCreds.ProverStoreCredentialOfferAsync(wallet, claimOffer3);

                var filter = string.Format("{{\"issuer_did\":\"{0}\"}}", issuerDid);

                // TODO claimOffers = await AnonCreds.ProverGetClaimOffersAsync(wallet, filter);
            }
            finally
            {
                if (wallet != null)
                {
                    await wallet.CloseAsync();
                }

                await WalletUtils.DeleteWallet(WALLET_NAME, WALLET_KEY);
            }

            var claimOffersArray = JArray.Parse(claimOffers);

            Assert.AreEqual(2, claimOffersArray.Count);
            Assert.IsTrue(claimOffers.Contains(claimOffer));
            Assert.IsTrue(claimOffers.Contains(claimOffer2));
        }
        public async Task DeleteWallet()
        {
            if (_issuerWallet != null)
            {
                await _issuerWallet.CloseAsync();
            }

            await WalletUtils.DeleteWallet(ISSUER_WALLET, ISSUER_WALLET_KEY);

            if (_proverWallet != null)
            {
                await _proverWallet.CloseAsync();
            }

            await WalletUtils.DeleteWallet(PROVER_WALLET, PROVER_WALLET_KEY);

            if (_pool != null)
            {
                await _pool.CloseAsync();
            }
        }
示例#5
0
        public async Task TestLedgerDemo()
        {
            // 1. Create ledger config from genesis txn file
            Pool.SetProtocolVersionAsync(PoolUtils.PROTOCOL_VERSION);

            var poolName = PoolUtils.CreatePoolLedgerConfig();
            var pool     = await Pool.OpenPoolLedgerAsync(poolName, "{}");

            // 2. Create and Open My Wallet
            await WalletUtils.CreateWallet(WALLET_NAME, WALLET_KEY);

            var myWallet = await WalletUtils.OpenWallet(WALLET_NAME, WALLET_KEY);

            // 3. Create and Open Trustee Wallet
            await WalletUtils.CreateWallet(TRUSTEE_WALLET_NAME, TRUSTEE_WALLET_KEY);

            var trusteeWallet = await WalletUtils.OpenWallet(TRUSTEE_WALLET_NAME, TRUSTEE_WALLET_KEY);

            // 4. Create My Did
            var createMyDidResult = await Did.CreateAndStoreMyDidAsync(myWallet, "{}");

            Assert.IsNotNull(createMyDidResult);
            var myDid    = createMyDidResult.Did;
            var myVerkey = createMyDidResult.VerKey;

            // 5. Create Did from Trustee1 seed
            var createTheirDidResult = await Did.CreateAndStoreMyDidAsync(trusteeWallet, TRUSTEE_IDENTITY_JSON);

            Assert.IsNotNull(createTheirDidResult);
            var trusteeDid = createTheirDidResult.Did;

            // 6. Build Nym Request
            var nymRequest = await Ledger.BuildNymRequestAsync(trusteeDid, myDid, myVerkey, null, null);

            Assert.IsNotNull(nymRequest);

            // 7. Trustee Sign Nym Request
            var nymResponseJson = await Ledger.SignAndSubmitRequestAsync(pool, trusteeWallet, trusteeDid, nymRequest);

            Assert.IsNotNull(nymResponseJson, "SignAndSubmitRequestAsync response is null");

            /*
             * The format of SignAndSubmitRequestAsync response is like this.
             *
             *  {"result":{
             *      "reqSignature":{
             *          "type":"ED25519",
             *          "values":[{"value":"7kDrVBrmrKAvSs1QoQWYq6F774ZN3bRXx5e3aaUFiNvmh4F1yNqQw1951Az35nfrnGjZ99vtCmSFXZ5GqS1zLiG","from":"V4SGRU86Z58d6TV7PBUe6f"}]
             *      },
             *      "txnMetadata":{
             *          "txnTime":1536876204,
             *          "seqNo":36,
             *          "txnId":"5d38ac6a242239c97ee28884c2b5cadec62248b2256bce51afd814c7847a853e"
             *      },
             *      "ver":"1",
             *      "auditPath":["DATtzSu9AMrArv8C2oribQh4wJ6TaD2K9o76t7EL2N7G","AbGuM7s9MudnT8M2eZe1yaG2EGUGxggMXSSbXCm4DFDx","3fjMoUdsbNrRfG5ZneHaQuX994oA4Z2pYPZtRRPmkngw"],
             *      "rootHash":"A9LirjLuoBT59JJTJYvUgfQyEJA32Wb7njrbD9XqT2wc",
             *      "txn":{
             *          "data":{
             *              "dest":"KQRpY4EmSG4MwH7md8gMoN","verkey":"B2nW4JfqZ2omHksoCmwD8zXXmtBsvbQk6WVSboazd8QB"
             *          },
             *          "protocolVersion":2,
             *          "type":"1",
             *          "metadata":{
             *              "digest":"14594e0b31f751faf72d4bf4abdc6f54af34dab855fe1a0c67fe651b47bb93b5","reqId":1536876205519496000,"from":"V4SGRU86Z58d6TV7PBUe6f"
             *          }
             *      }
             *  },
             *  "op":"REPLY"}
             */

            var nymResponse = JObject.Parse(nymResponseJson);

            Assert.AreEqual(myDid, nymResponse["result"].Value <JObject>("txn").Value <JObject>("data").Value <string>("dest"));
            Assert.AreEqual(myVerkey, nymResponse["result"].Value <JObject>("txn").Value <JObject>("data").Value <string>("verkey"));

            // 8. Close and delete My Wallet
            await myWallet.CloseAsync();

            await WalletUtils.DeleteWallet(WALLET_NAME, WALLET_KEY);

            // 9. Close and delete Their Wallet
            await trusteeWallet.CloseAsync();

            await WalletUtils.DeleteWallet(TRUSTEE_WALLET_NAME, TRUSTEE_WALLET_KEY);

            // 10. Close Pool
            await pool.CloseAsync();
        }