Ejemplo n.º 1
0
        /**
         * Helper function: parse Idemix MSP Signer config (is part of the MSPConfig proto) from path
         *
         * @param configPath
         * @param id
         * @return IdemixMSPSignerConfig proto
         */
        public static IdemixMSPSignerConfig ReadIdemixMSPConfig(string configPath, string id)
        {
            string path = Path.Combine(configPath, id);

            byte[] data = File.ReadAllBytes(path);
            IdemixMSPSignerConfig signerConfig = IdemixMSPSignerConfig.Parser.ParseFrom(data);

            return(signerConfig);
        }
Ejemplo n.º 2
0
        public IUser GetUser(string id)
        {
            IdemixMSPSignerConfig signerConfig = ReadIdemixMSPConfig(Path.Combine(mspId, USER_PATH + id));
            KeyPair          revocationPk      = ReadIdemixRevocationPublicKey(mspId);
            BIG              sk   = BIG.FromBytes(signerConfig.Sk.ToByteArray());
            IdemixCredential cred = new IdemixCredential(Credential.Parser.ParseFrom(signerConfig.Cred));
            CredentialRevocationInformation cri = CredentialRevocationInformation.Parser.ParseFrom(signerConfig.CredentialRevocationInformation);

            IdemixEnrollment enrollment = new IdemixEnrollment(ipk, revocationPk, mspId, sk, cred, cri, signerConfig.OrganizationalUnitIdentifier, (IdemixRoles)signerConfig.Role);

            return(new IdemixUser(id, mspId, enrollment));
        }
Ejemplo n.º 3
0
        public void TestIdemixMSPSignerConfigSuccess()
        {
            IdemixMSPSignerConfig signerConfig = null;

            try
            {
                signerConfig = ReadIdemixMSPConfig(Path.Combine(TEST_PATH, MSP1OU1, USER_PATH).Locate(), SIGNER_CONFIG);
            }
            catch (InvalidProtocolBufferException e)
            {
                Assert.Fail("Unexpected IPBException" + e.Message);
            }
            catch (IOException e)
            {
                Assert.Fail("Unexpected IOException" + e.Message);
            }

            Assert.IsNotNull(signerConfig);
        }
Ejemplo n.º 4
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;
        }