public CaModule() { Get["/ca"] = x => { var caIsActive = CaConfiguration.IsActive(); var model = new PageCaModel { CaIsActive = caIsActive, CaOptions = CaConfiguration.Get() ?? new CaConfigurationModel() }; return(JsonConvert.SerializeObject(model)); }; Post["/ca/set"] = x => { CaConfiguration.Set(); return(HttpStatusCode.OK); }; Post["/ca/enable"] = x => { CaConfiguration.Enable(); return(HttpStatusCode.OK); }; Post["/ca/disable"] = x => { CaConfiguration.Disable(); return(HttpStatusCode.OK); }; Post["/ca/options"] = x => { string keyPassout = Request.Form.KeyPassout; string rootCountryName = Request.Form.RootCountryName; string rootStateOrProvinceName = Request.Form.RootStateOrProvinceName; string rootLocalityName = Request.Form.RootLocalityName; string rootOrganizationName = Request.Form.RootOrganizationName; string rootOrganizationalUnitName = Request.Form.RootOrganizationalUnitName; string rootCommonName = Request.Form.RootCommonName; string rootEmailAddress = Request.Form.RootEmailAddress; var model = new CaConfigurationModel { KeyPassout = keyPassout, RootCountryName = rootCountryName, RootStateOrProvinceName = rootStateOrProvinceName, RootLocalityName = rootLocalityName, RootOrganizationName = rootOrganizationName, RootOrganizationalUnitName = rootOrganizationalUnitName, RootCommonName = rootCommonName, RootEmailAddress = rootEmailAddress, }; CaConfiguration.Save(model); return(HttpStatusCode.OK); }; Get["/ca/crl"] = x => { var crl = $"{Parameter.AntdCfg}/ca/intermediate/crl/intermediate.crl.pem"; if (!File.Exists(crl)) { return(HttpStatusCode.ExpectationFailed); } var file = new FileStream(crl, FileMode.Open); const string fileName = "intermediate.crl.pem"; var response = new StreamResponse(() => file, MimeTypes.GetMimeType(fileName)); return(response.AsAttachment(fileName)); }; Post["/ca/certificate/user"] = x => { string name = Request.Form.Name; string passphrase = Request.Form.Passphrase; string email = Request.Form.Email; string c = Request.Form.CountryName; string st = Request.Form.StateOrProvinceName; string l = Request.Form.LocalityName; string o = Request.Form.OrganizationName; string ou = Request.Form.OrganizationalUnitName; CaConfiguration.CreateUserCertificate(name, passphrase, email, c, st, l, o, ou); return(HttpStatusCode.OK); }; Post["/ca/certificate/server"] = x => { string name = Request.Form.Name; string passphrase = Request.Form.Passphrase; string email = Request.Form.Email; string c = Request.Form.CountryName; string st = Request.Form.StateOrProvinceName; string l = Request.Form.LocalityName; string o = Request.Form.OrganizationName; string ou = Request.Form.OrganizationalUnitName; CaConfiguration.CreateServerCertificate(name, passphrase, email, c, st, l, o, ou); return(HttpStatusCode.OK); }; Post["/ca/certificate/dc"] = x => { string name = Request.Form.Name; string passphrase = Request.Form.Passphrase; string dcGuid = Request.Form.Guid; string dcDns = Request.Form.Dns; string email = Request.Form.Email; string c = Request.Form.CountryName; string st = Request.Form.StateOrProvinceName; string l = Request.Form.LocalityName; string o = Request.Form.OrganizationName; string ou = Request.Form.OrganizationalUnitName; CaConfiguration.CreateDomainControllerCertificate(name, passphrase, dcGuid, dcDns, email, c, st, l, o, ou); return(HttpStatusCode.OK); }; Post["/ca/certificate/sc"] = x => { string name = Request.Form.Name; string passphrase = Request.Form.Passphrase; string upn = Request.Form.Upn; string email = Request.Form.Email; string c = Request.Form.CountryName; string st = Request.Form.StateOrProvinceName; string l = Request.Form.LocalityName; string o = Request.Form.OrganizationName; string ou = Request.Form.OrganizationalUnitName; CaConfiguration.CreateSmartCardCertificate(name, passphrase, upn, email, c, st, l, o, ou); return(HttpStatusCode.OK); }; }