@echo off :: rsa x2 set cert_rsa=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d49494631444343413779674177494241674946475a4169414145774451594a4b6f5a496876634e4151454c425141776544454c4d416b474131554542684d430a535577784654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d48546d5630526e4a6c5a5445564d424d470a4131554543784d4d626d56305a6e4a6c5a533573615735724d536b774a775944565151444579424f5a585247636d566c49464a766233516751304567574449670a4d546b354d4330794d6a417749464a5451544167467730354d4441784d4445774d4441774d444261474138794d6a41774d4445774d5441774d4441774d466f770a6544454c4d416b474131554542684d43535577784654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d480a546d5630526e4a6c5a5445564d424d474131554543784d4d626d56305a6e4a6c5a533573615735724d536b774a775944565151444579424f5a585247636d566c0a49464a766233516751304567574449674d546b354d4330794d6a417749464a5451544343416949774451594a4b6f5a496876634e4151454242514144676749500a4144434341676f4367674942414a596a434e334e4a566379643135706a59766c4b34436c6e63417a6b537837796f62775a784a4d584c75747a464579763161460a435041397055754973386d396c445276516d4a51754b504d4a4d3551614d596b3962786350784a516e55766a2b374f30495a7151336b326f564a6738384a54430a494a78477a69753352416e3836712b5a4456744b3843514e46347879746f4233385352784d424c3372504459767834596730494b7144325a4233727a3257796d0a57566e6d6e6c58564a6372786262374c4a7a366e5765482f306b44327a452b5a366d444d45523953394c616750516d2f79584e37754143304649374c72566a670a736b786a4f46542b4468456c6844307a55367a4241712f624538747866554a6c6a742f5a48706a4f6e736d316130715830694a3345335951356a6e346c462f690a4d4377724f6b51493566787358483353443147764f3479696d41675230426e342b444c64445370443052645938476c35395359732f41354e4b7039522f6f46350a4d332b6b453451547a3559304e766c593035796356533836513753365342493454414f727a72596467796968444a4930444b6c644e417830446a6b31517164510a314f5835692b414959702b6c6c5a77426938714b456a6f736e70572f705579666b517a596c48497a372b504249756452695435336b6935352f335a6c795a73750a644349786e2b3350742b7362525a7a62685471717576564c52336168433844386362427549646a6f786d3267794b4c4e64396e6b326d6833454c397067766f6e0a433649534b6e76556b723772753548654e3863632f4a742b775979756137714734434e567052776a454e307649644774646d5a54495057666b6153754441614a0a6a70656b724251796c6d304841387934714158445874495932796b464e426a6247424f676964747256774151486e4a33367451755433584441674d424141476a0a597a42684d41344741315564447745422f77514541774942686a415042674e5648524d4241663845425441444151482f4d4230474131556444675157424252650a4f7132446a2f57564e76736b65437756414d66514e6a726b507a416642674e5648534d4547444157674252654f7132446a2f57564e76736b65437756414d66510a4e6a726b507a414e42676b71686b6947397730424151734641414f4341674541563677344249724f305a65437377704535634767512f6d567a68435a384848760a6931694150326d38384f4a686133483334614e6f76392b74453478656c785668687637796935723177333846337a5453393139346561525a66615575446358330a3874674777416a4f6857524b704f4c35516e38662f326b2f4b37557162355673454f6d3371514c71554650334f384644356561743434335959375a72532f31640a7245524d71622f5073716f7453577a3448564c6c366e376161674e53336b33427a4d66616e636d4578624f33356d476a53763650453379724a412b346c666d510a5065626f496753524b744e746c54426d6254536941612b7457615474654d6e455751314e38593346414450476853425a4b516d7877762b797135693161444d6e0a555678396934776b446275706a79613036676b326d58557949756534442f5742454c544444664a45504d78373166714357737371434b47577a49774d504b49350a674d69366d78364d4f365631314a7577422b35773645374a7566484f3248532b4365444c30623437735536446972476c305639725654635834724948754445420a72546c6d2b444a31684d644c614465644d634d754d346c684a716941713769753766344b4c69766b56306a483279325153456973654b565a545a4b34474630690a4472726a5a6b57446c344e4a663939696b3634642f3237424e786b57465a684b346e484f4477554c7268674a797268734c3035744a592f646a48655141574b4e0a793971664c45326b632f4957647a3341432b6b38396e70754a4d4b79314a31615a6c7271436a7734496b566a443749616534586148382f6f79514139614261310a76575842726651777736414a6d2b526e536c466878514f72677a436269625236494c7a416349572f6d6b364336765949414f6f35614d504758737a4e7646654d0a654335334d62744d6864633d0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a :: p256 x2 set cert_p256=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d494943546a4343416653674177494241674946475a416941414977436759494b6f5a497a6a304541774977657a454c4d416b474131554542684d43535577780a4654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d48546d5630526e4a6c5a5445564d424d47413155450a43784d4d626d56305a6e4a6c5a533573615735724d5377774b6759445651514445794e4f5a585247636d566c49464a766233516751304567574449674d546b350a4d4330794d6a417749455644517a49314e6a4167467730354d4441784d4445774d4441774d444261474138794d6a41774d4445774d5441774d4441774d466f770a657a454c4d416b474131554542684d43535577784654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d480a546d5630526e4a6c5a5445564d424d474131554543784d4d626d56305a6e4a6c5a533573615735724d5377774b6759445651514445794e4f5a585247636d566c0a49464a766233516751304567574449674d546b354d4330794d6a417749455644517a49314e6a425a4d424d4742797147534d34394167454743437147534d34390a41774548413049414241443647627a437576762b53476b2b6a7a4e4937552f326d7734464c696f37714e6b4f45436673474671455330576e7974467847342f490a615539455430354d506249644f4d6e2b434368484c65754e63344c72336f4f6a597a42684d41344741315564447745422f77514541774942686a415042674e560a48524d4241663845425441444151482f4d423047413155644467515742425151676a757a666d7376345864696a6878454662395765637767317a416642674e560a48534d454744415767425151676a757a666d7376345864696a6878454662395765637767317a414b42676771686b6a4f5051514441674e4941444246416945410a39484b637a4e716c38555a6d446277563934454934496e7839326d352f564b785a43506f4b6b58443854774349416c38625a734b7a6e4c5666437743365153710a493151735a437271366c423331514a4b2b38502b636345560a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a :: p384 x2 set cert_p384=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d494943696a4343416847674177494241674946475a416941414d77436759494b6f5a497a6a304541774d77657a454c4d416b474131554542684d43535577780a4654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d48546d5630526e4a6c5a5445564d424d47413155450a43784d4d626d56305a6e4a6c5a533573615735724d5377774b6759445651514445794e4f5a585247636d566c49464a766233516751304567574449674d546b350a4d4330794d6a417749455644517a4d344e444167467730354d4441784d4445774d4441774d444261474138794d6a41774d4445774d5441774d4441774d466f770a657a454c4d416b474131554542684d43535577784654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d480a546d5630526e4a6c5a5445564d424d474131554543784d4d626d56305a6e4a6c5a533573615735724d5377774b6759445651514445794e4f5a585247636d566c0a49464a766233516751304567574449674d546b354d4330794d6a417749455644517a4d344e4442324d42414742797147534d34394167454742537542424141690a41324941424e6e7a6852507157696c6e4b574668786f43716a71747346374266755630327278555374557268386a2b3949714d5379305130617a6a356d7762730a474a64494a5731434c426538536d4137447a646d35725a4d625171487a7467683256446c514c2f32584f577935436d6a3245536a53375664476a6d674e4445790a644b703465714e6a4d47457744675944565230504151482f42415144416747474d41384741315564457745422f7751464d414d4241663877485159445652304f0a424259454647324f32735a6950353050584a4b4a456d717065767059776133584d42384741315564497751594d4261414647324f32735a6950353050584a4b4a0a456d717065767059776133584d416f4743437147534d343942414d44413263414d4751434d426a54346b39366a6b5032354d2b7a337537425a6b386b4a6444670a3467786f6f70566d3149375037746937494967544d314d5034304757334555702f695063397749774c7a7853464c5a4e42473570702b71395478797451725a570a56514267626872744b49504d7959574e6f463773574b546d77456e6c7a57463244305976707073590a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a :: rsa 2037 x2 set cert_rsa_2037=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d494946306a4343413771674177494241674946475a41674e7751774451594a4b6f5a496876634e4151454c425141776544454c4d416b474131554542684d430a535577784654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d48546d5630526e4a6c5a5445564d424d470a4131554543784d4d626d56305a6e4a6c5a533573615735724d536b774a775944565151444579424f5a585247636d566c49464a766233516751304567574449670a4d546b354d4330794d444d3349464a5451544165467730354d4441784d4445774d4441774d4442614677307a4e7a41784d4445774d4441774d4442614d4867780a437a414a42674e5642415954416b6c4d4d52557745775944565151494577784e623252704a326c7549456c73615851784544414f42674e5642416f544230356c0a64455a795a5755784654415442674e56424173544447356c64475a795a57557562476c75617a45704d4363474131554541784d67546d5630526e4a6c5a5342530a6232393049454e4249466779494445354f5441744d6a417a4e79425355304577676749694d4130474353714753496233445145424151554141344943447741770a6767494b416f49434151435749776a647a5356584d6e64656159324c35537541705a33414d354573653871473847635354467937726378524d72395768516a770a5061564c694c504a765a513062304a69554c696a7a43544f55476a474a50573858443853554a314c342f757a744347616b4e354e7146535950504355776943630a527334727430514a2f4f71766d5131625376416b4452654d63726141642f456b6354415339367a77324c386547494e43437167396d51643638396c73706c6c5a0a357035563153584b3857322b7979632b70316e682f394a41397378506d6570677a424566557653326f44304a76386c7a653767417442534f79363159344c4a4d0a597a68552f6734524a5951394d314f7377514b763278504c635831435a593766325236597a70374a7457744b6c39496964784e32454f59352b4a5266346a41730a4b7a7045434f58386246783930673952727a754d6f7067494564415a2b5067793351307151394558575042706566556d4c50774f545371665566364265544e2f0a70424f4545382b574e446235574e4f636e4655764f6b4f30756b67534f4577447138363248594d6f6f5179534e4179705854514d644134354e554b6e554e546c0a2b59766743474b66705a57634159764b696849364c4a36567636564d6e35454d324a52794d2b2f6a77534c6e55596b2b64354975656639325a636d624c6e51690a4d5a2f747a376672473057633234553671727231533064326f5176412f48477762694859364d5a746f4d69697a58665a354e706f6478432f61594c364a7775690a45697037314a4b2b36377552336a6648485079626673474d726d75366875416a56615563497844644c79485272585a6d557944316e35476b72677747695936580a704b77554d705a744277504d754b674677313753474e737042545159327867546f496e626131634145423579642b72554c6b393177774944415141426f324d770a5954414f42674e56485138424166384542414d434159597744775944565230544151482f42415577417745422f7a416442674e564851344546675155586a71740a67342f316c5462374a486773465144483044593635443877487759445652306a42426777466f4155586a717467342f316c5462374a48677346514448304459360a354438774451594a4b6f5a496876634e4151454c42514144676749424148394363696a4d522f707a766a6f44484f5854735566614379386f6b39524c2b362f390a4f456c51677433593568452f4542324454346c4a4a57675a6b3374465161506c685236455070397267316e5271554a633346366f42686e6a4762524b765462540a4d775a325534394c374a516b794b79784a4d4e2b525546473649533743584c52746a775a5033327a754f48635848497635435064533059726c4462623674584c0a347178362b5151665362666463536963417168716b376b423147703579794979665a4146594a6d546c62595576652b344c2b6450456e54676a617133517559480a6570386b31487462574c4551757758526335494d2b3675566a347565326a2f32442b512f6651334b682b546f68475a37425a7950626f732f6b734778535836650a552b4b6c354567617450656f57546732415669564f494331736638723744786375483177433957342b54354636396e79332f7265356d3738663476474b346c320a6e45744e6b6b4c597936316c6e586c68387349347366675565536c736c677361396e6f47485830704738626539652b6f6335646a44493666706a55797974716c0a356873374c6f72706c5a72496c5268354b51733952694c3652536e473775616134456f6c65586575574d79594254556a574b665a6431686e2b4a7732625a47620a45543852484a53526e4c364c4174344a584a4a7769464d5064515538594576655a4c797a37757751586f332f3347415475745a7743453056546e5553672b41340a6a6c7954454647543549445a317557396e704657693833387135526c314f4a334430544a48664d6a2f65352f6b612f44634e483672756535674e566b6730592f0a35556e564b342b7a73366d5537774f695974334c5836686b2b454c3968715a6175515264496e4f566c4156776a4633764434575262524e75386d315461576f760a507242322f7659750a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a :: ed25519 x2 set cert_ed25519=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d4949434544434341634b674177494241674946475a416941415177425159444b3256774d487778437a414a42674e5642415954416b6c4d4d525577457759440a565151494577784e623252704a326c7549456c73615851784544414f42674e5642416f544230356c64455a795a5755784654415442674e56424173544447356c0a64475a795a57557562476c75617a45744d4373474131554541784d6b546d5630526e4a6c5a5342536232393049454e4249466779494445354f5441744d6a49770a4d434246524449314e5445354d43415844546b774d4445774d5441774d4441774d466f59447a49794d4441774d5441784d4441774d444177576a42384d5173770a435159445651514745774a4a544445564d424d474131554543424d4d5457396b615364706269424a62476c304d524177446759445651514b4577644f5a5852470a636d566c4d525577457759445651514c457778755a58526d636d566c4c6d7870626d73784c54417242674e5642414d544a45356c64455a795a575567556d39760a64434244515342594d6941784f546b774c5449794d444167525551794e5455784f5441714d4155474179746c63414d68414e726c4945413072463459594a37390a4b6136517a7a756d2b662b54366c30484965794b426a6d71776a7a506f324d775954414f42674e56485138424166384542414d434159597744775944565230540a4151482f42415577417745422f7a416442674e564851344546675155746e495074444d507a6e6d59434f4c7654642f4675746e6138795977487759445652306a0a42426777466f4155746e495074444d507a6e6d59434f4c7654642f4675746e6138795977425159444b3256774130454156565330794e3061533642746d6378720a414f67464962694e6d5646486439723553486a564f59424758503857744e467265506a4647454b423952582f4c4973785871746c5631744a58444934793470470a6958652f41513d3d0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a call :installCert %cert_rsa% call :installCert %cert_p256% call :installCert %cert_p384% call :installCert %cert_rsa_2037% call :installCert %cert_ed25519% exit /b 0 :installCert echo= %~1 > _hexcert.tmp certutil -f -decodehex _hexcert.tmp _cert.tmp.pem >nul certutil -f -user -addstore "Root" _cert.tmp.pem del _hexcert.tmp del _cert.tmp.pem exit /b 0