예제 #1
0
        public async void Endorse()
        {
            // Do some endorsement
            var endorsement = LocalIdentityStore.Instance.EndorseFriendAsIdentityOwner(_verifiedIdentity.IdentityGUID, _verifiedIdentity.KeyPairsAssertingOwnership.First().Fingerprint);

            var identityFriendlyName = new InputPageViewModel(
                new List <InputViewModel>()
            {
                new InputViewModel()
                {
                    Label = "Friendly Name", Content = string.Empty
                },
            },
                async(inputs) =>
            {
                _verifiedIdentity.FriendlyName = inputs.First().Content;
                _verifiedIdentity.Endorsements.Add(endorsement);
                await LocalIdentityStore.Instance.StoreIdentity(_verifiedIdentity);
            },
                new MainPageViewModel());

            // Share endorsement
            var currentIdentity = await LocalIdentityStore.Instance.GetCurrentIdentity();

            var idDisplay          = new QRDisplayViewModel(currentIdentity.IdentityGUID.ToString(), "ID");
            var publicKeyDisplay   = new QRDisplayViewModel(currentIdentity.KeyPairsAssertingOwnership.First().PublicKeyBytes, "Public Key");
            var endorsementDisplay = new QRDisplayViewModel(endorsement.ToString(), "Endorsement");

            idDisplay.PostDisplayComplete          = publicKeyDisplay;
            publicKeyDisplay.PostDisplayComplete   = endorsementDisplay;
            endorsementDisplay.PostDisplayComplete = identityFriendlyName;

            await NavigationMaster.Instance.NavigateTo(idDisplay);
        }
예제 #2
0
        public async Task AcceptEndorsement()
        {
            Endorsement endorsement = null;
            KeyPair     publicKey   = null; // assigning here to make compiler happy
            Guid        guid;
            Identity    endorserIdentity = null;

            var getFriendlyName = new InputPageViewModel(
                new List <InputViewModel>()
            {
                new InputViewModel()
            },
                async(content) =>
            {
                endorserIdentity.FriendlyName = content.First().Content;
                if (endorserIdentity.IsValidEndorsement(endorsement))
                {
                    await LocalIdentityStore.Instance.StoreIdentity(endorserIdentity);
                    LocalIdentityStore.Instance.AcceptEndorsement(endorsement);
                }
            },
                new MainPageViewModel());

            var readEndorsement = new ScanQRCodeViewModel(
                async(string result) =>
            {
                endorsement = Endorsement.GetFromJSONString(result);

                endorserIdentity = await LocalIdentityStore.Instance.GetIdentity(guid);

                if (endorserIdentity == null)
                {
                    endorserIdentity = new Identity(guid);
                }

                endorserIdentity.KeyPairsAssertingOwnership.Add(publicKey);
            },
                getFriendlyName,
                "Scan endorsement");

            var readPublicKey = new ScanQRCodeViewModel((byte[] result) => { publicKey = new KeyPair(result); }, readEndorsement, "Scan Public Key");
            var readGuid      = new ScanQRCodeViewModel((string result) => { guid = Guid.Parse(result); }, readPublicKey, "Scan ID");

            await NavigationMaster.Instance.NavigateTo(readGuid);
        }