Подскажите где найти описание всех методов компонент XMLDSign, libXadesAddIn, ExtraCryptoAPIAddInNative? В составе БСП, в различных конфигурациях обрывочные сведения можно почерпнуть, но где то же описано целиком?
Поддержу вопрос. Точно очень даже поможет в работе за рамками типовых конфигураций.
И не придется "пилить" собственные внешние компоненты для работы с криптой.
Итересуют помимо методов вопросы например:
- как добавить в механизмы трансформации алгоритмы с XPath.
- как реализовать встраивание подписи в специально отведенные теги в контенте.
Конечно можно "запилить" через СтрЗаменить, но есть вот пример от КритоПро
https://cpdn.cryptopro.ru/content/csp_trunk/html/group___x_m_l_example_XMLSignForVerify.html так там на "раз" именно это и делается.
В инструкции от принимающей стороны информации подписанной ЭП просто:
Цытата: "Получив контент, можно сохранить его в файл и выполнить подписание с помощью криптопро(встраивание
подписи в специально отведенные теги в контенте)". И всё.
Вот и приходится в такой ситуации "по просторам ... по просторам".
И вот ни как не "лучше хором". Есть же компонента ExtraCryptoAPIAddInNative - зачем "велосипеды".
Масса вопросов - собственно сабж очень даже для тех кто в тему "погружается".
И "погружается" с правильными вопросами.
Компонента Компонента_xades, в отлтчии от ExtraCryptoAPIAddInNative не входит в БСП.
Это предполагаю надо в разработчикам БГУ обращаться.
Вероятно они реализовали то чето не может БСП.
На базе БСП - ExtraCryptoAPIAddInNative похоже мало развивается вот и "запиливают" Xades.
Вот и нет нормального описания.
И вот интересно - с Госуслугами всё должно быть стандартизировано.
И 1с Фирма, по идее, на уровне программного интерфейса конфигурации обеспечивает уровень выше чем
уровень интерфейсов DLL.
В отличии от других информационных ссистем.
Что Вы хотите там поправить?
Ведь по какой то причине Вы опустились до инициации компоненты.
Если всё работает - зачем туда смотреть.
(4)
Я просто уже который раз пытаюсь берусь за идею нормально переписать интеграция с неким сервисом, близким к гос услугам.
Сейчас это работает через стрзаменить, собрать XDTO, записать в XML, собрать DOM сделать действия, записать в XML т.д. куча ненужных преобразований и не нормальных действий, со стороны нормального программирования.
И самое интересное, как выполнить посчет хеша на linux'e без com-объекта:
как выполнить посчет хеша на linux'e без com-объекта
Крипто про умеет, он есть под линух.В нем есть под джаву какой-то адаптер.
С другой тороны, алгоритм описан. У меня коллега с С перенес его на 1С. Работает, конечно, медленнее, чем на С, но условная секунда против микросекунд - не так и плохо.
(12)
Тогда уже есть https://docs.cryptopro.ru/cades/pycades, для переписывания и сборки.
При этом мы имеем набор компонент уже собранных в недрах компании 1С, но необходимо писать свой велосипед, потому что к готовым библиотекам нет описания.
Абсолютно согласен.
И сабж актуален очень даже.
Тем более электронная подпись "шагает по стране" и не первый год.
А если ещё МЧД заработает по полной?
Подписывать начнут "и надо, и не надо"
В ходе чтения инфостарта на предпед NativeApi удалось найти разработку @KAV2: https://infostart.ru/1c/tools/1122804/ благодаря которой можно получить все методы компонент (например ExtraCryptoAPI):
Available object names:ExtraCryptoAPI
Get the properties of the object "ExtraCryptoAPI":
Methods:
------------------------------------------------
C14N(p1, p2)
local name: C14N
Has return value: True
------------------------------------------------
Hash(p1, p2, p3)
local name: Hash
Has return value: True
------------------------------------------------
SignedInfo(p1)
local name: SignedInfo
Has return value: True
------------------------------------------------
GetSignOIDFromCert(p1)
local name: GetSignOIDFromCert
Has return value: True
------------------------------------------------
Sign(p1, p2, p3)
local name: Sign
Has return value: True
------------------------------------------------
VerifySign(p1, p2, p3, p4)
local name: VerifySign
Has return value: True
------------------------------------------------
SignedSignatureTag(p1, p2, p3, p4)
local name: SignedSignatureTag
Has return value: True
------------------------------------------------
CMSSign(p1, p2, p3, p4, p5, p6)
local name: CMSSign
Has return value: True
------------------------------------------------
CMSVerifySign(p1, p2, p3, p4, p5)
local name: CMSVerifySign
Has return value: True
------------------------------------------------
XadesTSign(p1, p2, p3, p4, p5, p6, p7)
local name: XadesTSign
Has return value: True
------------------------------------------------
ExportKey(p1, p2, p3, p4)
local name: ЭкспортироватьКлюч
Has return value: False
------------------------------------------------
CreateContainer(p1, p2)
local name: СоздатьКонтейнер
Has return value: True
------------------------------------------------
EnumCert(p1)
local name: EnumCert
Has return value: True
------------------------------------------------
FindCertificate(p1, p2)
local name: FindCertificate
Has return value: True
------------------------------------------------
Verify(p1, p2, p3, p4, p5, p6)
local name: Verify
Has return value: True
------------------------------------------------
ImportCertificate(p1, p2)
local name: ИмпортироватьСертификат
Has return value: True
------------------------------------------------
ImportCRu(p1, p2)
local name: ImportCRu
Has return value: True
------------------------------------------------
VerificationCertificate(p1, p2, p3, p4)
local name: VerificationCertificate
Has return value: True
------------------------------------------------
EnumCryptoProviders(p1, p2)
local name: EnumCryptoProviders
Has return value: True
------------------------------------------------
GetNextAlgorithm(p1, p2, p3, p4)
local name: ПолучитьСледующийАлгоритм
Has return value: True
------------------------------------------------
EnumKeyContainers(p1, p2)
local name: ПолучитьСледующийКонтейнерКлючей
Has return value: True
------------------------------------------------
GetParentalCertificate(p1, p2)
local name: GetParentalCertificate
Has return value: True
------------------------------------------------
GetCRu(p1, p2, p3, p4, p5, p6, p7)
local name: GetCRu
Has return value: True
------------------------------------------------
CreateRequestCertificate(p1, p2, p3, p4)
local name: СоздатьЗапросНаСертификат
Has return value: True
------------------------------------------------
CreateContainerAndRequestCertificate()
local name: CreateContainerAndRequestCertificate
Has return value: True
------------------------------------------------
BindCertToContainerAndSystemStore(p1, p2, p3)
local name: УстановитьСертификатВКонтейнерИХранилище
Has return value: True
------------------------------------------------
GetPublicKey(p1)
local name: ПолучитьОткрытыйКлюч
Has return value: True
------------------------------------------------
GetTempFolder()
local name: ПолучитьКаталогВременныхФайлов
Has return value: True
------------------------------------------------
CreateCryptoManager(p1, p2, p3)
local name: СоздатьМенеджераКриптографии
Has return value: False
------------------------------------------------
GetPublicKeyAlgorithmOIDFromCert(p1)
local name: GetPublicKeyAlgorithmOIDFromCert
Has return value: True
------------------------------------------------
c14n_body(p1, p2, p3)
local name: c14n_body
Has return value: True
------------------------------------------------
TransformSMEV(p1)
local name: TransformSMEV
Has return value: True
------------------------------------------------
GetLastError()
local name: ПолучитьОшибку
Has return value: True
------------------------------------------------
GetVersion()
local name: ПолучитьВерсию
Has return value: True
Properties:
------------------------------------------------
CryptoProviderPath
local name: ПутьККриптопровайдеру
Readable: True
Writable: True
------------------------------------------------
SilentMode
local name: ЗапретитьПользовательскийИнтерфейс
Readable: True
Writable: True
------------------------------------------------
CryptoProviderName
local name: ИмяКриптопровайдера
Readable: True
Writable: True
------------------------------------------------
CryptoProviderType
local name: ТипКриптопровайдера
Readable: True
Writable: True
------------------------------------------------
StoreName
local name: ИмяХранилища
Readable: True
Writable: False
------------------------------------------------
OIDMap
local name: СоответствиеOID
Readable: True
Writable: True
------------------------------------------------
ErrorList
local name: СписокОшибок
Readable: True
Writable: False
------------------------------------------------
DoNotShowErrorMessage
local name: НеВыводитьСообщенияОбОшибках
Readable: True
Writable: True