前段时间看了下 Crazer大佬关于jetbrains server
激活的帖子,于是想着自己写代码实操验证下,结果就发现翻车了。先抛出问题截图:
然后说下问题现象:
经过代码,构造的Response
长下面这样:
<!-- SHA1withRSA-HZRPQrlS1ayMLz36qjUx6XyLvCAzR60bwJDJVpLDtxVCuot6ESLKg0o9Zm/qtHVyRKfDhuAbLNfscFxNvztjnRH/0kPPoWBWl9CFP70gqWh3wiwikwegtAvYLN2AkOiXqKQ/zCku3e5cJqoUgfRu9eYolg0rRZAETsjADz7XRLwpVHXO9jNGSDhcPVJ6mIIlP3dI7+EKYi8Wg1cA3iJLAp7gOXlecF961i+e49REi5LSCeFDXUiOI7x+zFV84n4xb9mUoqUjHOdEwTtFx4r/hMpv3bEFXWluVkRQE1vRQgyYxDY7cNk78Z4vcyf0UW7SK1rQDHd4ZeU4Kdt969pBHA==-MIIDwDCCAaigAwIBAgIGAZArjVQTMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMTEkxpY2Vuc2UgU2VydmVycyBDQTAeFw0yNDA2MTgxMzMzMjVaFw00NDEyMzExNjAwMDBaMCUxIzAhBgNVBAMTGnp5emxpbmcubHNydi5qZXRicmFpbnMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh/t3eMl3e1UZ8WEZ/+WdHD8h7HEJSgFG42IKnmdXVtTfnW/GU1qm7dcjOptJerndJiDUwTjpgBXVcaK86C7iQ6Q5RClBesXswGkDKcKs1nkCaTIA/J1QEoJBeQac1VrnBzrkfDYvkLZNZov50MVcs6DEEO4KX3H5hNF5vYdG452yVhF0zLCNtcB/PEnnWlXACcfQ4c7042WdQdwVJ+5ae2kKKnikKBz+I2DM40N9AZASg4mJsqylXMnPPot+JUPeqnjkT1sJdZek2PoXNx4gvJzxy3r+xSSh4wh343GICWVXPpHnMxhRZJavCfxABGccC5DJuH6ilDx8c5X2G51CvQIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQAj1DQgIBwtugpEx+nCP67l6NDTHVfVVNEhuy0e1muSQA1RodryDWOY+Mtlv+5xsf7W35jmSOKG/dtgzfRN8mAdfuURhoiRRlLiGpDQwf6GEoh4A64XTBleW1u19Y3p4nPcwh9SfjFBnKLr8eR3erXVic8A02cPQrpKQYKMiNM0pUTEQeKan4CexvKVdUJHRURgv9T/YDCVl6TIX0lRJUpOGFjN/CXPFbnmg2XlV4DQ98nC/p++ae3UjE+S7Rlgy90ynC+MXC/XS87yIp7TprzvyQtrOGgH//W0pxXUM36nqBnEMLMVe1LC32MziPJH5dPWLe1z2WR/y/c3mSzzj3ufvt0lpKgRRC1tX/5DjObKRcF/LCYmLxieP81fFgT2I34ahwqTHYQ0hj53bDdQ09zLA04khPW2DMzCjPYYgPWIe9e2FOFUaQ8bfbGrraF1ZzP/wYHdTAtiK9B6VffWKmeno9/8cPXTBR8+fd+P7qFYxKCN3rvibM0Spc8ui8P5W+uMTjgNtaiXPIH0mfXy3hbCkKlbuBIuJ5D4VvXfy6tNLAn/iRyUyh8/DVC1BDA06Y5HJ4xIL4itNwrBmOcXc08qO6k77N0POwKdJkpdqpKKc6CdLA+MxuP9Qkf5sGNV9/vU+UL64Yjw4LfJkPv3BdW3pXKS49YV4A1Gx32jB/bfiw== -->
<ObtainTicketResponse><action>NONE</action><confirmationStamp>1719154702147:7e364b38-32a3-4b56-a197-3ce1b9888b73:SHA1withRSA:AJERlPNxZ0uklbapDPMPYprs7XF8SZEAjdh+kAu978239moG1PgkIJ9wnIEjf2Uh8XiBNZ8hGCseXcv/qEeyXch6DfrApV49M1IIGYHJqpnKD3u+BKcIaCQ7jSdGwi68qeoNuF1H5C7CdMcpxq7fyKwitRWDxKn/EMgrYRleAF6J0+k69u1Ym8zIccwbdxerfdY0lWy55hbYB2SKEV/fGcuJESw0jsVetWak82hge42K1FVgG+MoF7T/ARhxbjzt8E7mF+FY3z0d+1o9L31cGQPxDLVSfEOla+ZLd7B0cQQllL49onBkAVDfD/hBCcE3T9L3FaPei2KZIB2Rm57h1Q==:MIIDwDCCAaigAwIBAgIGAZArjVQTMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMTEkxpY2Vuc2UgU2VydmVycyBDQTAeFw0yNDA2MTgxMzMzMjVaFw00NDEyMzExNjAwMDBaMCUxIzAhBgNVBAMTGnp5emxpbmcubHNydi5qZXRicmFpbnMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh/t3eMl3e1UZ8WEZ/+WdHD8h7HEJSgFG42IKnmdXVtTfnW/GU1qm7dcjOptJerndJiDUwTjpgBXVcaK86C7iQ6Q5RClBesXswGkDKcKs1nkCaTIA/J1QEoJBeQac1VrnBzrkfDYvkLZNZov50MVcs6DEEO4KX3H5hNF5vYdG452yVhF0zLCNtcB/PEnnWlXACcfQ4c7042WdQdwVJ+5ae2kKKnikKBz+I2DM40N9AZASg4mJsqylXMnPPot+JUPeqnjkT1sJdZek2PoXNx4gvJzxy3r+xSSh4wh343GICWVXPpHnMxhRZJavCfxABGccC5DJuH6ilDx8c5X2G51CvQIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQAj1DQgIBwtugpEx+nCP67l6NDTHVfVVNEhuy0e1muSQA1RodryDWOY+Mtlv+5xsf7W35jmSOKG/dtgzfRN8mAdfuURhoiRRlLiGpDQwf6GEoh4A64XTBleW1u19Y3p4nPcwh9SfjFBnKLr8eR3erXVic8A02cPQrpKQYKMiNM0pUTEQeKan4CexvKVdUJHRURgv9T/YDCVl6TIX0lRJUpOGFjN/CXPFbnmg2XlV4DQ98nC/p++ae3UjE+S7Rlgy90ynC+MXC/XS87yIp7TprzvyQtrOGgH//W0pxXUM36nqBnEMLMVe1LC32MziPJH5dPWLe1z2WR/y/c3mSzzj3ufvt0lpKgRRC1tX/5DjObKRcF/LCYmLxieP81fFgT2I34ahwqTHYQ0hj53bDdQ09zLA04khPW2DMzCjPYYgPWIe9e2FOFUaQ8bfbGrraF1ZzP/wYHdTAtiK9B6VffWKmeno9/8cPXTBR8+fd+P7qFYxKCN3rvibM0Spc8ui8P5W+uMTjgNtaiXPIH0mfXy3hbCkKlbuBIuJ5D4VvXfy6tNLAn/iRyUyh8/DVC1BDA06Y5HJ4xIL4itNwrBmOcXc08qO6k77N0POwKdJkpdqpKKc6CdLA+MxuP9Qkf5sGNV9/vU+UL64Yjw4LfJkPv3BdW3pXKS49YV4A1Gx32jB/bfiw==</confirmationStamp><leaseSignature>SHA512withRSA-H/UuGpHqKvIRFMbNyJOEYamloBqhh3aLZgndYA5oWnzClleaRGsNvdf8rhLA07CqNcZpRUBA2FC2yLk78OXVjwZMFx1/CZD2UVP5IWYE2E+CWsRZiVTqsfUDpGicgbtHH91XutqnVBw6ACe/4eHz3pENeMH+ZOVgfXnjmECUPW3AcQzm7pCApj4R39tjIyXtlXW2OE7Yf52fePqrsfqTCrj8/JQEDIvCdWNgwNDnDjVOU714OAle3Ma4DhmZdyE04DQlsXz7p1Fl80K+xaF4hJLN7F+Y61Kd3JzezZKxBw7+4V52bW7J19boUIxdMIjyJhZ2RKEcoKUcHHm8Zvq0SQ==-MIIDuzCCAaOgAwIBAgIGAZAwsryNMA0GCSqGSIb3DQEBCwUAMBgxFjAUBgNVBAMTDUpldFByb2ZpbGUgQ0EwHhcNMjQwNjE5MTMzMjIxWhcNNDQxMjMxMTYwMDAwWjAlMSMwIQYDVQQDExp6eXpsaW5nLmxzcnYuamV0YnJhaW5zLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIXVgmzAeTGAUY4Yb+S3KZ2t2qO08gsQfqLVTC0q8FbwLW+NCSp7Q788D7fSOiCN4uvT3qW/V4sPphFP4Ateq0mBjV1vmNO1DpKsU9Rv8h+eAxoRM+5qgN5W7mRBPT/pbOEm60S4gIRfsncmjKQSfgwGzZkB7o9Mbm7wfgnHDD+tlNGRF4TFbMUyTNKszCTjpvxzh5fwItiOQCmxQWrzY9dfKKyWGwT8mtuZEjdV/60n9U0MqfQtfDtc0i5SPXlSv0PBbMLShEItGjHUZKJGYW/JKicP8wR3YCwbKjmAF58W4kKwhwxVQZhR06b2AMu+7eoUDan20/LK5VNCjhmKgL8CAwEAATANBgkqhkiG9w0BAQsFAAOCAgEALp5G9XHoRtSHv2efTjagCoGvacRtSXRRObDyJcBDra/TSbK67ln+ghum8QBzbkFLPoYbl59lr42IweDrMUgFGdKlzj7Y61hqSz5dAr8NqCQZ5dN4ptc6c05qOgQo3SiohYq29UoNETYl+mrt01DchmyoI1rWAvxG8KFqaS3qLvYFwEj5C8irGRTCV+Iycaw4M1VKx0ZnJpLQaIRGeBTE/Ah0oEEO5cXas1dt+ff1Btbx6fHynqX+mnXHaUmHyrArB/H5lIf0W4JRRHr5jSlB35BCHPF6lMjNjmlr2FXAtWzbjmECAR56UJ7FfSUIHvA5fbICcHQrI7w/pAbm5TbvNriF/foVc4bMyjvWuccwPJHrLLL0Ua4Eu8yJ/B7i3/GLKEouPt4J+cuWSS8EOhap0tWxDmKoly+0U6CocjKvz4xQyP4N2QWjMbANS+bL21dECguYd73Pt0NcD3MumPLLs6zYFOCcvqOofkYzfcu7Jm0FV2xvPSq5T/mygjZjjiCZjkQE0g78h89F9fUg9zP7aB9/iFa1pTPuTIGPZ26C8LtpPl7ygPrOcGfeEa2r/t++Hc9Dx5UjozqQfTiN2uCF9HbOXR7LkyLh+yd1I+dXLqgBSXGrMz5wJPGKxlD2oEEWDTO3V2tV/Us+kVPKFAlhPZ7Ap85HCRDKqgRMHZqpysM=</leaseSignature><message>OK</message><prolongationPeriod>123456</prolongationPeriod><responseCode>OK</responseCode><salt>1719154702031</salt><serverLease>4689898213000:zyzling</serverLease><serverUid>zyzling</serverUid><ticketId>1</ticketId><ticketProperties>license=xxx licenseType=5</ticketProperties><validationDeadlinePeriod>-1</validationDeadlinePeriod><validationPeriod>66666666</validationPeriod></ObtainTicketResponse>
注意哈,这里内容没有格式话。然后按照规则,取<!-- -->
部分去签名校验,这里我是采用的简单方式,即构成为:SHA1withRSA-{响应签名}-{主题为zyzling.lsrv.jetbrains.com的证书}
然后power.conf
中的配置是这样的:
; 服务器激活测试
EQUAL,146169242458608186652221153247707928878774564318872814848611555386850439828683306039502635380443332748760851420596013203615474415297420670561038948251194208420780206758217739736468146060684946209063535326673060380874233337472803822118043049206727368848307319180056539515557899036295560374592507754899687980171552914108599459643945206972619597823896896439271520033924865116792819160056087892636538912184650242954378250842384616654261564888017018078998017393985517179127168333600025545755122580026206819728548997833150777617551417990837023361716778742302199900634374038401742532417351801509546092929809510211539907197787134216673786130533004711127649113696142124539617137831286078861724331366616244057123601763558657185422389673367185576182285235292391917108691230950022509263683785874891480016545626654599643784695199061157695184569764201115925557477493009625138850212463453042483184753601933457432353424329191741463499363320630435919229366223258969811703360075485448967298082667310772853206565563060811203073212225549078100557148579841850411638602018626224275834260259754276227936327756331563323977447520918853198325508736148253174775252013732422286618361182882522699038139429071843823868681235609834131917567466316289148690797879179,65537,657823416415964932845156435107145357714205418747915356734397055242964933221752404166614935255105249101653916721681603662754307632457128805443068644284748929421507178622933348669378235847742899773920765918770105482851534467296284105250512573151705220224379509383835022323282176179690146311979451556541118129344282127375534752754929526193258755897888515754328964698687671896985405008425332766082319260988023654359845072776189451448786758245414253386146246727354454047135428416624852422567360097346671648093064429279847823280592246506886401865455491924420415707803245018138595108029359998829520236522620749918729938206134739331246902031807601266419258080411903201595710155467901291142142443220333539750397923736434950558371997170985472272249812750161962720036837656464089126216749585148030883029438285184930024286517865710539947589764564204842426698322404033441531662829238875205420761652375337327297032255730262635511533223504109798364923988127319356119135982652788834405038113746394301957551167740345788175766290794604666781402329824924118191746319728033878045396093674696713022814027690165596773992550010915823534552020920573926469894452526033833249442230929742486602298477270672101197444729222659891038350303699501280729658274069437->31872219281407242025505148642475109331663948030010491344733687844358944945421064967310388547820970408352359213697487269225694990179009814674781374751323403257628081559561462351695605167675284372388551941279783515209238245831229026662363729380633136520288327292047232179909791526492877475417113579821717193807584807644097527647305469671333646868883650312280989663788656507661713409911267085806708237966730821529702498972114194166091819277582149433578383639532136271637219758962252614390071122773223025154710411681628917523557526099053858210363406122853294409830276270946292893988830514538950951686480580886602618927728470029090747400687617046511462665469446846624685614084264191213318074804549715573780408305977947238915527798680393538207482620648181504876534152430149355791756374642327623133843473947861771150672096834149014464956451480803326284417202116346454345929350148770746553056995922154382822307758515805142704373984019252210715650875853634697920708113806880196144197384637328982263167395073688501517286678083973976140696077590122053014085412828620051470085033364773099146103525313018873319293728800442101520384088109603555959893639842091339193847383381730463944169311600357511837761706609440789164799726899837053998916209
这个配置是可以让我生成的证书受jetbrains
信赖,因为我尝试注释掉这个power.conf
配置,报的是另外一个错。
然后现在就卡住了,一直报这个签名不可用。为什么确定是这里的签名不可用呢?我尝试着修改签名算法类型,即把SHA1withRSA
改成SHA256withRSA
,报错时的算法变了。
这个签名和内容,我用第三方工具也验证了,签名是验证通过的,如下:
所以现在有点懵,希望有大佬可以救救孩子,万分感谢。
最后附上相关代码:
@GetMapping("/obtainTicket.action")
public String obtainTicket(ObtainTicketReq req) throws Exception {
log.info("req:{}", req);
ObtainTicketResp obtainTicketResp = new ObtainTicketResp();
obtainTicketResp.setConfirmationStamp(getConfirmationStamp(req.getMachineId()));
obtainTicketResp.setLeaseSignature(getLeaseSignature("4689898213000:zyzling"));
obtainTicketResp.setProlongationPeriod("123456");
obtainTicketResp.setSalt(req.getSalt());
obtainTicketResp.setServerLease("4689898213000:zyzling");
obtainTicketResp.setServerUid("zyzling");
obtainTicketResp.setTicketId("1");
obtainTicketResp.setTicketProperties("license=xxx licenseType=5");
String respStr = generatorSignBody(generatorXmlStr(obtainTicketResp));
log.info("resp:\n{}", respStr);
return respStr;
}
public String getLeaseSignature(String severLease) throws Exception{
return "SHA512withRSA" + "-" + RSAUtil.sign("SHA512withRSA",SERVER_PRIVATE_KEY,severLease.getBytes(StandardCharsets.UTF_8)) + "-" +codeCertStr;
}
public String getConfirmationStamp(String machineId) throws Exception {
String str = System.currentTimeMillis() + ":" + machineId;
String sign = RSAUtil.sign("SHA1withRSA", SERVER_PRIVATE_KEY, str.getBytes(StandardCharsets.UTF_8));
return str + ":" + "SHA1withRSA" + ":" + sign + ":" + serverCetStr;
}
public String generatorSignBody(String xml) throws Exception {
// 组成:签名算法-签名内容-server证书-中间证书(可选)
// SHA1withRSA-server证书的私钥对xml的签名-server证书
String sign = RSAUtil.sign("SHA1withRSA", SERVER_PRIVATE_KEY, xml.getBytes(StandardCharsets.UTF_8));
return "<!-- SHA1withRSA" + "-" + sign + "-" + serverCetStr + " -->\n" + xml;
}
private static String generatorXmlStr(Object o) throws JAXBException {
// 通过Xml工具把对象转成xml
JAXBContext jaxbContext = JAXBContext.newInstance(o.getClass());
// 保存文件,将Java对象转化为xml文件
Marshaller marshaller = jaxbContext.createMarshaller();
// marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);
// 设置 Marshaller 属性,去掉 xml 标识
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
// 将Java对象序列化为XML字符串
StringWriter writer = new StringWriter();
marshaller.marshal(o, writer);
return writer.toString();
}
证书的pem:
-----BEGIN CERTIFICATE-----
MIIDwDCCAaigAwIBAgIGAZArjVQTMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMT
EkxpY2Vuc2UgU2VydmVycyBDQTAeFw0yNDA2MTgxMzMzMjVaFw00NDEyMzExNjAw
MDBaMCUxIzAhBgNVBAMTGnp5emxpbmcubHNydi5qZXRicmFpbnMuY29tMIIBIjAN
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh/t3eMl3e1UZ8WEZ/+WdHD8h7HEJ
SgFG42IKnmdXVtTfnW/GU1qm7dcjOptJerndJiDUwTjpgBXVcaK86C7iQ6Q5RClB
esXswGkDKcKs1nkCaTIA/J1QEoJBeQac1VrnBzrkfDYvkLZNZov50MVcs6DEEO4K
X3H5hNF5vYdG452yVhF0zLCNtcB/PEnnWlXACcfQ4c7042WdQdwVJ+5ae2kKKnik
KBz+I2DM40N9AZASg4mJsqylXMnPPot+JUPeqnjkT1sJdZek2PoXNx4gvJzxy3r+
xSSh4wh343GICWVXPpHnMxhRZJavCfxABGccC5DJuH6ilDx8c5X2G51CvQIDAQAB
MA0GCSqGSIb3DQEBCwUAA4ICAQAj1DQgIBwtugpEx+nCP67l6NDTHVfVVNEhuy0e
1muSQA1RodryDWOY+Mtlv+5xsf7W35jmSOKG/dtgzfRN8mAdfuURhoiRRlLiGpDQ
wf6GEoh4A64XTBleW1u19Y3p4nPcwh9SfjFBnKLr8eR3erXVic8A02cPQrpKQYKM
iNM0pUTEQeKan4CexvKVdUJHRURgv9T/YDCVl6TIX0lRJUpOGFjN/CXPFbnmg2Xl
V4DQ98nC/p++ae3UjE+S7Rlgy90ynC+MXC/XS87yIp7TprzvyQtrOGgH//W0pxXU
M36nqBnEMLMVe1LC32MziPJH5dPWLe1z2WR/y/c3mSzzj3ufvt0lpKgRRC1tX/5D
jObKRcF/LCYmLxieP81fFgT2I34ahwqTHYQ0hj53bDdQ09zLA04khPW2DMzCjPYY
gPWIe9e2FOFUaQ8bfbGrraF1ZzP/wYHdTAtiK9B6VffWKmeno9/8cPXTBR8+fd+P
7qFYxKCN3rvibM0Spc8ui8P5W+uMTjgNtaiXPIH0mfXy3hbCkKlbuBIuJ5D4VvXf
y6tNLAn/iRyUyh8/DVC1BDA06Y5HJ4xIL4itNwrBmOcXc08qO6k77N0POwKdJkpd
qpKKc6CdLA+MxuP9Qkf5sGNV9/vU+UL64Yjw4LfJkPv3BdW3pXKS49YV4A1Gx32j
B/bfiw==
-----END CERTIFICATE-----
私钥的pem
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCH+3d4yXd7VRnx
YRn/5Z0cPyHscQlKAUbjYgqeZ1dW1N+db8ZTWqbt1yM6m0l6ud0mINTBOOmAFdVx
orzoLuJDpDlEKUF6xezAaQMpwqzWeQJpMgD8nVASgkF5BpzVWucHOuR8Ni+Qtk1m
i/nQxVyzoMQQ7gpfcfmE0Xm9h0bjnbJWEXTMsI21wH88SedaVcAJx9DhzvTjZZ1B
3BUn7lp7aQoqeKQoHP4jYMzjQ30BkBKDiYmyrKVcyc8+i34lQ96qeORPWwl1l6TY
+hc3HiC8nPHLev7FJKHjCHfjcYgJZVc+keczGFFklq8J/EAEZxwLkMm4fqKUPHxz
lfYbnUK9AgMBAAECggEAQruTvAES08HFw4FlowFqAsywtzoZ1umdgkVA9M++Ouyo
+Lg72fgo55umvEIs4z+HWgjOoCxv2t3cK7IzhrZLb+qN9/dPHRM4xoxCcyIIdBBa
sIlLlq0U+KBXxS8LlGDR8+hg7Nwip5/viB21cVEJ11VUIwLOsFxcmWO7nNlgXp7y
QISZI6rTLUdN8wM7u9AyGrnmbODqsKKZ1M75keWKO8I+yIIElG53LkNDHn/pEC9i
0FzP1FOptL/AiUe03WyqamSLJGbkkpNsz03tvhkvppwhOcuMsbw3nml7qkyyGoJS
r+4Fsi7ecDPJr8iv9JnbNzCUHymn11PXZZ1GaLaiOQKBgQDXNulWk4zbNihEdArI
1Uf2Ddk25qI0rU2ftPMCsQTwR9cNVIpviayw9ZNVLApsESrK6rxJ84bZAY2SblMG
YiC7zfMlYTcB4PkJ/VHyz0th6icKVO5NPIaUo+ITlc7/P5aaXn0MRDHUV3lOyGkn
1sSjnUENuD1pPrP8wNbL0rYUSwKBgQChwJ7ZBPjJqQuCGUBCbPPTOdezQUXwUsUs
iIaz/eZHFryFHaAIV+xdUL3/t5Szpoq65zUzgvHKD4r293nU7fbVb9lTj+3tfixX
HXpJNgUZuTrkaDtbeqIFVGjWu9N/zNhDlVWN/jnqyoWmJVCNq03P/sgfVxS8tYux
XwFbnn5QFwKBgQC7lzSa73AW38UHrfJ8jlP0aKvOjAgVTH5d2Fb+IJjCbIxKJUep
42JwuQ4cbpADFI+tYiCPgUMoQo9JdPrPlJcdvG3VRkCxVY0eJP3aXNBDX9t5yQAS
uNBCHfuAwNM2cBHxKq1rFMIuabTmdBAc1rp+NyMuN0roQuyWQuy3q0pkswKBgHoc
tM8ZlciIOgvpjD2Ziyl3jYPiTy5zDi/kkezoTSR14bSM/PfPiL2Z6xZWPYiyviED
04Ij5O2qdjqj8fHyBFp1qhgPnIuiqU7LDjqe8ZLN58vvdIBHQHHNm6gg/DaLKuk6
n/AmcQr0AZnAqeOJ46CWs/YVA67DT8aD9r54FNvZAoGAHOzppFbvt0xY1bC6OPqY
ID9Dpq2s8+C4Sp7Nj65QnbFQrPmL3af6Pbb6wDtOSIzejivSKAObGk+jsA0f3+eC
WET92RMhzFcyRfl30IXP8Msll0hapq09wo6QCA+KaXXm9pSKL9Z/V8aaejaEJB/w
2mTlxkU6MV/hEmmxxsHzIgU=
-----END PRIVATE KEY-----