Данная статья предназначена для разработчиков, использующих интерфейсы WebMoney Transfer в Microsoft .Net приложениях.
Цель статьи: пояснить специфику работы с библиотекой WebMoney.Cryptography (кодовое название WMSignerFX).
Библиотека WebMoney.Cryptography используется для получения цифровой подписи сообщения закрытым ключом WM Keeper Classic. Она реализована на управляемом (managed) языке (язык разработки C#) и не требует специальных прав для своей работы. Благодаря применению алгоритма Монтгомери, скорость наложения подписи гораздо выше, чем у неуправляемых аналогов.
Текущая версия библиотеки 3.2.
Пример получения подписи сообщения на языке C#:
using WebMoney.Cryptography
using System;
namespace WebMoney.Examination
{
public class Program
{
static void Main(string[] args)
{
// xml-представление ключа WebMoney Keeper Classic, полученное с помощью утилиты KeyExtractor 3.1
string xmlKey = "<RSAKeyValue><Modulus>ccqACxNjlkI</Modulus><D>FW1RaQMqeIn8otCeHgD</D></RSAKeyValue>";
Signer signer = new Signer();
signer.Initialize(xmlKey);
string signature = signer.Sign("message"); // подпись строки
Console.WriteLine(signature);
}
}
}
Для запуска этого кода, необходимо добавить в проект ссылку на библиотеку WebMoney.Cryptography и BusinessTools.Cryptography.
При инициализации объекта класса Signer, используется представление ключа в XML-формате: <RSAKeyValue><Modulus>{0}</Modulus><D>{1}</D></RSAKeyValue>, где {0} и {1} — значение модуля и приватной экспоненты в формате Base64. Порядок байт little-endian.
Возможные исключения при инициализации объекта класса Signer:
Возможные исключения при подписи строки (вызов метода Sign):
Пример получения подписи сообщения на языке VBScript и JScript (для использования в гаджетах Windows Vista и Windows 7):
VBScrip
Dim signer
Dim signature
Set signer = CreateObject("WebMoney.Cryptography.Signer")
signer.Initialize("<RSAKeyValue><Modulus>ccqACxNjlkI</Modulus><D>FW1RaQMqeIn8otCeHgD</D></RSAKeyValue>")
signature = signer.Sign("test")
Call MsgBox(signature)
JScript
var signer = WScript.CreateObject("WebMoney.Cryptography.Signer");
signer.Initialize("<RSAKeyValue><Modulus>ccqACxNjlkI</Modulus><D>FW1RaQMqeIn8otCeHgD</D></RSAKeyValue>");
var signature = signer.Sign("test");
WScript.Echo(signature);
Для запуска этого кода, необходимо зарегистрировать WebMoney.Cryptography как COM-компонент:
RegAsm.exe .\..\PUBLIC\v3.2-bin\WebMoney.Cryptography.dll \tlb gacutil.exe /if .\..\PUBLIC\v3.2-bin\WebMoney.Cryptography.dll gacutil.exe /if .\..\PUBLIC\v3.2-bin\BusinessTools.Cryptography.dll
Утилиты RegAsm и gacutil следует поместить в рабочую папку.
Получить представление ключа WM Keeper Classic можно с помощью программы Key Extractor.

Обратите внимание! Начиная с версии библиотеки 3.1. формат представления ключа WM Keeper изменился. Старый формат более не поддерживается.
Xml-представление ключа WMKeeper рекомендуется хранить в конфигурационном файле приложения в зашифрованном виде. Подробнее о шифровании разделов конфигурационного файла вы можете узнать в библиотеке MSDN
Проект Mono позволяет использовать библиотеку WebMoney.Cryptography и программу Key Extractor практически на любой операционной системе семейства Unix. Ни библиотека, ни программа не требуют какой-либо доработки для этого. Дополнительную информацию смотрите в статье Key Extractor.
Техническая поддержка осуществляется по e-mail: support@wmsigner.com
Зеркала на CodePlex и Google Code содержат старые версии и не обновляются.
Все исполняемые файлы и библиотеки подписаны цифровой подписью. Безопасность файлов без валидной цифровой подписи не гарантируется.
Категория: XML-интерфейсы
This article in other languages: English