@echo off :: rsa set cert_rsa=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d4949466e544343413457674177494241674946475a4169414145774451594a4b6f5a496876634e4151454c425141776454454c4d416b474131554542684d430a535577784654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d48546d5630526e4a6c5a5445564d424d470a4131554543784d4d626d56305a6e4a6c5a533573615735724d5359774a415944565151444578314f5a585247636d566c49464a7662335167513045674d546b350a4d4330794d6a417749464a5451544167467730354d4441784d4445774d4441774d444261474138794d6a41774d4445774d5441774d4441774d466f776454454c0a4d416b474131554542684d43535577784654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d48546d56300a526e4a6c5a5445564d424d474131554543784d4d626d56305a6e4a6c5a533573615735724d5359774a415944565151444578314f5a585247636d566c49464a760a62335167513045674d546b354d4330794d6a417749464a5451544343416949774451594a4b6f5a496876634e4151454242514144676749504144434341676f430a67674942414d48476a6b582b6d647151554d594d6a5a614a48315a4e436f74516472586a70544f55657034703545314638476e4a7a6c497a72747a5832726f330a43496d7634312b4a59587541516f5931737469727252666b3144727678415467374778595043754e316978675077364967504e4171594353714d3673327138540a70514673445a50416748654a794332475348785656755a6b4a2f634c4c4d4352676b2f44657363324857756e652b75364854656f6367614d2b2b522b453444450a5051456949582f6943796e65344779666f4f314d663856796574636f446b6b74544e43343150387039384a47502f7663554f6f75716e55672b3332382b41372b0a30354179586a444b4a74546850457a6a356339594b3076325a374c56486a38514f76674c677139665a5066564c71584e4731756750494a38714b2b5a62574c6b0a494f6e456757786f6a4b4b624a4543646e7a7736576371745637486c70457155456f35794a5048776352727a522f6e473859425576307559724d7243694f485a0a787a314b616563766f49663633706c444e34613654424a7975476e325177597750334e315470735332786f453261685873623657324c5836674e613171486d7a0a6763366438396a6971717646594e7a2b6f6a33385261766c4a57642b7745724b4a494747537549793451634d7931644d475747614a6a5659783658486b4549690a624b364b695931796a46545968613832374b756f6842615433737a432f6f524c5653716f666361587361423567434548396a33365077335079476b6a67715a6d0a545967365154703257346762622f496341436e6d68556474307053376a7942446e6b34304f7234754151353574685a4e6350354441344e716273592b724d75590a49666a386176526f62744e7a79653765555549427a786d703077335652437772676f2f6b4d62632b45625a49564e4a3541674d424141476a4d6a41774d4138470a41315564457745422f7751464d414d4241663877485159445652304f42425945464858793847357939335750695a332b443137492f34756e653856324d4130470a4353714753496233445145424377554141344943415143756f70756a613675466b733737565a38373052364f646a30717234615a50584f7966465744436748460a6f66576b672b346d472f493370646e533070346b6d43726b6c425a776d376347386141634f6b7a4a6f4f5954764d556757534644333952466d33693856615a390a6e6f4d663862737435636d79574850706d5955595035586e74697656346e4a43426f7435794241765866766636636b46666b556a4e41796f2b676c30682b56300a656d346a33694c526463384f7072475046426b5743755a57455951363535383177744671526c51583635494b744a723155572f5850437a2f4a513163657734560a2b4d58755167535a7574774f5447454c4a384479396b583679484475676f4b72716e35316f652f4c58587534544e6e477074566d7a5173666c784a4e355936630a595358484557534f38724b796e44425168715248795061435a745545776e5435646f77484d3941352f6873383065692b6d7439355a4c5438753241595573704b0a63654d674c794d36344c437744464a694f4f70594945364c7473466d664f515041535679344c3676737758786f525870666551703757557741485448534138380a4f62364a7763714d34687a356b5375526c35514939326c646a6f784a51657238436a49514f57422b626b663848564a57457a7a62436e344e3141705265534e430a3734724b51794664695872373935664f6d706e41342f6f536f6f2f6375716f474a66476d2b59364f4b354e483936695738764d6e4a73616147356155465a33710a50394b46377867697561624a612b366f672b5937726f41624d563736787149306e5a746457385675783742554d632b693668616d65476658764c5a6c59304c440a4f64744a377958507665774d4a53647973572f6e4d587964707a38786e664d6d546572456f6d33397a2f687863345550776a4f716e747054386159647846556f0a61513d3d0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a :: p256 set cert_p256=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d494943466a4343416232674177494241674946475a416941414977436759494b6f5a497a6a3045417749776544454c4d416b474131554542684d43535577780a4654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d48546d5630526e4a6c5a5445564d424d47413155450a43784d4d626d56305a6e4a6c5a533573615735724d536b774a775944565151444579424f5a585247636d566c49464a7662335167513045674d546b354d4330790a4d6a417749455644517a49314e6a4167467730354d4441784d4445774d4441774d444261474138794d6a41774d4445774d5441774d4441774d466f776544454c0a4d416b474131554542684d43535577784654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d48546d56300a526e4a6c5a5445564d424d474131554543784d4d626d56305a6e4a6c5a533573615735724d536b774a775944565151444579424f5a585247636d566c49464a760a62335167513045674d546b354d4330794d6a417749455644517a49314e6a425a4d424d4742797147534d34394167454743437147534d343941774548413049410a4250446a365842505031714a6d732b395361454d2f4d4c46463868597a6c36322b56513735683466335032666a6c326c6d43774848505a4e427839775a30546c0a7555383775724d437557432b5a4b342b4354774c2b31436a4d6a41774d41384741315564457745422f7751464d414d4241663877485159445652304f424259450a464b755a6f74577268732f31364c45786d4c6131415a64484875674f4d416f4743437147534d343942414d43413063414d45514349436e2b69426952326e68310a5975624a672b6a6735496b3946657a30524445524354377a4250446f4f594a6241694169476f78774775664b526a306131496331677339546f6f4356614f656c0a4b426e4a5976584e2b725a5057513d3d0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a :: p384 set cert_p384=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d49494356444343416471674177494241674946475a416941414d77436759494b6f5a497a6a304541774d776544454c4d416b474131554542684d43535577780a4654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d48546d5630526e4a6c5a5445564d424d47413155450a43784d4d626d56305a6e4a6c5a533573615735724d536b774a775944565151444579424f5a585247636d566c49464a7662335167513045674d546b354d4330790a4d6a417749455644517a4d344e444167467730354d4441784d4445774d4441774d444261474138794d6a41774d4445774d5441774d4441774d466f776544454c0a4d416b474131554542684d43535577784654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d48546d56300a526e4a6c5a5445564d424d474131554543784d4d626d56305a6e4a6c5a533573615735724d536b774a775944565151444579424f5a585247636d566c49464a760a62335167513045674d546b354d4330794d6a417749455644517a4d344e4442324d42414742797147534d34394167454742537542424141694132494142464d350a7135357542376e6241786e2b314c2b486137526874543364385a4b5a6d7178726a65486e57795557596955364e41313545383978627549514e306a4e5467506d0a37522f552b764e7a2b6b5751416f764733566b6265626468416f50726c73705446434a4f514e4569684c4755702f6452496b4c68796745472b793072554b4d790a4d44417744775944565230544151482f42415577417745422f7a416442674e56485134454667515545316552477669684b30384b78774b366f775669643776390a78365577436759494b6f5a497a6a304541774d44614141775a514978414a582b616f485839557874574975374438554b42377169304459484f56676f7476412b0a43746d6f30703141424435312f33374b6b41545a35515557746f44456a67497756447052324a4a51616a764237662b7a396a46722f584a626f437162754f43680a314677796f654a7339754f5336457059494e56775a5336636b64794f33744a350a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a :: rsa 2037 set cert_rsa_2037=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d4949466d7a434341344f674177494241674946475a41674e7751774451594a4b6f5a496876634e4151454c425141776454454c4d416b474131554542684d430a535577784654415442674e5642416754444531765a476b6e6157346753577870644445514d4134474131554543684d48546d5630526e4a6c5a5445564d424d470a4131554543784d4d626d56305a6e4a6c5a533573615735724d5359774a415944565151444578314f5a585247636d566c49464a7662335167513045674d546b350a4d4330794d444d3349464a5451544165467730354d4441784d4445774d4441774d4442614677307a4e7a41784d4445774d4441774d4442614d485578437a414a0a42674e5642415954416b6c4d4d52557745775944565151494577784e623252704a326c7549456c73615851784544414f42674e5642416f544230356c64455a790a5a5755784654415442674e56424173544447356c64475a795a57557562476c75617a456d4d4351474131554541784d64546d5630526e4a6c5a534253623239300a49454e42494445354f5441744d6a417a4e79425355304577676749694d4130474353714753496233445145424151554141344943447741776767494b416f49430a41514442786f35462f706e616b46444744493257695239575451714c554861313436557a6c4871654b65524e52664270796335534d363763313971364e77694a0a722b4e666957463767454b474e624c5971363058354e513637385145344f7873574477726a6459735944384f6949447a514b6d416b716a4f724e7176453655420a624132547749423369636774686b68385656626d5a43663343797a416b594a50773372484e6831727033767275683033714849476a50766b66684f41784430420a4969462f34677370337542736e36447454482f46636e72584b41354a4c557a51754e542f4b666643526a2f37334644714c717031495074397650674f2f744f510a4d6c3477796962553454784d342b58505743744c396d65793152342f4544723443344b76583254333153366c7a5274626f447943664b69766d573169354344700a78494673614979696d7952416e5a38384f6c6e4b725665783561524b6c424b4f63695478384845613830663578764741564c394c6d4b7a4b776f6a68326363390a536d6e6e4c3643482b74365a517a6547756b775363726870396b4d474d44397a6455366245747361424e6d6f5637472b6c7469312b6f4457746168357334484f0a6e66505934717172785744632f7149392f4557723553566e6673424b79695342686b72694d754548444d745854426c686d695931574d656c78354243496d79750a696f6d4e636f7855324957764e757972714951576b39374d7776364553315571714833476c37476765594168422f59392b6a384e7a38687049344b6d5a6b32490a4f6b4536646c754947322f7948414170356f564862644b55753438675135354f4e44712b4c67454f656259575458442b51774f44616d374750717a4c6d4348340a2f4772306147375463386e75336c46434163385a71644d4e315551734b344b5035444733506847325346545365514944415141426f7a49774d44415042674e560a48524d4241663845425441444151482f4d42304741315564446751574242523138764275637664316a346d642f67396579502b4c70337646646a414e42676b710a686b6947397730424151734641414f43416745414c4d306b4f50795770332f704546686c5a726c6c73534f586f344b307062672b514e757752754642736b6b710a69494934734f6b6235706b6e712f6f7a587858445039463031476459366f3857565042736d645078424e43416b7642777033616570545a4a6269754b44396e420a32345730617a45754b4744445532564f5565336f6a47574d4c337a414b36786269746d744230485a34764e4a506b66712b576c326871456c4d737357684b2f500a67506757764953757546594d5074776b2f664e49492b7662384d6f6442357a4833646e37657159793030627564764b67584a7a7056663156346b3076425a317a0a793353424574576761694e3430546b4874773764486c76794952487a54376a73426a396639652b33312f5242686d656f39496f685a554c74716f4f61516b6f700a414a436236774c336444345764496b69796c6b68783134686f426861384a5559524b6a754977675176506a3748586d776e5150782b6e2b704558574b374363490a5a75394545726541687278794b67795a4d3669462b456e77656b795658505638544e5546766d63755574616a37432b7952584843783151377548737a4d4c664e0a456f39566a2b6d787237495569616d66334148776c7935722f5639436a31567657523359594c5439384558796f41486f7646627973513567675168506a41616b0a53347672666a6651366a693543723241336e695151667253576d79474f594c2f444a717656754770423863354a506f38314741326e534177703430435a6b54360a612b304f30704e617566302b6673527431327558695473444b4575673772536d426b52637a6a36692b515454486145696249735036543278744856347a6d65750a6a78594644674945754f526667694b55493275645671376872536f4a6e786d773172704b65683668492f457965375675534c6141446b366d4e6d6e4b35624d3d0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a :: ed25519 set cert_ed25519=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d49494232544343415975674177494241674946475a416941415177425159444b3256774d486b78437a414a42674e5642415954416b6c4d4d525577457759440a565151494577784e623252704a326c7549456c73615851784544414f42674e5642416f544230356c64455a795a5755784654415442674e56424173544447356c0a64475a795a57557562476c75617a45714d4367474131554541784d68546d5630526e4a6c5a5342536232393049454e42494445354f5441744d6a49774d4342460a524449314e5445354d43415844546b774d4445774d5441774d4441774d466f59447a49794d4441774d5441784d4441774d444177576a42354d517377435159440a5651514745774a4a544445564d424d474131554543424d4d5457396b615364706269424a62476c304d524177446759445651514b4577644f5a585247636d566c0a4d525577457759445651514c457778755a58526d636d566c4c6d7870626d73784b6a416f42674e5642414d544955356c64455a795a575567556d3976644342440a515341784f546b774c5449794d444167525551794e5455784f5441714d4155474179746c63414d68414f4b6f4761716f6c526358475341336539414f655645670a585231752f4d386b463070414552303853734a736f7a49774d44415042674e5648524d4241663845425441444151482f4d4230474131556444675157424252780a2f70576a724e4a46647654506a315479574c55664b53616e4d44414642674d725a584144515141364b6c4f5a354e4c55667955446e343766547943446c6e64340a764244717767456d3844792b47513445755453714f4c302b37315134587a79745131754b4a6d775676475a74547a496a48736b3557615267797059470a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a 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