private (OAuthCertificateInfo, List <ResourceCertificateInfo>) InitializeCertificatesInfo() { OAuthCertificateInfo oAuthServerCertificateInfo = null; List <ResourceCertificateInfo> resourceServersCertificateInfo = new List <ResourceCertificateInfo>(); foreach (Component component in _componentsForSetup) { if (component is CodeTreeComponent codeTreeComponent && !string.IsNullOrEmpty(codeTreeComponent.OAuthCertificateName) && !string.IsNullOrEmpty(codeTreeComponent.OAuthCertificatesTemplateDir) && !string.IsNullOrEmpty(codeTreeComponent.OAuthConfigCertificatePasswordXpath) && !string.IsNullOrEmpty(codeTreeComponent.OAuthConfigTemplateFile)) { ResourceCertificateInfo certificateInfo = new ResourceCertificateInfo( codeTreeComponent.OAuthCertificateName, Path.Combine(Properties.PathToTemplates, codeTreeComponent.OAuthCertificatesTemplateDir), string.IsNullOrEmpty(codeTreeComponent.OAuthCertificatePassword) ? _fileSystem.XmlHelper.XmlPeek(Path.Combine(Properties.PathToTemplates, codeTreeComponent.OAuthConfigTemplateFile), codeTreeComponent.OAuthConfigCertificatePasswordXpath) : codeTreeComponent.OAuthCertificatePassword, codeTreeComponent.IsOAuthPublicCertificateRequired); if (component is OAuthComponent) { oAuthServerCertificateInfo = certificateInfo; } else { resourceServersCertificateInfo.Add(certificateInfo); } } } return(oAuthServerCertificateInfo, resourceServersCertificateInfo); }
private void CreateAndPlaceCertificatesToTemplates( OAuthCertificateInfo oAuthServerCertificateInfo, IEnumerable <ResourceCertificateInfo> resourceServersCertificateInfo) { if (!Directory.Exists(oAuthServerCertificateInfo.CertificateTemplateDir)) { Directory.CreateDirectory(oAuthServerCertificateInfo.CertificateTemplateDir); } string oAuthCertificatePfx = Path.Combine(oAuthServerCertificateInfo.CertificateTemplateDir, $"{oAuthServerCertificateInfo.Name}.pfx"); string oAuthCertificateCer = Path.Combine(oAuthServerCertificateInfo.CertificateTemplateDir, $"{oAuthServerCertificateInfo.Name}.cer");; CertificateUtil.GenerateCertificate(_fileSystem, oAuthCertificatePfx, oAuthCertificateCer, _issuer, oAuthServerCertificateInfo.CertificatePassword, _validity); foreach (ResourceCertificateInfo resourceServerCertificateInfo in resourceServersCertificateInfo) { if (!Directory.Exists(resourceServerCertificateInfo.CertificateTemplateDir)) { Directory.CreateDirectory(resourceServerCertificateInfo.CertificateTemplateDir); } if (resourceServerCertificateInfo.IsOAuthPublicCertificateRequired) { _fileSystem.CopyFile(oAuthCertificateCer, _fileSystem, Path.Combine(resourceServerCertificateInfo.CertificateTemplateDir, Path.GetFileName(oAuthCertificateCer)), true); } string resourceCertificatePfx = Path.Combine(resourceServerCertificateInfo.CertificateTemplateDir, $"{resourceServerCertificateInfo.Name}.pfx"); string resourceCertificateCer = Path.Combine(resourceServerCertificateInfo.CertificateTemplateDir, $"{resourceServerCertificateInfo.Name}.cer"); CertificateUtil.GenerateCertificate(_fileSystem, resourceCertificatePfx, resourceCertificateCer, _issuer, resourceServerCertificateInfo.CertificatePassword, _validity); string targetresourceCertificateCerPath = Path.Combine(oAuthServerCertificateInfo.CertificateTemplateDir, Path.GetFileName(resourceCertificateCer)); if (_fileSystem.FileExists(targetresourceCertificateCerPath)) { _fileSystem.DeleteFile(targetresourceCertificateCerPath); } _fileSystem.MoveFile(resourceCertificateCer, _fileSystem, targetresourceCertificateCerPath); } }