Esempio n. 1
0
        private async Task <TrackKey> CreateX509KeyAsync()
        {
            var certificate = await settings.MasterTenant.CreateSelfSignedCertificateAsync();

            var trackKey = new TrackKey()
            {
                Type = TrackKeyType.Contained,
                Key  = await certificate.ToJsonWebKeyAsync(true)
            };

            return(trackKey);
        }
Esempio n. 2
0
        private void ValidateTrackKey(TrackKey trackKey)
        {
            var nowLocal    = DateTime.Now;
            var certificate = trackKey.Key.ToX509Certificate();

            if (certificate.NotBefore > nowLocal)
            {
                throw new Exception($"Track certificate not valid yet. NotBefore {certificate.NotBefore.ToUniversalTime().ToString("u")}.");
            }
            if (certificate.NotAfter < nowLocal)
            {
                throw new Exception($"Track certificate is expired. NotAfter {certificate.NotAfter.ToUniversalTime().ToString("u")}.");
            }
        }
        private async Task <TrackKey> CreateX509KeyAsync(string tenantName, string trackName)
        {
            var certificate = await(tenantName, trackName).CreateSelfSignedCertificateBySubjectAsync();
            var trackKey    = new TrackKey()
            {
                Type = TrackKeyType.Contained,
                Keys = new List <TrackKeyItem> {
                    new TrackKeyItem {
                        Key = await certificate.ToFTJsonWebKeyAsync(true)
                    }
                }
            };

            return(trackKey);
        }
Esempio n. 4
0
        public Saml2X509Certificate GetSaml2X509Certificate(TrackKey trackKey)
        {
            ValidateTrackKey(trackKey);

            switch (trackKey.Type)
            {
            case TrackKeyType.Contained:
                return(trackKey.Key.ToSaml2X509Certificate(true));

            case TrackKeyType.KeyVault:
                return(new Saml2X509Certificate(trackKey.Key.ToX509Certificate(), GetRSAKeyVault(trackKey)));

            default:
                throw new NotSupportedException($"Track key type '{trackKey.Type}' not supported.");
            }
        }
Esempio n. 5
0
        public SecurityKey GetSecurityKey(TrackKey trackKey)
        {
            ValidateTrackKey(trackKey);

            switch (trackKey.Type)
            {
            case TrackKeyType.Contained:
                return(trackKey.Key);

            case TrackKeyType.KeyVault:
                return(new RsaSecurityKey(GetRSAKeyVault(trackKey)));

            default:
                throw new NotSupportedException($"Track key type '{trackKey.Type}' not supported.");
            }
        }
Esempio n. 6
0
        private async Task DefaultLoadAsync()
        {
            certificateLoadError = null;
            try
            {
                trackKey = await TrackService.GetTrackKeyTypeAsync();

                if (trackKey.Type == TrackKeyType.Contained)
                {
                    SetGeneralCertificates(await TrackService.GetTrackKeyContainedAsync());
                }
            }
            catch (TokenUnavailableException)
            {
                await(OpenidConnectPkce as TenantOpenidConnectPkce).TenantLoginAsync();
            }
            catch (Exception ex)
            {
                certificateLoadError = ex.Message;
            }
        }
Esempio n. 7
0
 public async Task UpdateTrackKeyTypeAsync(TrackKey trackKeyRequest) => await PutAsync(keyTypeApiUri, trackKeyRequest);
Esempio n. 8
0
 public static JsonWebKey GetPublicKey(this TrackKey trackKey)
 {
     return(trackKey.Key.GetPublicKey());
 }
Esempio n. 9
0
 private RSA GetRSAKeyVault(TrackKey trackKey)
 {
     return(keyVaultClient.ToRSA(new KeyIdentifier(settings.KeyVault.EndpointUri, trackKey.ExternalName), new Microsoft.Azure.KeyVault.WebKey.JsonWebKey(trackKey.Key.ToRsaParameters())));
 }
Esempio n. 10
0
        public void LoadData()
        {
            //default values
            m_aTrackKeys = new List<TrackKey>();

            BitConverter.IsLittleEndian = true;
            List<PropertyReader.Property> props = PropertyReader.getPropList(pcc, pcc.Exports[index].Data);
            foreach (PropertyReader.Property p in props)
            {
                if (pcc.getNameEntry(p.Name) == "m_aTrackKeys")
                {
                    int pos = 28;
                    int count = BitConverter.ToInt32(p.raw, 24);
                    for (int j = 0; j < count; j++)
                    {
                        List<PropertyReader.Property> p2 = PropertyReader.ReadProp(pcc, p.raw, pos);
                        TrackKey key = new TrackKey();
                        for (int i = 0; i < p2.Count(); i++)
                        {
                            if (pcc.getNameEntry(p2[i].Name) == "KeyName")
                                key.KeyName = p2[i].Value.NameValue;
                            else if (pcc.getNameEntry(p2[i].Name) == "fTime")
                                key.fTime = BitConverter.ToSingle(p2[i].raw, 24);
                            pos += p2[i].raw.Length;
                        }
                        m_aTrackKeys.Add(key);
                    }
                }
            }
        }