Exemple #1
0
        public async Task <bool> CertifyCandidateUser(CandidateMicroCredentialCourse candidateMicroCredentialCourse)
        {
            var candidate       = _unitOfWork.CandidateRepository.GetById(candidateMicroCredentialCourse.CandidateId);
            var microCredential = _unitOfWork.MicroCredentialRepository.GetById(candidateMicroCredentialCourse.MicroCredentialId);
            var moocProvider    = _unitOfWork.MoocProviderRepository.GetAll().FirstOrDefault(m => m.MoocProviderId == microCredential.MoocProviderId);

            if (moocProvider == null)
            {
                throw new Exception($"MoocProvider Cannot be null, for MicroCredentialId = {microCredential.MoocProviderId}");
            }
            var stratisBlockDataToSign = _moocMicroCredentialProvider.GetUserDataToCertify(candidate.EmailAddress, moocProvider.EmailAddress, microCredential);
            var signature = _moocMicroCredentialProvider.CreateSignature(stratisBlockDataToSign);
            //_moocMicroCredentialProvider.StratisMineBlockThenReturnResponse(stratisBlockDataSigned);
            //var signBlockRequest = new SignBlockRequest { externalAddress = ConfigurationManager.AppSettings["ExternalAddress"], message = signature /*stratisBlockDataToSign*/, walletName = ConfigurationManager.AppSettings["StratisWalletName"], password = ConfigurationManager.AppSettings["StratisWalletAccountPassword"] };
            //var signature = _moocMicroCredentialProvider.StratisApiFullfilRequestComponent.SignBlockData(signBlockRequest).Result;

            var transactionDataRequest = new TransactionBuildData
            {
                accountName      = "account 0",
                allowUnconfirmed = true,
                shuffleOutputs   = true,
                changeAddress    = ConfigurationManager.AppSettings["StratisWalletAddress"],
                feeType          = "medium",
                walletName       = ConfigurationManager.AppSettings["StratisWalletName"],
                password         = ConfigurationManager.AppSettings["StratisWalletAccountPassword"],
                recipients       = new Recipient[] { new Recipient {
                                                         amount = microCredential.CertificateFee.ToString(), destinationAddress = ConfigurationManager.AppSettings["ExternalAddress"]
                                                     } }
            };
            var trasaction = await _moocMicroCredentialProvider.StratisApiFullfilRequestComponent.BuildTransaction(transactionDataRequest);

            var transactionResult = await _moocMicroCredentialProvider.StratisApiFullfilRequestComponent.SendTransaction(trasaction.hex);

            var candidateCourseCredential = _unitOfWork.CandidateMicroCredentialCourseRepository.GetAll().Where(c => c.MicroCredentialId == candidateMicroCredentialCourse.MicroCredentialId && c.CandidateId == candidateMicroCredentialCourse.CandidateId).FirstOrDefault();

            //Save to Hash to DB:
            if (candidateCourseCredential != null)
            {
                candidateCourseCredential.HasPassed              = true;
                candidateCourseCredential.HashOfMine             = signature;
                candidateCourseCredential.transactionHex         = trasaction.hex;
                candidateCourseCredential.transactionId          = trasaction.transactionId;
                candidateCourseCredential.MicroCredentialBadgeId = candidateMicroCredentialCourse.MicroCredentialBadgeId;
                _unitOfWork.CandidateMicroCredentialCourseRepository.Update(candidateCourseCredential);
                _unitOfWork.SaveChanges();
                return(true);
            }
            return(false);
        }
Exemple #2
0
        public bool VerifyUserCert(string emailAddress, MicroCredential microCredential)
        {
            Candidate candidate = RepositoryEndPointService.GetCandidateByEmail(emailAddress);
            CandidateMicroCredentialCourse candidateWithCourse = RepositoryEndPointService.GetCandidateAndCourseForVerification(candidate.CandidateId, microCredential.MicroCredentialId);

            if (candidateWithCourse == null)
            {
                return(false);
            }

            var hashOfMicroCredential = candidateWithCourse.HashOfMine;

            //return this.StratisApiFullfilRequestComponent.VerifyBlockData(new VerifyBlockRequest { externalAddress = ConfigurationManager.AppSettings["ExternalAddress"], message = this.MoocProvider.GetUserDataToCertify(candidate.EmailAddress, this.MoocProvider.Mooc.EmailAddress, microCredential), signature = hashOfMicroCredential }).Result;
            var moocEmailAddress = microCredential.MoocProvider.EmailAddress;
            var content          = MoocProvider.GetUserDataToCertify(emailAddress, moocEmailAddress, microCredential);
            var signedContent    = MoocProvider.CreateSignature(content);

            return(candidateWithCourse.HashOfMine.Equals(signedContent));
        }