コード例 #1
0
// Helper functions

/**
 * Helper function to create a Signing Identity and sign with it
 *
 * @param mspId
 * @return
 */
        public bool TestCreatingSigningIdentityAndSign(string mspId)
        {
            bool b = false;

            IdemixSigningIdentity signingIdentityTest = null;

            try
            {
                signingIdentityTest = CreateIdemixSigningIdentity(mspId);
            }
            catch (System.Exception e)
            {
                Assert.Fail("Unexpected exception: " + e.Message);
            }

            Assert.IsNotNull(signingIdentityTest);

            // Test signing using this identity
            try
            {
                b = TestSigning(signingIdentityTest, message, null, false);
            }
            catch (System.Exception e) when(e is CryptoException || e is ArgumentException)
            {
                Assert.Fail("Unexpected exception: " + e.Message);
            }

            return(b);
        }
コード例 #2
0
        /**
         * Helper function for testing signing
         *
         * @param signIdentity
         * @return
         * @throws InvalidArgumentException
         */
        public bool TestSigning(IdemixSigningIdentity signIdentity, byte[] msg, byte[] sigInput, bool useInputSig)
        {
            byte[] sig      = signIdentity.Sign(msg);
            byte[] otherMsg = { 1, 1, 1, 1 };

            if (useInputSig)
            {
                Assert.IsFalse(signIdentity.VerifySignature(otherMsg, sigInput));
                return(signIdentity.VerifySignature(msg, sigInput));
            }

            Assert.IsFalse(signIdentity.VerifySignature(otherMsg, sig));
            return(signIdentity.VerifySignature(msg, sig));
        }
コード例 #3
0
        public static void Setup(TestContext context)
        {
            // Parse crypto material from files
            IdemixMSPSignerConfig signerConfig = null;

            try
            {
                signerConfig = ReadIdemixMSPConfig(Path.Combine(TEST_PATH, MSP1OU1, USER_PATH).Locate(), SIGNER_CONFIG);
            }
            catch (System.Exception e)
            {
                Assert.Fail("Unexpected exception while reading signerconfig: " + e.Message);
            }

            Assert.IsNotNull(signerConfig);

            try
            {
                revocationPk = ReadIdemixRevocationPublicKey(Path.Combine(TEST_PATH, MSP1OU1, VERIFIER_PATH).Locate(), REVOCATION_PUBLIC_KEY);
            }
            catch (System.Exception e)
            {
                Assert.Fail("Unexpected exception while reading revocation public key: " + e.Message);
            }

            Assert.IsNotNull(revocationPk);

            IssuerPublicKey ipkProto = null;

            try
            {
                ipkProto = ReadIdemixIssuerPublicKey(Path.Combine(TEST_PATH, MSP1OU1, VERIFIER_PATH).Locate(), IPK_CONFIG);
            }
            catch (IOException e1)
            {
                Assert.Fail("Unexpected exception while reading revocation public key" + e1.Message);
            }

            ipk = new IdemixIssuerPublicKey(ipkProto);
            Assert.IsTrue(ipk.Check());

            sk = BIG.FromBytes(signerConfig.Sk.ToByteArray());

            Credential credProto = null;

            try
            {
                credProto = Credential.Parser.ParseFrom(signerConfig.Cred);
            }
            catch (InvalidProtocolBufferException)
            {
                Assert.Fail("Could not parse a credential");
            }

            Assert.IsNotNull(credProto);

            cred = new IdemixCredential(credProto);

            try
            {
                cri = CredentialRevocationInformation.Parser.ParseFrom(signerConfig.CredentialRevocationInformation);
            }
            catch (InvalidProtocolBufferException e)
            {
                Assert.Fail("failed to extract cri from signer config: " + e.Message);
            }

            Assert.IsNotNull(cri);

            try
            {
                signingIdentity = new IdemixSigningIdentity(ipk, revocationPk, MSP1OU1, sk, cred, cri, OU1, IdemixRoles.MEMBER);
            }
            catch (System.Exception e) when(e is CryptoException || e is ArgumentException)
            {
                Assert.Fail("Could not create Idemix Signing Identity" + e.Message);
            }

            Assert.IsNotNull(signingIdentity);

            nym = signingIdentity.Pseudonym;

            nymPublic = nym.Nym;

            proof = signingIdentity.Proof;
        }