/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2015, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gws.api;
import javax.xml.soap.SOAPMessage;
/**
* API сервиса для встраивания подписи в xml-документ
*/
public interface XmlSignatureInjector {
/**
* Встроить подпись
*
* @param wrappedAppData данные обернутые в тэг AppData
* @return тег AppData с встроенной подписью
*/
String injectSpToAppData(WrappedAppData wrappedAppData);
/**
* Встроить ЭП-ОВ в заголовок SOAP сообщения
*
* @param message
* @param signature
* @return
*/
void injectOvToSoapHeader(SOAPMessage message, Signature signature);
/**
* Подготовить сообщение для подписи
*
* @param message SOAP-сообщение
* @param bodyHash хэш тэга Body
*/
void prepareSoapMessage(SOAPMessage message, byte[] bodyHash);
/**
* Подготовить сруктуру блока AppData для встраивания подписи СП
*
* @param clientRequest данные потребителя
*
* @param isSignatureLast позиция дорбавления подписи
*
* @return нормализованный блок SignedInfo для получения подписи
*/
byte[] prepareAppData(ClientRequest clientRequest, boolean isSignatureLast, XmlNormalizer normalizer, CryptoProvider cryptoProvider);
/**
* Подготовить сруктуру блока AppData для встраивания подписи СП
*
* @param serverResponse данные поставщика
*
* @param isSignatureLast позиция дорбавления подписи
*
* @return нормализованный блок SignedInfo для получения подписи
*/
byte[] prepareAppData(ServerResponse serverResponse, boolean isSignatureLast, XmlNormalizer normalizer, CryptoProvider cryptoProvider);
}