case 4670
This commit is contained in:
@@ -649,7 +649,71 @@ HOW TO INSTALL YOUR LICENSE KEY
|
|||||||
|
|
||||||
#endregion templates
|
#endregion templates
|
||||||
|
|
||||||
|
#region key signing test harness function
|
||||||
|
|
||||||
|
internal static string Sign(string keyText)
|
||||||
|
{
|
||||||
|
|
||||||
|
// StringBuilder sbKey = new StringBuilder();
|
||||||
|
// StringWriter sw = new StringWriter(sbKey);
|
||||||
|
//GET JSON as a string with whitespace stripped outside of delimited strings
|
||||||
|
//http://stackoverflow.com/questions/8913138/minify-indented-json-string-in-net
|
||||||
|
string keyNoWS = System.Text.RegularExpressions.Regex.Replace(keyText, "(\"(?:[^\"\\\\]|\\\\.)*\")|\\s+", "$1");
|
||||||
|
|
||||||
|
|
||||||
|
//**** Note this is our real 2016 private key
|
||||||
|
var privatePEM = @"-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpAIBAAKCAQEAz7wrvLDcKVMZ31HFGBnLWL08IodYIV5VJkKy1Z0n2snprhSi
|
||||||
|
u3izxTyz+SLpftvKHJpky027ii7l/pL9Bo3JcjU5rKrxXavnE7TuYPjXn16dNLd0
|
||||||
|
K/ERSU+pXLmUaVN0nUWuGuUMoGJMEXoulS6pJiG11yu3BM9fL2Nbj0C6a+UwzEHF
|
||||||
|
mns3J/daZOb4gAzMUdJfh9OJ0+wRGzR8ZxyC99Na2gDmqYglUkSMjwLTL/HbgwF4
|
||||||
|
OwmoQYJBcET0Wa6Gfb17SaF8XRBV5ZtpCsbStkthGeoXZkFriB9c1eFQLKpBYQo2
|
||||||
|
DW3H1MPG2nAlQZLbkJj5cSh7/t1bRF08m6P+EQIDAQABAoIBAQCGvTpxLRXgB/Kk
|
||||||
|
EtmQBEsMx9EVZEwZeKIqKuDsBP8wvf4/10ql5mhT6kehtK9WhSDW5J2z8DtQKZMs
|
||||||
|
SBKuCZE77qH2CPp9E17SPWzQoRbaW/gDlWpYhgf8URs89XH5zxO4XtXKw/4omRlV
|
||||||
|
zLYiNR2pifv0EHqpOAg5KGzewdEo4VgXgtRWpHZLMpH2Q0/5ZIKMhstI6vFHP1p7
|
||||||
|
jmU4YI6uxiu7rVrZDmIUsAGoTdMabNqK/N8hKaoBiIto0Jn1ck26g+emLg8m160y
|
||||||
|
Xciu5yFUU+PP1SJMUs+k1UnAWf4p46X9jRLQCBRue9o0Ntiq/75aljRoDvgdwDsR
|
||||||
|
mg4ZANqxAoGBAPBoM5KoMZ4sv8ZFv8V+V8hgL5xiLgGoiwQl91mRsHRM/NQU5A/w
|
||||||
|
tH8nmwUrJOrksV7kX9228smKmoliTptyGGyi1NPmSkA7cN9YYnENoOEBHCVNK9vh
|
||||||
|
P+bkbMYUDNMW4fgOj09oXtQtMl5E2B3OTGoNwZ2w13YQJ8RIniLPsX7nAoGBAN01
|
||||||
|
eQNcUzQk9YrFGTznOs8udDLBfigDxaNnawvPueulJdBy6ZXDDrKmkQQA7xxl8YPr
|
||||||
|
dNtBq2lOgnb6+smC15TaAfV/fb8BLmkSwdn4Fy0FApIXIEOnLq+wjkte98nuezl8
|
||||||
|
9KXDzaqNI9hPuk2i36tJuLLMH8hzldveWbWjSlRHAoGBAKRPE7CQtBjfjNL+qOta
|
||||||
|
RrT0yJWhpMANabYUHNJi+K8ET2jEPnuGkFa3wwPtUPYaCABLJhprB9Unnid3wTIM
|
||||||
|
8RSO1ddd9jGgbqy3w9Bw+BvQnmQAMpG9iedNB+r5mSpM4XSgvuIO+4EYwuwbMXpt
|
||||||
|
nVx+um4Eh75xnDxTRYGVYkLRAoGAaZVpUlpR+HSfooHbPv+bSWKB4ewLPCw4vHrT
|
||||||
|
VErtEfW8q9b9eRcmP81TMFcFykc6VN4g47pfh58KlKHM7DwAjDLWdohIy89TiKGE
|
||||||
|
V3acEUfv5y0UoFX+6ara8Ey+9upWdKUY3Lotw3ckoc3EPeQ84DQK7YSSswnAgLaL
|
||||||
|
mS/8fWcCgYBjRefVbEep161d2DGruk4X7eNI9TFJ278h6ydW5kK9aTJuxkrtKIp4
|
||||||
|
CYf6emoB4mLXFPvAmnsalkhN2iB29hUZCXXSUjpKZrpijL54Wdu2S6ynm7aT97NF
|
||||||
|
oArP0E2Vbow3JMxq/oeXmHbrLMLQfYyXwFmciLFigOtkd45bfHdrbA==
|
||||||
|
-----END RSA PRIVATE KEY-----";
|
||||||
|
|
||||||
|
PemReader pr = new PemReader(new StringReader(privatePEM));
|
||||||
|
AsymmetricCipherKeyPair keys = (AsymmetricCipherKeyPair)pr.ReadObject();
|
||||||
|
var encoder = new UTF8Encoding(false, true);
|
||||||
|
var inputData = encoder.GetBytes(keyNoWS);
|
||||||
|
var signer = SignerUtilities.GetSigner("SHA256WITHRSA");
|
||||||
|
signer.Init(true, keys.Private);
|
||||||
|
signer.BlockUpdate(inputData, 0, inputData.Length);
|
||||||
|
var sign = signer.GenerateSignature();
|
||||||
|
var signature = Convert.ToBase64String(sign);
|
||||||
|
|
||||||
|
|
||||||
|
System.Text.StringBuilder sbOut = new StringBuilder();
|
||||||
|
sbOut.AppendLine("[KEY");
|
||||||
|
sbOut.AppendLine(keyText);
|
||||||
|
sbOut.AppendLine("KEY]");
|
||||||
|
sbOut.AppendLine("[SIGNATURE");
|
||||||
|
sbOut.AppendLine(signature);
|
||||||
|
sbOut.AppendLine("SIGNATURE]");
|
||||||
|
|
||||||
|
return sbOut.ToString();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
//eoc
|
//eoc
|
||||||
|
|||||||
@@ -206,6 +206,73 @@ oArP0E2Vbow3JMxq/oeXmHbrLMLQfYyXwFmciLFigOtkd45bfHdrbA==
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region key signing test harness function
|
||||||
|
|
||||||
|
internal static string Sign(string keyText)
|
||||||
|
{
|
||||||
|
|
||||||
|
// StringBuilder sbKey = new StringBuilder();
|
||||||
|
// StringWriter sw = new StringWriter(sbKey);
|
||||||
|
//GET JSON as a string with whitespace stripped outside of delimited strings
|
||||||
|
//http://stackoverflow.com/questions/8913138/minify-indented-json-string-in-net
|
||||||
|
string keyNoWS = System.Text.RegularExpressions.Regex.Replace(keyText, "(\"(?:[^\"\\\\]|\\\\.)*\")|\\s+", "$1");
|
||||||
|
|
||||||
|
|
||||||
|
//**** Note this is our real 2016 private key
|
||||||
|
var privatePEM = @"-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpAIBAAKCAQEAz7wrvLDcKVMZ31HFGBnLWL08IodYIV5VJkKy1Z0n2snprhSi
|
||||||
|
u3izxTyz+SLpftvKHJpky027ii7l/pL9Bo3JcjU5rKrxXavnE7TuYPjXn16dNLd0
|
||||||
|
K/ERSU+pXLmUaVN0nUWuGuUMoGJMEXoulS6pJiG11yu3BM9fL2Nbj0C6a+UwzEHF
|
||||||
|
mns3J/daZOb4gAzMUdJfh9OJ0+wRGzR8ZxyC99Na2gDmqYglUkSMjwLTL/HbgwF4
|
||||||
|
OwmoQYJBcET0Wa6Gfb17SaF8XRBV5ZtpCsbStkthGeoXZkFriB9c1eFQLKpBYQo2
|
||||||
|
DW3H1MPG2nAlQZLbkJj5cSh7/t1bRF08m6P+EQIDAQABAoIBAQCGvTpxLRXgB/Kk
|
||||||
|
EtmQBEsMx9EVZEwZeKIqKuDsBP8wvf4/10ql5mhT6kehtK9WhSDW5J2z8DtQKZMs
|
||||||
|
SBKuCZE77qH2CPp9E17SPWzQoRbaW/gDlWpYhgf8URs89XH5zxO4XtXKw/4omRlV
|
||||||
|
zLYiNR2pifv0EHqpOAg5KGzewdEo4VgXgtRWpHZLMpH2Q0/5ZIKMhstI6vFHP1p7
|
||||||
|
jmU4YI6uxiu7rVrZDmIUsAGoTdMabNqK/N8hKaoBiIto0Jn1ck26g+emLg8m160y
|
||||||
|
Xciu5yFUU+PP1SJMUs+k1UnAWf4p46X9jRLQCBRue9o0Ntiq/75aljRoDvgdwDsR
|
||||||
|
mg4ZANqxAoGBAPBoM5KoMZ4sv8ZFv8V+V8hgL5xiLgGoiwQl91mRsHRM/NQU5A/w
|
||||||
|
tH8nmwUrJOrksV7kX9228smKmoliTptyGGyi1NPmSkA7cN9YYnENoOEBHCVNK9vh
|
||||||
|
P+bkbMYUDNMW4fgOj09oXtQtMl5E2B3OTGoNwZ2w13YQJ8RIniLPsX7nAoGBAN01
|
||||||
|
eQNcUzQk9YrFGTznOs8udDLBfigDxaNnawvPueulJdBy6ZXDDrKmkQQA7xxl8YPr
|
||||||
|
dNtBq2lOgnb6+smC15TaAfV/fb8BLmkSwdn4Fy0FApIXIEOnLq+wjkte98nuezl8
|
||||||
|
9KXDzaqNI9hPuk2i36tJuLLMH8hzldveWbWjSlRHAoGBAKRPE7CQtBjfjNL+qOta
|
||||||
|
RrT0yJWhpMANabYUHNJi+K8ET2jEPnuGkFa3wwPtUPYaCABLJhprB9Unnid3wTIM
|
||||||
|
8RSO1ddd9jGgbqy3w9Bw+BvQnmQAMpG9iedNB+r5mSpM4XSgvuIO+4EYwuwbMXpt
|
||||||
|
nVx+um4Eh75xnDxTRYGVYkLRAoGAaZVpUlpR+HSfooHbPv+bSWKB4ewLPCw4vHrT
|
||||||
|
VErtEfW8q9b9eRcmP81TMFcFykc6VN4g47pfh58KlKHM7DwAjDLWdohIy89TiKGE
|
||||||
|
V3acEUfv5y0UoFX+6ara8Ey+9upWdKUY3Lotw3ckoc3EPeQ84DQK7YSSswnAgLaL
|
||||||
|
mS/8fWcCgYBjRefVbEep161d2DGruk4X7eNI9TFJ278h6ydW5kK9aTJuxkrtKIp4
|
||||||
|
CYf6emoB4mLXFPvAmnsalkhN2iB29hUZCXXSUjpKZrpijL54Wdu2S6ynm7aT97NF
|
||||||
|
oArP0E2Vbow3JMxq/oeXmHbrLMLQfYyXwFmciLFigOtkd45bfHdrbA==
|
||||||
|
-----END RSA PRIVATE KEY-----";
|
||||||
|
|
||||||
|
PemReader pr = new PemReader(new StringReader(privatePEM));
|
||||||
|
AsymmetricCipherKeyPair keys = (AsymmetricCipherKeyPair)pr.ReadObject();
|
||||||
|
var encoder = new UTF8Encoding(false, true);
|
||||||
|
var inputData = encoder.GetBytes(keyNoWS);
|
||||||
|
var signer = SignerUtilities.GetSigner("SHA256WITHRSA");
|
||||||
|
signer.Init(true, keys.Private);
|
||||||
|
signer.BlockUpdate(inputData, 0, inputData.Length);
|
||||||
|
var sign = signer.GenerateSignature();
|
||||||
|
var signature = Convert.ToBase64String(sign);
|
||||||
|
|
||||||
|
|
||||||
|
System.Text.StringBuilder sbOut = new StringBuilder();
|
||||||
|
sbOut.AppendLine("[KEY");
|
||||||
|
sbOut.AppendLine(keyText);
|
||||||
|
sbOut.AppendLine("KEY]");
|
||||||
|
sbOut.AppendLine("[SIGNATURE");
|
||||||
|
sbOut.AppendLine(signature);
|
||||||
|
sbOut.AppendLine("SIGNATURE]");
|
||||||
|
|
||||||
|
return sbOut.ToString();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region old stuff
|
#region old stuff
|
||||||
#region license classes
|
#region license classes
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user