示例#1
0
        /// <summary>
        /// Creates a verified person credentials with the relevant DefinitionID and attribute values.
        /// </summary>
        /// <param name="connectionId"></param>
        /// <param name="personCredential"></param>
        /// <returns></returns>
        public async Task <CredentialsContract> CreatePerson(string connectionId, PersonCredentialParameters personCredential)
        {
            var credentialOffer = new CredentialOfferParameters
            {
                ConnectionId      = connectionId,
                DefinitionId      = DefinitionIds[Schemas.Person],
                AutomaticIssuance = false,
                CredentialValues  = new Dictionary <string, string>
                {
                    { Attributes.FirstName, personCredential.FirstName.ValidateLength() },
                    { Attributes.LastName, personCredential.LastName.ValidateLength() },
                    { Attributes.Photo, personCredential.Photo },
                    { Attributes.MobileNumber, personCredential.MobileNumber.ValidateMobileNumber().ToString() },
                    { Attributes.IdentificationType, personCredential.IdentificationType.ToString() },
                    { Attributes.IdentificationValue, personCredential.IdentificationValue.ValidateIdentification(personCredential.IdentificationType) }
                }
            };

            var credentials = await _agencyBroker.SendCredentials(credentialOffer);

            return(credentials);
        }
示例#2
0
        public async Task CreatePersonAndCovidTestCredentials(CovidTestCredentialParameters covidTest, PersonCredentialParameters person, string walletId)
        {
            var connectionParameters = new ConnectionParameters
            {
                ConnectionId = "", // Leave blank for auto generation
                Multiparty   = false,
                Name         = AgentName
            };

            var agentInvitation = await _connectionService.CreateInvitation(connectionParameters);

            var custodianConnection = await _connectionService.AcceptInvitation(agentInvitation.Invitation, walletId);

            // Create the set of credentials
            var personalDetialsCredentials = await CreatePerson(agentInvitation.ConnectionId, person);

            var covidTestCredentials = await CreateCovidTest(agentInvitation.ConnectionId, covidTest, walletId);

            var userCredentials = await _custodianBroker.GetCredentials(walletId);

            if (userCredentials == null)
            {
                throw new ValidationException(Messages.Cred_NotFound);
            }

            var offeredCredentials = userCredentials?.Where(x => x.State == CredentialsState.Offered);

            if (offeredCredentials == null)
            {
                throw new ValidationException(Messages.Cred_OfferedNotFound);
            }

            if (offeredCredentials != null)
            {
                // Accept all the credentials
                foreach (var offer in offeredCredentials)
                {
                    await _custodianBroker.AcceptCredential(walletId, offer.CredentialId);
                }
            }
            return;
        }