Podepsání/pečetění hash

Metoda webové služby SignHash umožňuje vytvořit podpis/pečeť k hash libovolného dokumentu nebo dat.

Výpočet hash provádí volající aplikace, která je zodpovědná za správnost výpočtu hashe. Pro správné vytvoření podpisu/pečeti k danému hash je nutné, aby odpovídal také hashovací algoritmus.

Vrácený podpis/pečeť k hash je třeba odpovídajícím způsobem vložit do dat dokumentu (dle specifikací ETSI) nebo uchovat u daného souboru (v případě externího CMS podpisu).

Popis služby včetně WSDL schématu a příklad požadavku a odpovědi pro SOAP 1.1 a SOAP 1.2 je umístěn na https://rsmtest.secusign.eu/Core.asmx?op=SignHash.

Struktura požadavku v rozhraní SOAP 1.1

POST /Core.asmx HTTP/1.1
Host: rsmtest.secusign.eu
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://software602.com/secusign/SignHash"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <SignHash xmlns="http://software602.com/secusign/">
      <Hash>base64Binary</Hash>
      <HashAlgOID>string</HashAlgOID>
      <SignatureFormat>int</SignatureFormat>
      <Params>string</Params>
    </SignHash>
  </soap:Body>

Vstupní parametry metody

<Hash>
[povinný element]

Vstupní hodnota Popis

Base64Binary

Vypočtený Hash dokumentu, resp. dat, kódovaný v Base64

Pro výpočet kódovaného Base64 sha256 hash lze využít např. openssl

openssl sha256 -binary test.pdf >hash.bin

certutil -encode hash.bin hash.b64

nebo třeba online aplikace:

<HashAlgOID>
[povinný element]

Vstupní hodnota Popis

String

OID hashovacího algoritmu použitého pro výpočet. Například pro hashovací algoritmus SHA256 to je OID: 2.16.840.1.101.3.4.2.1.

<SignatureFormat>
[nepovinný element]

Vstupní hodnota Popis

Int

Typ podpisu. Hodnoty:

  • 0 = CMS (CAdES detached) [výchozí],

  • 1 = PKCS1 signature,

  • 2 = PKCS1 signature, ale parametr Hash obsahuje přímo DigestInfo (struktura obsahující hash dokumentu a OID použitého hash algoritmu).

<Params>
[nepovinný element]

Vstupní hodnota Popis

String

Nepovinné, aktuálně se nevyužívá.

Struktura odpovědi na požadavek v rozhraní SOAP 1.1

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <SignHashResponse xmlns="http://software602.com/secusign/">
      <SignHashResult>int</SignHashResult>
      <SignedData>base64Binary</SignedData>
      <SigningCert>base64Binary</SigningCert>
      <StatusMessage>string</StatusMessage>
    </SignHashResponse>
  </soap:Body>
</soap:Envelope>

Výstupní parametry metody

<SignHashResult>

Návratová hodnota Popis

Int

Výsledek metody signHash (podepsání hash certifikátem). 0 = v pořádku, jinak dojde k chybě popsané ve StatusMessage.

<SignedData>

Návratová hodnota Popis

Base64Binary

Podepsaná data ve formátu CMS nebo PKCS1 kódovaná v Base64.

<SigningCert>

Návratová hodnota Popis

Base64Binary

Data X.509 certifikátu použitého pro podpis/pečeť kódovaná v Base64. Ze získaných dat lze po dekódování zjistit např. vystavitel certifikátu, pro koho byl certifikát vystaven, platnost certifikátu od-do, kryptografický otisk (hash) a další informace.

<StatusMessage>

Návratová hodnota Popis

String

Obsahuje podrobnější popis chyby v případě, že dojde k problému.

Příklad volání

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <SignHash xmlns="http://software602.com/secusign/">
      <Hash>WF+N/nCzu8+YMA9PII2bQRH/V1hYEUdt8KSJuPCqnCI=</Hash>
      <HashAlgOID>2.16.840.1.101.3.4.2.1</HashAlgOID>
      <SignatureFormat>0</SignatureFormat>
      <Params/>
    </SignHash>
  </soap:Body>
</soap:Envelope>