Как правильно подписать xml файл? Добрый вечер. Захотел поиграться с файлом лицензии одной программы. Подскажите, пожалуйста, как правильно подписать xml файл лицензии?
Рабочая лицензия сейчас выглядит приблизительно таким образом:
enterprise
Evaluation
2017-05-12
2017-11-20
15









SAdsad324DSafcewds5FDSf324fd


kjHBLIUJgluyiTGLYuigfklv3678GFKLH7ot6y7Ot6yo7TVBhbGF678FVGK8

Поигрался с онлайн генераторами подписей - не получилось. Выдаёт такой Exception:
System.Security.Cryptography.CryptographicException: Неверно сформированный элемент SignedInfo.
в System.Security.Cryptography.Xml.Signature.LoadXml(XmlElement value)
в System.Security.Cryptography.Xml.SignedXml.LoadXml(XmlElement value)
в BluePrism.BPCoreLib.KeyInfo.Verify(RSA key)
в BluePrism.BPCoreLib.AuthorisationDetails.FromLicenseKeys(ICollection`1 keys)
в BluePrism.BPCoreLib.clsLicensingRuntime.AddLicenseKey(KeyInfo key)
в AutomateUI.ctlSystemLicense.AddLicense()
Ок, прошёлся декомпиллером, вот что получил.internal void Verify(RSA key)
{
SignedXml signedXml = new SignedXml(this.mLicenseXml);
signedXml.Resolver = (XmlResolver) null;
XmlNodeList elementsByTagName = this.mLicenseXml.GetElementsByTagName("Signature");
if (elementsByTagName.Count != 1)
throw new ApplicationException("Verification failed: Signature count invalid.");
signedXml.LoadXml((XmlElement) elementsByTagName[0]);
if (!signedXml.CheckSignature((AsymmetricAlgorithm) key))
throw new ApplicationException("Verification failed - signature is not valid.");
}
public static AuthorisationDetails FromLicenseKeys(ICollection keys)
{
AuthorisationDetails authorisationDetails1;
if (keys == null || keys.Count == 0)
{
authorisationDetails1 = AuthorisationDetails.DefaultLicense;
}
else
{
AuthorisationDetails authorisationDetails2 = AuthorisationDetails.LoadKeys(keys);
RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider();
cryptoServiceProvider.FromXmlString("Тут-Длинный-Длинный-КлючAQAB");
IEnumerator enumerator;
if (authorisationDetails2.LicenseType != LicenseTypes.None)
{
try
{
enumerator = authorisationDetails2.LicenseKeys.GetEnumerator();
while (enumerator.MoveNext())
enumerator.Current.Verify((RSA) cryptoServiceProvider);
}
finally
{
if (enumerator != null)
enumerator.Dispose();
}
}
authorisationDetails1 = authorisationDetails2;
}
return authorisationDetails1;
}
Собственно вопрос - зная тот самый "Длинный-Длинный-Ключ" можно ли корректно подписать исправленный XML файл? Спасибо.

21 Авг 2019 в 07:11
248 +1
1
Ответы
1

Чтобы корректно подписать XML файл лицензии, необходимо использовать правильные алгоритмы и ключи шифрования. В данном случае, для подписи XML файла используется алгоритм RSA-SHA1.

Чтобы успешно подписать файл, необходимо сгенерировать корректную подпись на основе закрытого ключа RSA. Для этого вам необходимо получить "Длинный-Длинный-Ключ" закрытыйключRSAзакрытый ключ RSAзакрытыйключRSA, который был использован для подписи оригинального файла лицензии. Без этого ключа вы не сможете корректно подписать XML файл.

Если у вас есть доступ к закрытому ключу RSA, вы можете использовать его для генерации новой подписи на основе вашего исправленного XML файла. Обратитесь к администратору или разработчику программы, чтобы получить закрытый ключ RSA для подписи файлов лицензии.

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир