/// <summary> /// Query all certificates /// </summary> /// <param name="store"></param> /// <param name="filter"></param> /// <param name="ct"></param> /// <returns></returns> public static async Task <IEnumerable <Certificate> > QueryAllCertificatesAsync( this ICertificateStore store, CertificateFilter filter, CancellationToken ct = default) { var results = await store.QueryCertificatesAsync(filter, null, ct); var certificates = new List <Certificate>(results.Certificates); while (results.ContinuationToken != null) { results = await store.ListCertificatesAsync( results.ContinuationToken, null, ct); certificates.AddRange(results.Certificates); } return(certificates); }
/// <summary> /// Get certificate chain of trust. /// </summary> /// <param name="store"></param> /// <param name="certificate">certificate</param> /// <param name="ct"></param> /// <returns></returns> public static async Task <IEnumerable <Certificate> > ListCompleteCertificateChainAsync( this ICertificateStore store, Certificate certificate, CancellationToken ct = default) { var certificates = new List <Certificate>(); var chain = await store.ListCertificateChainAsync(certificate, ct); if (chain != null) { certificates.AddRange(chain.Certificates); } while (chain?.ContinuationToken != null) { chain = await store.ListCertificatesAsync( chain.ContinuationToken, null, ct); certificates.AddRange(chain.Certificates); } return(certificates); }