XSign aláíró modul programozói leírás

Verzió:3.3.1.16

Leírás

Az alábbi dokumentáció az xsign.dll aláíró modul leírása fejlesztők részére. Ezen dokumentumnak nem tartalma:

Azok az információk, melyek a header fájlokból egyértelműen kiderülnek, nem kerülnek bele ebbe a dokumentációba. Ilyen információnak tekinthetők a típusdefiníciók, bizonyos függvényparaméterek.

Az interfészen az összes be- és kimeneti string (XS_CHAR_PTR) kódolása UTF-8.

Használat

A modul használatához szükségesek a következő modulok:

Az MFC és C runtime dll-ek a http://www.microsoft.com/en-us/download/details.aspx?id=40784 csomag telepítésével is beszerezhetők.

Tudnivalók:

A XadesSignerLocale_*.* elnevezésű fájlok az általuk megjelölt nyelvet támogatják. Amennyiben az adott nyelvre nincsen szükség, a hozzá tartozó modulok elhagyhatóak.

Regisztráció

A fejlesztői modul használható regisztráció nélkül. (A szoftver nem ingyenes ebben az esetben sem, pontos árakért és licenc információkért keresse a Microsec zrt-t) Ebben az esetben minden funkcionalitás elérhető és teljes értékű, amennyiben Microsec e-Szignó hitelesítés szolgáltató által kiadott tanúsítványokkal használják. Más hitelesítés szolgáltató által kiadott tanúsítványokkal nem működik teljes körűen a fejlesztőeszköz.

Amennyiben a regisztráció megtörténik, akkor a fejlesztőeszköz teljes értékű és teljes funkcionalitású lesz.

A regisztrációhoz egy regisztrációs fájlra van szükség, amit a modul inicializálásakor kell megadni. A regisztrációs fájlt a Microsec zrt. munkatársai tudják kiállítani a licence megvásárlása után vagy a modul képes előállítani egy regisztrációs kulcs megadásával.

Több szálon történő naplózás

Több szálú használat esetén a XS_SetOption() XSO_LOG_FILE_PATH, XSO_LOG_FILE_PATH_EX, XSO_DEBUG_CALLBACK és XSO_DEBUG_CALLBACK_EX használatával szálankénti naplózást lehet beállítani.

Abban az esetben, ha egy szál nem állít be naplózást, akkor a fő szál naplózási beállításait használja. A XSO_SESSION_FORKINSTANCE XS_SetOption() paraméter a szülő szál naplózási beállításait csak akkor másolja, ha a gyermek szálban még nincs beállított naplózás.

Minden szál ami állít naplózást, a megnyitott naplófájl felszabadításához illetve callback referencia törléséhez NULL pValue pareméterrel kell meghívnia naplózási beállítást. XSO_SESSION_FORKINSTANCE használata esetén a XSO_SESSION_RELEASEINSTANCE hívás elvégzi ezt a felszabadítást.
Ha több szál ugyanazt a naplófájlt vagy callback-ot állítja be, akkor a naplózás szálbiztos.

Egy naplófájlhoz vagy callbackhez -még ha több szál külön állítja is be- csak egy naplózási szint tartozhat.

xsign konstansok

Visszatérési értékek:

  • XSR_OK (0x00000000) - Helyes működés, nem történt hiba a funkció futása közben.
  • XSR_ARGUMENTS_BAD (0x00000001) - A függvény bemeneti paraméterei helytelenek, vagy nem várt bemeneti paraméter került megadásra. Ezért a futás végrehajtás előtt leáll.
  • XSR_FUNCTION_FAILED (0x00000002) - A függvény futása közben hiba keletkezett, ezért a futás leáll. A hiba oka nem definiált.
  • XSR_INVALID_HANDLE_ERROR (0x00000003) - A függvénynek paraméterként átadott handle érvénytelen. Ennek egyik oka lehet, hogy az adott handle-t már fölszabadították.
  • XSR_FILE_READ_ERROR (0x00000004) - A bemeneti fájlt nem lehet olvasni. Ez a hiba jöhet, ha a fájl nem található vagy a fájlt más folyamat már olvassa.
  • XSR_FILE_WRITE_ERROR (0x00000005) - Az adott fájlt nem lehet írni. Ez a hiba akkor jöhet, ha a fájl nem található vagy a fájl írásvédett.
  • XSR_OUT_OF_MEMORY (0x00000006) - A függvény futása közben nem sikerült a memóriafoglalási művelet. Ennek oka lehet, hogy nincs elég memória.
  • XSR_MODULE_NOT_FOUND (0x00000007) - Az xsign.dll futtatásához szükséges modul hiányzik, vagy nem érhető el. Az xsign által használt modulokat a "Használat" fejezet tartalmazza.
  • XSR_NOT_INITIALIZED (0x00000008) - Használat előtt inicializálni kell az xsignt, amennyiben ez nem történik meg, ez a hibaüzenet jön bizonyos függvényeknél.
  • XSR_ACTION_CANCELLED (0x00000009) - Amennyiben a felhasználó megszakítja a működést, akkor ez a visszatérési érték.
  • XSR_CERTIFICATE_INVALID (0x0000000A) - A folyamatban használt tanúsítvány érvénytelen. Ennek lehet az oka, hogy a gyökér tanúsítvány ismeretlen, a tanúsítvány vissza van vonva vagy a tanúsítvány lejárt.
  • XSR_INCOMPLETE_VALIDATION (0x0000000B) - A tanúsítvány validálása nem volt teljes. Ezen hibaüzenet esetén az aláírás sikeresen elkészül, de az aláírási folyamat nem teljes. Ennek számos oka lehet. Például nem sikerült időbélyeget kérni az időbélyeges aláírásra, vagy az OCSP szolgáltató nem volt elérhető.
  • XSR_END_OF_ITERATION (0x0000000C) - Ha dokumentumot, vagy aláírást (időbélyeget) keresünk iteráció segítségével, akkor ez a hibakód jelzi az iteráció végét, azaz nincs több elem a listában.
  • XSR_NOT_A_DOSSIER (0x0000000D) - Különálló XML aláírás estén ez a visszatérés értéke az XS_OpenDossier() függvénynek. Ekkor a megnyitott dokumentum csak olvasható.
  • XSR_NOT_IMPLEMENTED (0x0000000E) - A meghívott funkcionalitás az adott operációs rendszeren nem támogatott, ezért nincs implementálva.
  • XSR_NOT_REGISTERED (0x0000000F) - A funkció használatához szükséges a regisztrált e-Szignó használata.
  • XSR_INPUT_NOT_XML (0x00000010) - A bemenet XML fájlt vár, de más formátum érkezett.
  • XSR_SIGNATURE_CORRUPT (0x00000011) - Az aláírás sérült.
  • XSR_INVALID_OPERATION (0x00000012) - A művelet nem értelmezett vagy nem hajtható végre az adott környezetben.
  • XSR_BAD_PIN (0x00000013) - Hibás PIN-kód.
  • XSR_NO_SUCH_FILE (0x00000014) - A keresett fájl vagy könyvtár nem található.
  • XSR_PROTOCOL_ERROR (0x00000015) - A protokoll futása során hiba lépett fel.
  • XSR_PDF_SETTINGS_ERROR (0x00000016) - A pdf beállításai hibásak.
  • XSR_BAD_FILE_FORMAT (0x00000017) - A fájl formátuma hibás.
  • XSR_CERT_NOT_REGISTERED (0x00000018) - A tanúsítvány nem használható a jelenlegi e-Szignó regisztrációval.
  • XSR_BAD_USER_PASS (0x00000019) - Hibás felhasználó név vagy jelszó.

xsign függvények

XS_RV XS_GetFunctionList(XS_FUNCTION_LIST_PTR_PTR ppFunctionList)

Ez a függvény az xsign belépési pontja.

Ennek segítségével lehet lekérni az aláíró funkcionalitást megvalósító függvényhalmazt.

XS_RV XS_Initialize(XS_INITIALIZE_DATA_PTR pData)

Az xsign-t használat előtt inicializálni kell ezen függvény segítségével. A bemeneti paraméterben megadott könyvtárba ideiglenes fájlokat fog elhelyezni a program, ezért oda írási jogosultságának kell lennie.

Paraméterek:

XS_INITIALIZE_DATA_PTR pData
typedef struct initialize_struct
{
    XS_ULONG       structSize;
    XS_CHAR_PTR    pWorkDir;
    XS_CHAR_PTR    pRegFile;
    XS_CHAR_PTR    pSDKPassword;
} XS_INITIALIZE_DATA, XS_PTR XS_INITIALIZE_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pWorkDir – NULL-lal lezárt karakterlánc, ami a munkakönyvtárat adja meg.
  • pRegFile – a regisztrációs fájl elérési helyét és nevét tartalmazó karakterláncra mutató pointer
  • pSDKPassword – az SDK jelszó, amennyiben a regisztráció típusa megköveteli annak használatát

XS_RV XS_Finalize(XS_FINALIZE_DATA_PTR pData)

A futás végeztével meg kell hívni a XS_Finalize() függvényt, hogy a lefoglalt memóriaterületeket felszabadítsa. Az XS_Finalize() hatására érvénytelenné válnak a korábban használt XS_HANDLE típusú változók.

Paraméterek:

XS_FINALIZE_DATA_PTR pData

pData – mindig NULL értékű.

XS_RV XS_NewDossier(XS_NEW_DOSSIER_DATA_PTR pData, XS_DOSSIER_HANDLE_PTR pDossierHandle)

Új e-aktát hoz létre. A korábban létrehozott e-aktákat nem érinti az új dokumentum létrehozása; azaz több e-aktán is lehet párhuzamosan dolgozni. A dokumentumhoz tartozó környezet is inicializálódik a függvény meghívásával, így például külön URL cache jön léte minden új dokumentumhoz.

Paraméterek:

XS_NEW_DOSSIER_DATA_PTR pData

Bemeneti paraméter, értéke lehet NULL.

typedef struct new_dossier_struct
{
    XS_ULONG   structSize; 
    XS_BOOL    dontCreateFrame; 
} XS_NEW_DOSSIER_DATA, XS_PTR XS_NEW_DOSSIER_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • dontCreateFrame – Amennyiben a változó értéke XS_TRUE, nem jön létre e-akta, csak a hozzá tartozó környezet inicializálódik.
XS_DOSSIER_HANDLE_PTR pDossierHandle

Kimeneti paraméter, értéke nem lehet NULL. Amennyiben a végrehajtás sikeres, az érték az új e-aktára hivatkozó HANDLE.

XS_RV XS_FreeDossier(XS_FREE_DOSSIER_DATA_PTR pData, XS_DOSSIER_HANDLE_PTR pDossierHandle)

Felszabadítja a már létrehozott e-aktát és a hozzá tartozó környezeti változókat.

Paraméterek:

XS_FREE_DOSSIER_DATA_PTR pData

Értéke NULL.

XS_DOSSIER_HANDLE_PTR pDossierHandle

Bemeneti paraméter, értéke nem lehet NULL. Handle a felszabadítani kívánt e-aktára. Sikeres felszabadítás után a handle értéke NULL-ra állítódik.

XS_RV XS_SaveDossier(XS_DOSSIER_HANDLE dossierHandle, XS_SAVE_DOSSIER_DATA_PTR pData)

Elmenti az e-aktát.

Paraméterek:

XS_DOSSIER_HANDLE dossierHandle

Az elmenteni kívánt e-aktára hivatkozó HANDLE. Bemeneti paraméter.

XS_SAVE_DOSSIER_DATA_PTR pData

Ez a struktúra adja meg a mentés paramétereit.

typedef struct save_dossier_struct
{
	XS_ULONG	structSize;
	XS_CHAR_PTR	pFilePath;
	XS_BUFFER_PTR	pBuffer; 
} XS_SAVE_DOSSIER_DATA, XS_PTR XS_SAVE_DOSSIER_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pFilePath – Bemeneti paraméter. A mentendő fájl nevét kell megadni teljes elérési úttal. Értéke lehet NULL. Amennyiben értéke NULL, a pBuffer változó kap értéket.
  • pBuffer – Kimeneti paraméter. Ha a pFilePath értéke NULL, akkor kap ez a változó értéket. Egy belső puffer címét kapja meg a változó. Ezen a címen található az e-akta. Egy NULL karakterrel lezárt karakterláncra mutat a memóriacím.

XS_RV XS_InsertDocument(XS_DOSSIER_HANDLE dossierHandle, XS_INSERT_DOCUMENT_DATA_PTR pData, XS_DOCUMENT_HANDLE_PTR pDocumentHandle)

Létező e-aktába dokumentumot illeszt be. A dokumentum címe a beillesztett fájl neve lesz. A dokumentum címe később megváltoztatható. Windows operációs rendszeren az alkalmazás automatikusan felismeri a fájl MIME típusát, ha az be van regisztrálva a Windowsba.

Megjegyzés:

Linux operációs rendszeren eltérően működik a Windowsos viselkedésétől.

Paraméterek:

XS_DOSSIER_HANDLE dossierHandle

Bemeneti paraméter. Ezzel a dokumentum mutató segítségével lehet megadni, hogy melyik e-aktába kerüljön beillesztésre a további paraméterekben megadott dokumentum.

XS_INSERT_DOCUMENT_DATA_PTR pData

Bemeneti paraméter. A beillesztendő dokumentum elérési útját tartalmazza.

typedef struct insert_document_struct
{
	XS_ULONG	structSize;
	XS_CHAR_PTR	pFilePath;
	XS_BUFFER_PTR	pBuffer; 
	XS_CHAR_PTR	pMIMEType;
	XS_CHAR_PTR	pExtension;
	XS_BOOL		dontCompress;
 } XS_INSERT_DOCUMENT_DATA, XS_PTR XS_INSERT_DOCUMENT_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pFilePath – a beillesztendő dokumentum elérési útja. NULL karakterrel lezárt karakterlánc mutató.
  • pBuffer – ha nem fájlból, hanem memóriából szeretnénk átadni a beillesztendő dokumentumot, akkor pFilePath értékének NULL-nak kell lennie és ezen paraméter segítségével kell megadni a memóriacímet.
  • pMIMEType – a beillesztendő dokumentum MIME típusa. Értéke lehet NULL, ekkor Windows operációs rendszereken automatikusan felismeri a MIME típust, Linux operációs rendszeren pedig text/plain alapértelmezett értéket kap.
  • pExtension – a beillesztendő dokumentum fájlkiterjesztése. Amennyiben nem kerül megadásra, akkor a fájlnév és a MIME-típus alapján igyekszik az e-Szignó meghatározni azt.
  • dontCompress – megadhatjuk vele, hogy a beillesztett fájlt tömörítse-e. pValue értékéke XS_TRUE/XS_FALSE lehet. XS_TRUE esetén nem tömörít a program. Alapértelmezett érték az XS_FALSE.
XS_DOCUMENT_HANDLE_PTR pDocumentHandle

Kimeneti paraméter. A beillesztett dokumentumra hivatkozó HANDLE-re mutató pointer. Ezzel lehet később műveleteket végezni a dokumentumon.

XS_RV XS_ExportDocument(XS_DOCUMENT_HANDLE documentHandle, XS_EXPORT_DOCUMENT_DATA_PTR pData)

Megnyitott e-aktából lehet exportálni dokumentumokat. Kimásolja a beillesztett fájlt a fájlrendszerbe, vagy egy megadott memóriaterületre.

Paraméterek:

XS_DOCUMENT_HANDLE documentHandle

Bemeneti paraméter. Az exportálandó dokumentumra hivatkozó HANDLE.

XS_EXPORT_DOCUMENT_DATA_PTR pData

Bemeneti paraméter. A dokumentum exportálására vonatkozó adatokat tartalmaz.

typedef	struct export_document_struct
{
	XS_ULONG	structSize;
	XS_CHAR_PTR	pFilePath;
	XS_BUFFER_PTR	pBuffer;
	XS_BOOL		dontDecrypt;
} XS_EXPORT_DOCUMENT_DATA, XS_PTR XS_EXPORT_DOCUMENT_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pFilePath – elérési út, ahova exportálni szeretnénk a dokumentumot. NULL karakterrel lezárt karakterlánc mutató.
  • pBuffer – ha nem fájlba, hanem memóriába szeretnénk exportálni a dokumentumot, akkor pFilePath értékének NULL-nak kell lennie és ezen paraméter segítségével kell megadni a memóriacímet.
  • dontDecrypt – nem/igen típusú változó, mely megadja, hogy titkosított dokumentum esetén kérjük-e annak visszafejtését.

Megjegyzések:

Ha a dokumentum nem volt titkosítva, akkor a dontDecrypt paraméter értékének nincs hatása.

Ha a dokumentum titkosítva volt, akkor a dontDecrypt paraméter XS_TRUE értéke esetén a titkosított dokumentumot PKCS7 formátumban BASE64 kódolva kapjuk.

XS_RV XS_SignDocument(XS_DOCUMENT_HANDLE documentHandle, XS_SIGN_DOCUMENT_DATA_PTR pData, XS_SIGNATURE_HANDLE_PTR pSignatureHandle)

Egy e-aktában található dokumentumot ír alá a függvény. Az aláírás folyamata és az elkészülő aláírás nagymértékben függ a korábban beállított környezeti paraméterektől.

A beállítható paraméterek leírását lásd az XS_SetOption() függvény leírásánál.

Paraméterek:

XS_DOCUMENT_HANDLE documentHandle

Bemeneti paraméter. Az aláírni kívánt dokumentumra hivatkozó HANDLE.

XS_SIGN_DOCUMENT_DATA_PTR pData

Az aláírás tulajdonságait adhatjuk meg a struktúra segítségével. Bemeneti paraméter. A struktúra egyetlen eleme sem kötelező, kivéve a structSize.

typedef struct sign_properties_struct
		{
			XS_ULONG						structSize; 
			XS_CHAR_PTR						pSignaturePolicy; 
			XS_CHAR_PTR						pSigPlacePostalCode; 
			XS_CHAR_PTR						pSigPlaceSettlement; 
			XS_CHAR_PTR						pSigPlaceProvince; 
			XS_CHAR_PTR						pSigPlaceCountry; 
			XS_CHAR_PTR						pSignerRole; 
			XS_CHAR_PTR						pCommitmentType;
			XS_ULONG						commentType;
			XS_INSERT_DOCUMENT_DATA_PTR		pCommentDoc;
		} XS_SIGN_PROPERTIES, XS_PTR XS_SIGN_PROPERTIES_PTR;
		 
  • structSize – a struktúra méretét tartalmazza
  • pSignaturePolicy – az aláírási szabályzat URL-je adható meg string formában.
  • pSigPlacePostalCode – az aláírás helyének az irányítószám része adható meg segítségével string formátumban
  • pSigPlaceSettlement – az aláírás helyének település része adható meg segítségével string formátumban
  • pSigPlaceProvince – az aláírás helyének megye része adható meg segítségével string formátumban
  • pSigPlaceCountry – az aláírás helyének ország része adható meg segítségével string formátumban
  • pSignerRole – az aláíró szerepe adható meg segítségével string formátumban
  • commentType – az aláíráshoz csatolható dokumentum típusa adható meg segítségével, lehetséges értékei:
    • #define XS_COMMENT_TYPE_CLAUSE 0x00000000
    • #define XS_COMMENT_TYPE_GLOSS 0x00000001
    • #define XS_COMMENT_TYPE_COMMENT 0x00000002
    • #define XS_COMMENT_TYPE_OPINION 0x00000003
  • pCommentDoc – az aláíráshoz csatolható dokumentum. Az XS_INSERT_DOCUMENT_DATA_PTR típusú struktúra segítségével adható meg a csatolandó dokumentum. Erről részletes leírás az XS_InsertDocument függvénynél található.
XS_SIGNATURE_HANDLE_PTR pSignatureHandle

Kimeneti paraméter. Helyes működés esetén a megadott címre másolja az aláírásra hivatkozó HANDLE-t.

XS_RV XS_CounterSignDocument(XS_DOCUMENT_HANDLE documentHandle, XS_SIGN_DOCUMENT_DATA_PTR pData, XS_SIGNATURE_HANDLE_PTR pSignatureHandle)

Egy e-aktában található dokumentumot és a rajta lévő összes aláírást írja alá a függvény. Az aláírás folyamata és az elkészülő ellenjegyzés nagymértékben függ a korábban beállított környezeti paraméterektől.

A beállítható paraméterek leírását lásd az XS_SetOption() függvény leírásánál.

Paraméterek:

XS_DOCUMENT_HANDLE documentHandle

Bemeneti paraméter. Az aláírni kívánt dokumentumra hivatkozó HANDLE.

XS_SIGN_DOCUMENT_DATA_PTR pData
Későbbi felhasználásra fenntartva. Értéke NULL. 
XS_SIGNATURE_HANDLE_PTR pSignatureHandle

Kimeneti paraméter. Helyes működés esetén a megadott címre másolja az aláírásra hivatkozó HANDLE-t.

XS_RV XS_SignFiles(XS_SIGN_FILES_DATA_PTR pData)

Különálló aláírást készít. Az aláírás folyamata és az elkészülő aláírás nagymértékben függ a korábban beállított környezeti paraméterektől.

A beállítható paraméterek leírását lásd az XS_SetOption() függvény leírásánál.

Paraméterek:

XS_SIGN_FILES_DATA_PTR pData
typedef struct sign_files_struct
{
	XS_ULONG			structSize;
	XS_DOSSIER_HANDLE		dossierHandle;
	XS_CHAR_PTR			pURLList; 
	XS_CHAR_PTR			pMimeTypeList;
	XS_SIGN_PROPERTIES_PTR pSignProperties;
} XS_SIGN_FILES_DATA, XS_PTR XS_SIGN_FILES_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • dossierHandle – az e-aktára hivatkozó HANDLE, amibe a különálló aláírást csináljuk. Bemeneti paraméter.
  • pURLList – Bemeneti paraméter. Azon fájlok listája, melyeket alá szeretnénk írni. A lista egyes elemeit szóköz választja el. A függvény „file” és „http” protokollon keresztül képes beolvasni a beszúrandó fájlokat. Ha egyéb protokollt akarunk használni, akkor az XS_SetOption() függvényt kell használni az XSO_ADD_TO_URL_CACHE paraméterrel. Ennek részletes leírását lásd az XS_SetOption() függvény leírásánál.
  • pMimeTypeList – Bemeneti paraméter. A pURLList paraméterben megadott dokumentumoknak a MIME típusát adhatjuk meg. A lista egyes elemeit szóközökkel kell elválasztani. Nem kötelező megadni.
  • pSignProperties - Bemeneti paraméter. Az aláírás tulajdonságait adhatjuk meg a paraméter segítségével. A paraméter részletes leírása az XS_SIGN_PROPERTIES_PTR leírásánál található.

XS_RV XS_SignFrame(XS_DOSSIER_HANDLE dossierHandle, XS_SIGN_FRAME_DATA_PTR pData, XS_SIGNATURE_HANDLE_PTR pSignatureHandle)

Egy keretaláírást hoz létre az e-aktában. Az akta aláírása egyben aláírja az aktában lévő összes dokumentumot. Ez azt jelenti, hogy az e-akta tartalma nem módosítható, nem illeszthetünk be újabb dokumentumokat és nem készíthetünk újabb aláírást a dokumentumokra. Ezzel szemben az aktára további keretaláírások helyezhetők el. Az aláírás folyamata és az elkészülő aláírás nagymértékben függ a korábban beállított környezeti paraméterektől.

A beállítható paraméterek leírását lásd az XS_SetOption() függvény leírásánál.

Paraméterek:

XS_DOSSIER_HANDLE dossierHandle

Bemeneti paraméter. Az aláírni kívánt e-aktára hivatkozó HANDLE –t kell megadni.

XS_SIGN_FRAME_DATA_PTR pData

Az aláírás tulajdonságait adhatjuk meg a struktúra segítségével. Bemeneti paraméter. Paraméter részletes leírása az XS_SignDocument függvénynél található.

XS_SIGNATURE_HANDLE_PTR pSignatureHandle

Kimeneti paraméter. Sikeres működés esetén a pointer által hivatkozott címre kerül a keretaláírásra hivatkozó HANDLE.

XS_RV XS_CounterSignFrame(XS_DOSSIER_HANDLE dossierHandle, XS_SIGN_FRAME_DATA_PTR pData, XS_SIGNATURE_HANDLE_PTR pSignatureHandle)

Egy ellenjegyzést készít az e-aktában. Az akta aláírása egyben aláírja az aktában lévő összes dokumentumot, aláírást és a többi keretaláírást is. Ez azt jelenti, hogy az e-akta tartalma nem módosítható, nem illeszthetünk be újabb dokumentumokat és nem készíthetünk újabb aláírást a dokumentumokra. Ezzel szemben az aktára további keretaláírások helyezhetők el. Az aláírás folyamata és az elkészülő aláírás nagymértékben függ a korábban beállított környezeti paraméterektől.

A beállítható paraméterek leírását lásd az XS_SetOption() függvény leírásánál.

Paraméterek:

XS_DOSSIER_HANDLE dossierHandle

Bemeneti paraméter. Az aláírni kívánt e-aktára hivatkozó HANDLE–t kell megadni.

XS_SIGN_FRAME_DATA_PTR pData

Bemeneti paraméter. Az aláíráshoz szükséges paramétereket tartalmazó struktúrára mutató pointer. Későbbi felhasználásra fenntartva, értéke NULL.

XS_SIGNATURE_HANDLE_PTR pSignatureHandle

Kimeneti paraméter. Sikeres működés esetén a pointer által hivatkozott címre kerül a keretaláírásra hivatkozó HANDLE.

XS_RV XS_TimeStampDocument(XS_DOCUMENT_HANDLE documentHandle, XS_TIME_STAMP_DOCUMENT_DATA_PTR pData, XS_SIGNATURE_HANDLE_PTR pSignatureHandle)

Időbélyeget készít a megadott dokumentumra. Az időbélyeg szolgáltató az XS_SetOption függvény segítségével állítható be, ennek a leírása az XS_SetOption() függvény leírásánál található.

Paraméterek:

XS_DOCUMENT_HANDLE documentHandle

Bemeneti paraméter. Az időbélyegezni kívánt dokumentumra hivatkozó HANDLE –t kell megadni.

XS_TIME_STAMP_DOCUMENT_DATA_PTR pData

Bemeneti paraméter. A dokumentum időbélyegzéséhez szükséges paramétereket tartalmazó struktúrára mutató pointer. Későbbi felhasználásra fenntartva, értéke NULL.

XS_SIGNATURE_HANDLE_PTR pSignatureHandle

Kimeneti paraméter. Sikeres működés esetén a pointer által hivatkozott címre kerül a dokumentum időbélyegére hivatkozó HANDLE.

XS_RV XS_TimeStampFrame(XS_DOSSIER_HANDLE dossierHandle, XS_TIME_STAMP_FRAME_DATA_PTR pData, XS_SIGNATURE_HANDLE_PTR pSignatureHandle)

Időbélyeget készít az e-aktára. Az akta időbélyege egyben aláírja az aktában lévő összes dokumentumot. Ez azt jelenti, hogy az e-akta tartalma nem módosítható, nem illeszthetünk be újabb dokumentumokat és nem készíthetünk újabb aláírást a dokumentumokra. Ezzel szemben az aktára további aláírások, időbélyegek helyezhetők el. Az időbélyeg szolgáltató az XS_SetOption() függvény segítségével állítható be.

Paraméterek

XS_DOSSIER_HANDLE documentHandle

Bemeneti paraméter. Az időbélyegezni kívánt e-aktára hivatkozó HANDLE –t kell megadni.

XS_TIME_STAMP_DOCUMENT_DATA_PTR pData

Bemeneti paraméter. Az e-akta időbélyegzéséhez szükséges paramétereket tartalmazó struktúrára mutató pointer. Későbbi felhasználásra fenntartva, értéke NULL.

XS_SIGNATURE_HANDLE_PTR pSignatureHandle

Kimeneti paraméter. Sikeres működés esetén a pointer által hivatkozott címre kerül az e-akta időbélyegére hivatkozó HANDLE.

XS_RV XS_ValidateSignature(XS_SIGNATURE_HANDLE signatureHandle, XS_VALIDATE_SIGNATURE_DATA_PTR pData)

Dokumentumon, vagy e-aktán lévő aláírást illetve időbélyeget ellenőriz. Az aláírást a beállított XS_SetOption() függvény által beállított XAdES típus alapján próbálja validálni. Ha magasabb XAdES típus van beállítva ellenőrzéskor, mint az ellenőrizendő aláírásé, akkor a folyamat kiegészíti az aláírást a megfelelő kellékekkel, hogy megfeleljen a beállításoknak.

Paraméterek:

XS_SIGNATURE_HANDLE signatureHandle

Bemeneti paraméter. Az ellenőrizendő aláírás, vagy időbélyegre hivatkozó HANDLE.

XS_VALIDATE_SIGNATURE_DATA_PTR pData

Bemeneti paraméter. Az aláírás vagy időbélyeg ellenőrzéséhez szükséges paramétereket tartalmazó struktúrára mutató pointer. Későbbi felhasználásra fenntartva, értéke NULL.

XS_RV XS_SetOption(XS_OPTION_ID optionId, XS_VOID_PTR pValue)

Az optionId paraméterben megadott beállításnak a pValue értéket állítja be. A típusa függ a beállítandó paramétertől. A beállítások rendszerint (szálanként) globális, a többi függvény működésére is kihatással levő változásokat eredményeznek.

Paraméterek:

XS_OPTION_ID optionId / XS_VOID_PTR pValue

Bemeneti paraméter mind a kettő. Az optionId beállítani kívánt paramétert adja meg. Az optionId által meghatározott paraméter egyedi pValue értékeket követel meg. Az alábbiakban találhatóak az érvényes optionId / pValue párosok.

Az optionId paraméter a következő értékeket veheti föl:

XSO_XADES_TYPE

Az aláíráshoz és aláírás ellenőrzéshez használt XAdES típust lehet beállítani. Ekkor a pValue a következő értékeket veheti föl:

  • XS_NON_XADES
  • XS_XADES_BES
  • XS_XADES_EPES
  • XS_XADES_T
  • XS_XADES_C - ez a típus létrehozáskor ill. kibővítéskor nem adható meg!
  • XS_XADES_X - ez a típus létrehozáskor ill. kibővítéskor nem adható meg!
  • XS_XADES_X_L - ez a típus létrehozáskor ill. kibővítéskor nem adható meg!
  • XS_XADES_A

Ha ETSI EN 319 * szabványok alapján szeretne aláírást készíteni, akkor használja az XSO_SIGNATURE_LEVEL kapcsolót.

XSO_SIGNATURE_LEVEL

Az aláíráshoz és aláírás ellenőrzéshez használt AdES baseline/extended profilt lehet vele beállítani. A pValue értékei a következőek lehetnek:

  • XS_SIGLEVEL_UNDEF
  • XS_SIGLEVEL_B_B
  • XS_SIGLEVEL_B_T
  • XS_SIGLEVEL_B_LT
  • XS_SIGLEVEL_B_LTA
  • XS_SIGLEVEL_E_BES
  • XS_SIGLEVEL_E_EPES
  • XS_SIGLEVEL_E_T
  • XS_SIGLEVEL_E_X
  • XS_SIGLEVEL_E_X_L
  • XS_SIGLEVEL_E_A

Megjegyzés: Az XSO_SIGNATURE_LEVEL és a XSO_XADES_TYPE opciók csak egymástól függetlenül használhatóak, egyszerre megadva a két paramétert az xsign hibát fog jelezni.

XSO_REVOCATION_CHECKING_MODE

A visszavonás-ellenőrzés módját lehet beállítani. A beállított érték vonatkozik az aláíráskori és az ellenőrzéskori visszavonás-ellenőrzésre is. Amennyiben az ellenőrizendő aláírás már tartalmaz magában csatolt visszavonási információkat, akkor az alkalmazás azok alapján ellenőriz, ha az egyezik a beállított visszavonási móddal. Azaz, ha például az archív aláírás OCSP válaszokat tartalmaz magában, és a visszavonás ellenőrzés is OCSP-re van állítva, akkor a tárolt válasz alapján ellenőriz az alkalmazás. Az archív aláírás ellenőrzése függetlenül ettől a beállítástól kikapcsolható. Ekkor a pValue a következő értékeket veheti föl:

  • XS_REV_CHECK_OFF - A visszavonás-ellenőrzés teljesen ki van kapcsolva.
  • XS_REV_CHECK_CRL - A visszavonás-ellenőrzés CRL alapján történik.
  • XS_REV_CHECK_OCSP - A visszavonás-ellenőrzés OCSP alapján történik.
  • XS_REV_CHECK_OCSP_CRL - A visszavonás-ellenőrzést először OCSP alapján próbálja meg elintézni az alkalmazás, amennyiben ez nem volt sikeres, CRL alapján próbál visszavonást ellenőrizni.
XSO_TIMESTAMP_URL_LIST

A paraméter az időbélyeg szolgáltatók URL listáját állítja be. Időbélyeges aláírás és különálló időbélyeg készítésekor is ebből a listából választ az alkalmazás, hogy melyik szolgáltatóhoz forduljon időbélyegért. A lista első elemével próbálkozik először, amennyiben ez nem sikerül megpróbál a következő helyről időbélyeget kérni, és így tovább. A pValue paraméterben, szóközzel elválasztott karakterlánc formájában kell a listát megadni.

XSO_CRL_URL_LIST

A felhasználandó CRL szolgáltatók listáját lehet megadni ezen opció segítségével. Általában akkor van szükség e beállításra, ha az ellenőrizendő tanúsítványok nem tartalmazzák a rájuk érvényes CRL szolgáltató URL-jét az AIA kiterjesztésben. A pValue paraméterben, szóközzel elválasztott karakterlánc formájában kell a listát megadni.

Megjegyzés: WINCE operációs rendszeren nem támogatott ez az opció.

XSO_OCSP_URL_LIST

A felhasználandó OCSP szolgáltatók listáját lehet megadni ezen opció segítségével. Általában akkor van szükség e beállításra, ha az ellenőrizendő tanúsítványok nem tartalmazzák a rájuk érvényes OCSP szolgáltató URL-jét az AIA kiterjesztésben. A pValue paraméterben, szóközzel elválasztott karakterlánc formájában kell a listát megadni.

Megjegyzés: WINCE operációs rendszeren nem támogatott ez az opció.

XSO_MAIN_WINDOW

Megjegyzés: ez az opció csak Windows operációs rendszereken támogatott.

Bizonyos esetekben az alkalmazás dialógus ablakok segítségével akar kommunikálni a felhasználóval. Ezen opció segítségével a megjelenő ablakok szülőablakát adhatjuk meg. Ebben az esetben a paraméter típusa egy HWND kell, hogy legyen.

XSO_STATUS_CALLBACK

Az alkalmazás működése során státusz üzeneteket ad arról, hogy miként folyik a feldolgozás. Az XSO_STATUS_CALLBACK segítségével megadhatunk egy függvényt, amely feldolgozza (megjeleníti a felhasználó számára) az üzeneteket. A pValue értéke a feldolgozó függvényre mutató pointer kell, hogy legyen, ahol a függvény típusa:

typedef XS_CALLBACK_FUNCTION(XS_RV, XS_STATUSCALLBACK)(XS_CHAR_PTR pMessage);

A pMessage paraméter kapja meg a státusz üzenetet.

Figyelem! Az üzenetek feldolgozását végző függvény nem hívhat meg XSign függvényt, mert az azokban elhelyezett zárak miatt blokkolódás alakulhat ki.

Amennyiben nem XSR_OK-val tér vissza a függvény, a feldolgozási folyamat megszakad.

XSO_WORK_SILENT

Megjegyzés: ez az opció csak Windows operációs rendszereken támogatott.

Ez a beállítás befolyásolja a működés közben a felhasználóval való kommunikációt és a megjelenő üzeneteket. Ha a pValue paraméter értéke:

  • XS_NON_SILENT - Minden üzenet megjelenik.
  • XS_SILENT - Az üzenetek nem jelennek meg a képernyőn, kivéve, ha valamely szükséges beállítás (pl. aláírói vagy autentikációs tanúsítvány, HTTP kapcsolódási jelszó) hiánya miatt a művelet végrehajtása sikertelen lenne – ezen esetben a megfelelő kiválasztó ablak megjelenik.
  • XS_FORCE_SILENT - Semmilyen ablakot és üzenetet nem küld a modul, akkor sem, ha emiatt meghiúsul a művelet végrehajtása.
  • XS_SILENT_WITH_STATUS - A státusz üzeneteken kívül semmilyen ablakot és üzenetet nem küld a modul, csak abban az esetben, ha valami miatt a művelet végrehajtása sikertelen lenne. (Ld. még XS_SILENT.) A státusz üzenetre beállítható egy callback függvény. Lásd előző paraméter.
  • XS_FORCE_SILENT_WITH_STATUS - A státusz üzeneteken kívül semmilyen ablakot és üzenetet nem küld a modul, akkor sem, ha emiatt meghiúsul a művelet végrehajtása. (Ld. még XS_FORCE_SILENT.) A státusz üzenetre beállítható egy callback függvény. Lásd előző paraméter.
XSO_ADD_TO_URL_CACHE

Megjegyzés: ez az opció WinCE operációs rendszeren nem támogatott.

Amennyiben adott URL-ről tölt le valamit az alkalmazás, akkor előtte a saját cache-ben keresi és ha ott megtalálta, akkor nem fordul az adott URL-hez. A cache az e-aktához tartozik, azaz ha új e-aktát hozunk létre pl. az XS_NewDossier() függvénnyel, akkor a cache is ürül. Ezen beállítás segítségével rendelhetünk egy URL-hez egy dokumentumot.

pValue értéke a következő struktúra

typedef struct add_to_url_cache_struct {
	XS_ULONG		structSize;
	XS_DOSSIER_HANDLE	dossierHandle;
	XS_CHAR_PTR		pURL;
	XS_BUFFER		buffer;
} XS_ADD_TO_URL_CACHE_DATA, XS_PTR XS_ADD_TO_URL_CACHE_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • dossierHandle – az e-aktára hivatkozó HANDLE.
  • pURL – a tárolni kívánt URL string.
  • buffer – a tárolni kívánt dokumentumra mutató puffer struktúra
XSO_WIN_DEFAULT_SIGNING_CERT_CONTEXT

Ezen paraméter segítségével beállíthatunk egy alapértelmezett aláírói tanúsítványt. Ha ez megtörtént, akkor aláírás kezdetekor az alkalmazás nem kéri, hogy válasszunk aláírói tanúsítványt. A pValue típusa PCERT_CONTEXT.

Ez az opció csak Windows operációs rendszereken támogatott.

XSO_LOG_FILE_PATH

A naplófájl helyét állítja be. A pValue értékeként kell megadni a fájlnevet teljes elérési úttal, ekkor a megadott fájlt megnyitja és a végéhez illeszti a tartalmat. A naplózási szintent automatikusan XS_LOG_LEVEL_DEBUG (4)-ra állítja. Amennyiben pValue értéke NULL, lezárja a már megnyitott naplófájlt.

XSO_LOG_FILE_PATH_EX

Ezen opció segítségével beállíthatjuk, hogy futás közben keletkezzen-e naplófájl. A naplózás módját a pValue értékével állíthatjuk. pValue típusa:

typedef struct log_file_path_ex_struct {
	XS_ULONG				structSize; 
	XS_ULONG				logLevel; 
	XS_CHAR_PTR				logFilePath;
	XS_ULONG				maxSizeOfLogFile;
} XS_LOG_FILE_PATH_EX_DATA, XS_PTR XS_LOG_FILE_PATH_EX_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • logLevel – a naplózás szintjét adja meg. Lehetséges értékei:
    • XS_LOG_LEVEL_ERROR - 1
    • XS_LOG_LEVEL_WARN - 2
    • XS_LOG_LEVEL_INFO - 3
    • XS_LOG_LEVEL_DEBUG - 4
  • logFilePath – a naplófájl elérési útját megadó string.
  • maxSizeOfLogFile - a naplófájlok maximális méretét adja meg bájtokban (ha a logfájl eléri ezt a méretet, új fájlt nyit, a régit pedig bezárja)

Amennyiben pValue vagy a logFilePath értéke NULL, lezárja a már megnyitott naplófájlt.

XSO_DEBUG_CALLBACK

Ezen opció segítségével egy callback függvényt adhatunk meg, mely a debug üzenetek feldolgozását végzi. A pValue értéke egy XS_STATUS_CALLBACK típusú függvény kell, hogy legyen. A naplózási szintent automatikusan XS_LOG_LEVEL_DEBUG (4)-ra állítja. Amennyiben pValue értéke NULL, törli a callback referenciát.

XSO_DEBUG_CALLBACK_EX

Ezen opció segítségével egy callback függvényt adhatunk meg, mely a debug üzenetek feldolgozását végzi A naplózás módját a pValue értékével állíthatjuk. pValue típusa:

typedef struct debug_callback_ex_struct {
	XS_ULONG				structSize; 
	XS_ULONG				debugLevel; 
	XS_DEBUGCALLBACK		debugCallback; 
} XS_DEBUG_CALLBACK_EX_DATA, XS_PTR XS_DEBUG_CALLBACK_EX_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • debugLevel – a naplózás szintjét adja meg. Lehetséges értékei:
    • XS_LOG_LEVEL_ERROR - 1
    • XS_LOG_LEVEL_WARN - 2
    • XS_LOG_LEVEL_INFO - 3
    • XS_LOG_LEVEL_DEBUG - 4
  • debugCallback – XS_STATUS_CALLBACK típusra mutató függvény pointer

Amennyiben pValue vagy debugCallback értéke NULL, törli a callback referenciát.

XSO_WIN_DEFAULT_TS_AUTH_CERT_CONTEXT

Időbélyeg szolgáltatóhoz való tanúsítvány alapú bejelentkezéshez tartozó tanúsítványt állíthatjuk be a pValue paraméter értékeként. pValue típusa PCERT_CONTEXT.

Ez az opció csak Windows operációs rendszereken támogatott.

XSO_WIN_DEFAULT_OCSP_AUTH_CERT_CONTEXT

OCSP szolgáltatóhoz való tanúsítvány alapú bejelentkezéshez tartozó tanúsítványt állíthatjuk be a pValue paraméter értékeként. pValue típusa PCERT_CONTEXT.

Ez az opció csak Windows operációs rendszereken támogatott.

XSO_WIN_DEFAULT_DECRYPTING_CERT_CONTEXT

Az opció segítségével beállítható az alapértelmezett titkosító tanúsítvány. A tanúsítványt pValue paraméterben adhatjuk meg, típusa PCERT_CONTEXT.

Ez az opció csak Windows operációs rendszereken támogatott.

XSO_WIN_DEFAULT_BASIC_AUTH

Az e-szigno.hu domainhez, így időbélyeg szolgáltatóhoz és OCSP szolgáltatóhoz tartozó login név/jelszó alapú bejelentkezéshez tartozó login nevet és jelszót állíthatjuk be. pValue típusa:

Ez az opció csak Windows operációs rendszereken támogatott.

typedef struct basic_auth_struct {
	XS_ULONG				structSize;
	XS_CHAR_PTR				pLogin;
	XS_CHAR_PTR				pPassword;
} XS_BASIC_AUTH_DATA, XS_PTR XS_BASIC_AUTH_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pLogin – a login névre mutató pointer.
  • pPassword – a jelszóra mutató pointer.
XSO_SIGNING_CERTIFICATE

Az aláíráshoz használni kívánt tanúsítványt állíthatjuk be a pValue értékeként. pValue típusa:

typedef struct signing_certificate_struct 
{
	XS_ULONG		structSize;
	XS_KEY_TYPE		keyType;
	XS_VOID_PTR		pData;
} XS_SIGNING_CERTIFICATE_DATA, XS_PTR XS_SIGNING_CERTIFICATE_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • keyType – a beállítandó pData típusát adja meg.
  • pData – a beállítandó keyType értékének megfelelő struktúrára mutató pointer.
  • keyType Lehetséges értékei:

    XS_KEYFORM_PFX

    PFX fájl. Ebben az esetben pData XS_PFX_KEY_DATA_PTR típusú kell legyen, melynek a következő a definíciója:

    typedef struct pfx_key_struct
    {
    XS_ULONG				structSize;
    XS_CHAR_PTR				pPath;
    XS_CHAR_PTR				pPassword;
    } XS_PFX_KEY_DATA, XS_PTR XS_PFX_KEY_DATA_PTR;			
    
    • structSize – a struktúra méretét tartalmazza
    • pPath – az aláíráshoz használni kívánt fájl elérési útját kell tartalmaznia.
    • pPassword – a PFX fájlhoz tartozó jelszóra mutató pointer.
    XS_KEYFORM_CERT

    Tanúsítvány fájl. Ebben az esetben pData XS_CERT_KEY_DATA_PTR típusú kell legyen, melyek a következő a definíciója:

    typedef struct cert_key_struct 
    {
    	XS_ULONG				structSize;
    	XS_CHAR_PTR				pPath;
    } XS_CERT_KEY_DATA, XS_PTR XS_CERT_KEY_DATA_PTR;
    
    • structSize – a struktúra méretét tartalmazza
    • pPath – az aláíráshoz használni kívánt fájl elérési útját kell tartalmaznia. Kétmenetes aláírás létrehozásakor – mikor is először létrejön egy félkész aláírás, majd a lenyomat külső aláírását követően beállítódik az aláírt lenyomat – használatos. Lásd még: XS_GetInformation(XSI_UNSIGNED_HASH_B64ED), XS_SetInformation(XSI_SIGNED_HASH_B64ED).
    XS_KEYFORM_PEM

    PEM formátumú kulcs és tanúsítvány fájl. Ebben az esetben a pData XS_PEM_KEY_DATA típusú kell legyen.

    typedef struct pem_key_struct {
    	XS_ULONG				structSize; 
    	XS_CHAR_PTR				pKeyPath;
    	XS_CHAR_PTR				pKeyPassword;
    	XS_CHAR_PTR				pCertPath; 
    } XS_PEM_KEY_DATA, XS_PTR XS_PEM_KEY_DATA_PTR;
    
    • structSize – a struktúra méretét tartalmazza
    • pKeyPath – a kulcsfájl elérési útja.
    • pKeyPassword – a kulcsfájlhoz tartozó jelszó.
    • pCertPath – a tanúsítványhoz tartozó elérési út.
    XS_KEYFORM_PKCS11

    PKCS#11-es dinamikusan betölthető függvénykönyvtár segítségével nyerjük ki az aláíró tanúsítványt és kulcsot. Ebben az esetben a pData XS_PKCS11_KEY_DATA típusú kell legyen.

    typedef struct pkcs11_key_struct {
    	XS_ULONG				structSize;
    	XS_CHAR_PTR				pPKCS11ModulePath;
    	XS_CHAR_PTR				keyRef;
    	XS_ULONG				keyRefType;
    	XS_CHAR_PTR				pKeyPassword;
    	XS_CHAR_PTR				pUserPIN;
    	XS_CHAR_PTR				pContextSpecificPIN;
    } XS_PKCS11_KEY_DATA, XS_PTR XS_PKCS11_KEY_DATA_PTR;
    • structSize – a struktúra méretét tartalmazza
    • pPKCS11ModulePath – a PKCS#11-es dinamikusan betölthető függvénykönyvtár elérési útja.
    • keyRef – a kulcs megkereséséhez használt azonosító, amely lehet az aláíró tanúsítványában szereplő név (Common Name - CN) vagy az aláíró tanúsítványának SHA-1-es lenyomata (SHA-1 fingerprint)
    • keyRefType – a kulcs megkereséséhez használt azonosító típusa; lehetséges értékei:
      • XS_PKCS11_KEY_REF_TYPE_CN
      • XS_PKCS11_KEY_REF_TYPE_SHA1_FINGERPRINT
    • pKeyPassword – a kulcs használatához szükséges jelszó (PIN kód). Elavult, helyette használja a pUserPIN-t és a pContenxtSpecificPIN-t.
    • pUserPIN – a kártya használatához szükséges PIN kód. (További információért olvassa el a PKCS#11: Cryptographic Token Interface Standard Version 2.20)
    • pContextSpecificPIN – a kulcs használatához szükségesPIN kód. (További információért olvassa el a PKCS#11: Cryptographic Token Interface Standard Version 2.20)

Példa :

XS_SIGNING_CERTIFICATE_DATA scd;
XS_PFX_KEY_DATA pfxd;
pfxd.structSize = sizeof(pfxd);
pfxd.pPath = "test_files/keys/peterke.pfx";
pfxd.pPassword = "12345";
scd.structSize = sizeof(scd);
scd.keyType = XS_KEYFORM_PFX;
scd.pData = &pfxd;
XS_SetOption(XSO_SIGNING_CERTIFICATE, &scd);
XSO_WIN_USE_CERT_STORE

pValue XS_FALSE értéke esetén a modul nem használja a Windows tanúsítványtárát. Alapértelmezett értéke XS_TRUE. Csak Windows operációs rendszereken értelmezett.

XSO_TRUSTED_CERT_DIR

Megjegyzés: ez az opció WinCE operációs rendszeren nem támogatott.

A megbízható gyökér hitelesítés szolgáltatók tanúsítványait tartalmazó könyvtárakat adhatjuk meg a paraméter segítségével. A pValue értéke a könyvtárak pontosvesszővel elválasztott elérési útjait tartalmazó string. Ennek a paraméternek csak akkor van értelme, ha a modul nem a Windows tanúsítványtárát használja, azaz XSO_WIN_USE_CERT_STORE == XS_FALSE

A korábbi beállításokat felülírja, akkor is, ha azokat a következő OptionId-k valameyikével állítottuk be: XSO_SIGNER_TRUSTED_CERT_DIR, XSO_TSA_TRUSTED_CERT_DIR, XSO_OCSP_TRUSTED_CERT_DIR

XSO_SIGNER_TRUSTED_CERT_DIR

Megjegyzés: ez az opció WinCE operációs rendszeren nem támogatott.

Az aláíás ellenőrzéskor használt megbízható gyökér hitelesítés szolgáltatók tanúsítványait tartalmazó könyvtárakat adhatjuk meg a paraméter segítségével. A pValue értéke a könyvtárak pontosvesszővel elválasztott elérési útjait tartalmazó string. Ennek a paraméternek csak akkor van értelme, ha a modul nem a Windows tanúsítványtárát használja, azaz XSO_WIN_USE_CERT_STORE == XS_FALSE

A korábbi beállításokat felülírja.

XSO_TSA_TRUSTED_CERT_DIR

Megjegyzés: ez az opció WinCE operációs rendszeren nem támogatott.

Az időbélyeg válaszok aláírásinak ellenőrzésekor használt megbízható gyökér hitelesítés szolgáltatók tanúsítványait tartalmazó könyvtárakat adhatjuk meg a paraméter segítségével. A pValue értéke a könyvtárak pontosvesszővel elválasztott elérési útjait tartalmazó string. Ennek a paraméternek csak akkor van értelme, ha a modul nem a Windows tanúsítványtárát használja, azaz XSO_WIN_USE_CERT_STORE == XS_FALSE

A korábbi beállításokat felülírja.
XSO_OCSP_TRUSTED_CERT_DIR

Megjegyzés: ez az opció WinCE operációs rendszeren nem támogatott.

Az OCSP válaszok aláírásinak ellenőrzésekor használt a megbízható gyökér hitelesítés szolgáltatók tanúsítványait tartalmazó könyvtárakat adhatjuk meg a paraméter segítségével. A pValue értéke a könyvtárak pontosvesszővel elválasztott elérési útjait tartalmazó string. Ennek a paraméternek csak akkor van értelme, ha a modul nem a Windows tanúsítványtárát használja, azaz XSO_WIN_USE_CERT_STORE == XS_FALSE

A korábbi beállításokat felülírja.

XSO_SSL_TRUSTED_CERT_DIR

Megjegyzés: ez az opció WinCE operációs rendszeren nem támogatott.

Megadhatjuk azoknak a könyvtáraknak az elérési útjait, amelyekben azok a tanúsítványok találhatóak, amelyeket a webserverek tanúsítványainak ellenőrzésekor megbízható tanúsítványnak fogadunk el. A pValue értéke a könyvtárak pontosvesszővel elválasztott elérési útjait tartalmazó string. Ennek a paraméternek csak akkor van értelme, ha a modul nem a Windows tanúsítványtárát használja, azaz XSO_WIN_USE_CERT_STORE == XS_FALSE

A korábbi beállításokat felülírja.

XSO_INTERMEDIATE_CERT_DIR

Megjegyzés: ez az opció WinCE operációs rendszeren nem támogatott.

A közbenső szintű tanúsítványokat tartalmazó könyvtárakat adhatjuk meg a paraméter segítségével. pValue értéke a könyvtárak pontosvesszővel elválasztott elérési útjait tartalmazó string. Ennek a paraméternek csak akkor van értelme, ha a modul nem a Windows tanúsítványtárát használja, azaz XSO_WIN_USE_CERT_STORE == XS_FALSE

XSO_CERT_AUTH_LIST

Megjegyzés: ez az opció WinCE operációs rendszeren nem támogatott.

Adott szerverekhez tartozó tanúsítvány alapú autentikációhoz tartozó információkat adhatunk meg egy listában. pValue értéke tartalmazza az autentikációs listát. Típusa:

typedef struct cert_auth_struct {
	XS_ULONG				hostCount;
	XS_HOST_CERT_AUTH_DATA_PTR   pHostData;
} XS_CERT_AUTH_DATA, XS_PTR XS_CERT_AUTH_DATA_PTR;
  • hostCount – a lista elemeinek száma
  • pHostData – az autentikációs listára mutató pointer, aminek a típusa:
    typedef struct host_cert_auth_struct {
    	XS_CHAR_PTR			pHostName;
    	XS_CHAR_PTR			pPFXPath;
    	XS_CHAR_PTR			pPFXPassword;
    } XS_HOST_CERT_AUTH_DATA, XS_PTR XS_HOST_CERT_AUTH_DATA_PTR;
    
    • pHostName – az autentikációt megkövetelő host
    • pPFXPath – az autentikációs PFX fájl elérési útja.
    • pPFXPassword – az autentikációs PFX fájlhoz tartalmazó jelszó.

Példa:

XS_HOST_CERT_AUTH_DATA hcad[1] = { 0 };
XS_CERT_AUTH_DATA cad;
memset(&cad, 0, sizeof(cad));
hcad[0].pHostName = "teszt.e-szigno.hu";
hcad[0].pPFXPath = "test_files/keys/tauth.pfx";
cad.hostCount = 1;
cad.pHostData = hcad;	
XS_SetOption(XSO_CERT_AUTH_LIST, &cad);
XSO_BASIC_AUTH_LIST

Megjegyzés: ez az opció WinCE operációs rendszeren nem támogatott.

Adott szerverekhez tartozó felhasználónév/jelszó alapú autentikációhoz tartozó információkat adhatunk meg egy listában. pValue értéke tartalmazza az autentikációs listát. Típusa:

typedef struct basic_auth_struct_2 {
	XS_ULONG				       hostCount;
	XS_HOST_BASIC_AUTH_DATA_PTR    pHostData;
} XS_BASIC_AUTH_DATA_2, XS_PTR XS_BASIC_AUTH_DATA_2_PTR;
  • hostCount – a lista elemeinek száma
  • pHostData – az autentikációs listára mutató pointer, aminek a típusa:
    typedef struct host_basic_auth_struct {
    	XS_CHAR_PTR				pHostName;
    	XS_CHAR_PTR				pUserName;
    	XS_CHAR_PTR				pPassword;
    } XS_HOST_BASIC_AUTH_DATA, XS_PTR XS_HOST_BASIC_AUTH_DATA_PTR;
    
    • pHostName – az autentikációt megkövetelő host
    • pUserName – felhasználói név.
    • pPassword – jelszó.

Példa:

XS_HOST_BASIC_AUTH_DATA hbad[1] = { 0 };
XS_BASIC_AUTH_DATA_2 bad;
memset(&bad, 0, sizeof(bad));
hbad[0].pHostName = "btsa.e-szigno.hu";
hbad[0].pUserName = "felhasznalo";
hbad[0].pPassword = "jelszo";
bad.hostCount = 1;
bad.pHostData = hbad;	
XS_SetOption(XSO_BASIC_AUTH_LIST, &bad);
XSO_PROXY_SETTINGS

Megjegyzés: ez az opció WinCE operációs rendszeren nem támogatott.

Ezen opció segítségével lehet beállítani, hogy az időbélyeg kérés, visszavonási információk lekérdezése és más internet hozzáférést megkövetelő műveletek milyen HTTP/1.1 proxy szerveren keresztül történjen.

pValue értékében kell megadni a proxy szerver elérhetőségeit, ennek típusa:

typedef struct proxy_settings_struct {
	XS_ULONG		structSize;
	XS_CHAR_PTR		pProxyAddress;
	XS_ULONG		proxyPort;
	XS_BOOL		bypassProxyForLocal;
	XS_CHAR_PTR		pUserName;
	XS_CHAR_PTR		pPassWord;
} XS_PROXY_SETTINGS_DATA, XS_PTR XS_PROXY_SETTINGS_DATA_PTR;
  • structSize – A struktúra méretét tartalmazza
  • pProxyAddress – Ez a string tartalmazza a proxy szerver IP címét.
  • proxyPort – A proxy szerver portját kell megadni.
  • bypassProxyForLocal – Boolean típusú változó, mely megadja, hogy a modul helyi címek estén használja-e a proxy beállításokat.
  • pUserName – Ez a string tartalmazza a proxy használatához szükséges felhasználónevet.
  • pPassWord – Ez a string tartalmazza a proxy használatához szükséges jelszót.
XSO_CONNECTION_TIMEOUT

Megjegyzés: ez az opció WinCE operációs rendszeren nem támogatott.

Ezen opció segítségével lehet beállítani, hogy az időbélyeg kérés, visszavonási információk lekérdezése és más internet hozzáférést megkövetelő műveletek mennyi ideig próbálkozzanak a kapcsolat felépítésével. pValue értékében kell megadni a timeout nagyságát milliszekundumokban. LDAP kapcsolódás esetén fixen 15 másodperc a timeout függetlenül a beállított értéktől.

XSO_CONNECTION_RETRY_COUNT

Ezen opció segítségével lehet beállítani, hogy bizonyos sikertelen HTTP kapcsolódások esetén (ha nem kap semmilyen választ, 503-as hiba, illetve TRYLATER OCSP válasz esetén) hányszor próbáljon meg újra csatlakozni. Alapértelmezett értéke 0.

XSO_CONNECTION_RETRY_DELAY

Ha az XSO_CONNECTION_RETRY_COUNT be van állitva, akkor ezen opció segítségével lehet beállítani, hogy mennyi milliszekundumot várjon az újrapróbálkozások között. Alapértelmezett értéke 0.

XSO_SESSION_GETHANDLE

Ha a pValue NULL, akkor a fő szál globális beállításaira hivatkozó handle-t adja vissza. Ha a pValue egy XS_SESSION_HANDLE típusú változóra mutat, akkor annak a szálnak a beállitásaira hivatkozó handle-t adja vissza.

XSO_SESSION_FORKINSTANCE

Egy adott szál beállításait átmásolja az aktuális szál részére. Amennyiben pValue értéke NULL, a processz fő szálának beállításai kerülnek másolásra, egyéb esetben pValue egy, az XSO_SESSION_GETHANDLE opcióval lekért XS_SESSION_HANDLE típusú értékre mutat. Ilyenkor a handle által hivatkozott szál beállításai másolódnak át az aktuális szálhoz.

Ha a saját szálunk handle-jét adjuk meg akkor XSR_INVALID_OPERATION hibát kapunk.

XSO_SESSION_RELEASEINSTANCE

Egy adott szál beállításainak felszabadítására használható ezen opció. Amennyiben pValue értéke NULL, az aktuális szál beállításai szabadulnak fel, egyébként pValue egy, az XSO_SESSION_GETHANDLE opcióval lekért XS_SESSION_HANDLE típusú értékre kell, hogy mutasson.

Ha a fő szálat próbáljuk felszabadítani, akkor XSR_INVALID_OPERATION hibát kapunk.

XSO_STATUS_CALLBACK_EX

Ezen opció segítségével a státuszüzenetek callback függvényét állíthatjuk be, ahol a callback függvény a státuszüzeneten kívül egy kontextus pointert is paraméterül kap. pValue egy XS_STATUS_CALLBACK_EX_DATA típusú struktúrára mutat, melynek definíciója:

typedef struct status_callback_ex_struct {
	XS_ULONG				structSize;
	XS_STATUSCALLBACK_EX	pCallback;
	XS_VOID_PTR				pContext;
} XS_STATUS_CALLBACK_EX_DATA, XS_PTR XS_STATUS_CALLBACK_EX_DATA_PTR;
  • structSize – a struktúra mérete
  • pCallback – a callback függvény címe (típusdefinícióját lásd alább)
  • pContext – a callback függvénynek adandó kontextus pointer.

A callback függvény típusdefiníciója:

typedef XS_CALLBACK_FUNCTION(XS_RV, XS_STATUSCALLBACK_EX)(
	XS_CHAR_PTR		pMessage, 
	XS_VOID_PTR		pContext 
);
  • pMessage – a státuszüzenetet tartalmazó C string
  • pContext – a kontextus pointer.

Figyelem! Az üzenetek feldolgozását végző függvény nem hívhat meg XSign függvényt, mert az azokban elhelyezett zárak miatt blokkolódás alakulhat ki.

Amennyiben nem XSR_OK-val tér vissza a függvény, a feldolgozási folyamat megszakad.

XSO_USE_AIA_FOR_OCSP

Ezen opció segítségével beállíthatjuk, hogy a tanúsítványban található AIA URL-t használja-e a modul az OCSP szolgáltatás eléréséhez. Amennyiben pValue értéke XS_TRUE akkor a tanúsítványban található URL-t használja az alkalmazás. XS_FALSE érték esetén a korábban az XSO_OCSP_URL_LIST opció által beállított URLeket fogja használni a modul OCSP kéréshez.

XSO_REFERENCE_CANONICALIZATION

Az XMLDSIG szabványnak megfelelő XML kanonizálások közül melyiket használja (c14n_incl, c14n_incl_wc, c14n_excl, c14n_excl_wc). Lehetséges értékek:

  • XS_REF_CAN_C14N_INCL - Inkluzív kanonizáció
  • XS_REF_CAN_C14N_INCL_WC - Inkluzív kanonizáció megjegyzéssel
  • XS_REF_CAN_C14N_EXCL - Exkluzív kanonizáció
  • XS_REF_CAN_C14N_EXCL_WC - Exkluzív kanonizáció megjegyzéssel
XSO_TIMESTAMP_REQUEST_POLICY_ID

Az opció segítségével megadható az időbélyeg kérésben a hitelesítési rend OID. pValue értékéke az OID-t tartalmazó string.

XSO_TIMESTAMP_CERT_REQUEST

Az opció segítségével megadható az időbélyeg kérésben, hogy a válasz tartalmazza-e az időbélyeg szerver tanúsítványát. pValue értékéke XS_TRUE/XS_FALSE lehet.

XSO_WIN_SHOW_DATA_TO_BE_SIGNED

Az opció segítségével megadható, hogy az alkalmazás aláírás esetén megjelenítse-e az aláírni kíván dokumentumot. Ez a funkció csak windows operációs rendszereken érhető el. pValue értéke XS_TRUE/XS_FALSE lehet.

XSO_ENABLE_CURL_DEBUG

Az opció segítségével megadható, hogy a futás során keletkezett naplófájl tartalmazzon-e a hálózati kommunikációra vonatkozó információkat. pValue értékéke XS_TRUE/XS_FALSE lehet. Figyelem! Az XS_TRUE érték használata során megjelenhetnek autentikációs információk, jelszavak is a naplóban.

XSO_RECIPIENT_CERTIFICATE_PATH_LIST

A titkosításhoz használni kívánt címzett tanúsítványokat állíthatjuk be, elérési útvonal alapján a pValue értékeként. pValue típusa:

typedef struct recipient_cert_struct 
{
	XS_ULONG			certCount; 
	XS_CERT_KEY_DATA_PTR	pCertData; 
} XS_RECIPIENT_CERT_DATA, XS_PTR XS_RECIPIENT_CERT_DATA_PTR;
  • certCount – a titkosítás címzettjeinek, azaz a tanúsítványoknak a számát adja meg.
  • pCertData – a titkosító tanúsítványokat tartalmazó lista. Típusa:
typedef struct cert_key_struct 
{
	XS_ULONG				structSize;
	XS_CHAR_PTR				pPath;
} XS_CERT_KEY_DATA, XS_PTR XS_CERT_KEY_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pPath – a titkosításhoz használni kívánt fájl elérési útját kell tartalmaznia.

Példa :

XS_CERT_KEY_DATA reciplist[1] = {0};
XS_RECIPIENT_CERT_DATA rec_data;
memset(&rec_data, 0, sizeof(rec_data));
reciplist[0].pPath = "certs/encrypting.cer";
reciplist[0].structSize = sizeof(reciplist);
rec_data.certCount = 1;
rec_data.pCertData = reciplist;	
pXSign->XS_SetOption(XSO_RECIPIENT_CERTIFICATE_PATH_LIST, &rec_data);
pXSign->XS_Encrypt(hDossier);
XSO_RECIPIENT_CERTIFICATE_LIST

A titkosításhoz használni kívánt címzett tanúsítványokat állíthatjuk be a pValue értékeként. pValue típusa:

typedef struct recipient_cert_list
{
	XS_ULONG				structSize; /* contains size of this struct */
	XS_ULONG				certCount; /* number of certificates */
	XS_VOID_PTR_PTR				pCertList; /* list of certificates */
} XS_RECIPIENT_CERT_LIST, XS_PTR XS_RECIPIENT_CERT_LIST_PTR;
  • structSize – a struktúra méretét tartalmazza
  • certCount – a titkosítás címzettjeinek, azaz a tanúsítványoknak a számát adja meg.
  • pCertList – a titkosító tanúsítványokat tartalmazó lista. XS_VOID_PTR_PTR-ként kapjuk az adatot, amit XS_RECIPIENT_CERT_LIST_PTR-é castolunk.
XSO_ENCRYPTING_CERTIFICATE

A titkosított akta vagy dokumentum megtekintéséhez használni kívánt tanúsítványt kell megadni. A beállított kulcshoz tartozó tanúsítvány bekerül a címzettek közé az XS_Encrypt()függvény használata esetén (titkosításkor). pValue típusa:

typedef struct encrypting_certificate_struct {
	XS_ULONG				structSize; 
	XS_KEY_TYPE				keyType; 
	XS_VOID_PTR				pData; 
} XS_ENCRYPTING_CERTIFICATE_DATA, XS_PTR XS_ENCRYPTING_CERTIFICATE_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • keyType – a kulcs típusát, azaz pData típusát lehet megadni. Lehetséges értékei: XS_KEYFORM_PFX, XS_KEYFORM_PKCS11
  • pData – a titkosító tanúsítványt tartalmazó struktúra. Típusa:

XS_KEYFORM_PFX esetén:

typedef struct pfx_key_struct {
	XS_ULONG				structSize; 
	XS_CHAR_PTR				pPath; 
	XS_CHAR_PTR				pPassword; 
} XS_PFX_KEY_DATA, XS_PTR XS_PFX_KEY_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pPath – a titkosításhoz használni kívánt fájl elérési útját kell tartalmaznia (ez egy PKCS #12, azaz PFX fájl, esetleg egy tanúsítványt és kulcsot is tartalmazó PEM csomag - „bag” - lehet).
  • pPassword – a titkosításhoz használni kívánt fájl elérési útját kell tartalmaznia.

XS_KEYFORM_PKCS11 esetén:

typedef struct pkcs11_key_struct {
	XS_ULONG				structSize;
	XS_CHAR_PTR				pPKCS11ModulePath;
	XS_CHAR_PTR				keyRef;
	XS_ULONG				keyRefType;
	XS_CHAR_PTR				pKeyPassword;
	XS_CHAR_PTR				pUserPIN;
	XS_CHAR_PTR				pContextSpecificPIN;
} XS_PKCS11_KEY_DATA, XS_PTR XS_PKCS11_KEY_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pPKCS11ModulePath – a PKCS#11-es dinamikusan betölthető függvénykönyvtár elérési útja.
  • keyRef – a kulcs megkereséséhez használt azonosító, amely lehet az aláíró tanúsítványában szereplő név (Common Name - CN) vagy az aláíró tanúsítványának SHA-1-es lenyomata (SHA-1 fingerprint)
  • keyRefType – a kulcs megkereséséhez használt azonosító típusa; lehetséges értékei:
    • XS_PKCS11_KEY_REF_TYPE_CN
    • XS_PKCS11_KEY_REF_TYPE_SHA1_FINGERPRINT
  • pKeyPassword – a kulcs használatához szükséges jelszó (PIN kód). (Inkább használja a pUserPIN és/vagy pContextSpecificPIN paraméter)
  • pUserPIN – a PKCS#11-es token felhasználói PIN kódja. Olyankor kell megadni, ha a tokennel olyan kriptográfiai műveletet (aláírás vagy kititkosítás) szeretnénk végrehajtani, ami hitelesítést igényel. (További információért olvassa el a PKCS#11: Cryptographic Token Interface Standard Version 2.20)
  • pContextSpecificPIN – a PKCS#11-es token környezet specifikus PIN kódja. Olyankor kell megadni, ha egy kulcs minden használat (aláírás vagy kititkosítás) előtt hitelesítést igényel. Nincs alapértelmezett értéke. (További információért olvassa el a PKCS#11: Cryptographic Token Interface Standard Version 2.20)
XSO_VALIDATE_ARCHIVE_TIMESTAMP

Az opció segítségével beállíthatjuk, hogy az e-Szignó ellenőrizze-e az archív időbélyeget. pValue típusa XS_BOOL kell legyen.

XSO_WAIT_FOR_GRACEPERIOD

Amennyiben ezen opció értéke „XS_TRUE”, akkor az e-Szignó csak az aláírás (megbízható) időpontja után kibocsátott CRL-eket vagy OCSP válaszokat fogadja el. Alapértelmezett értéke „XS_TRUE”. Javasoljuk, hogy OCSP alapú visszavonás-ellenőrzés esetén használja az „XS_TRUE” beállítást. pValue típusa XS_BOOL kell legyen.

XSO_DIGEST_ALGORITHM

A paraméter az aláírás létrehozása során használt lenyomatképző algoritmust állítja be. A pValue paraméterben következő értékek szerepelhetnek:

  • XS_DIGEST_ALGORITHM_SHA_1 - SHA1 esetén az aláírási algoritmus RSA-SHA1,
  • XS_DIGEST_ALGORITHM_SHA_256 - SHA256 esetén az aláírási algoritmus RSA-SHA256,
  • XS_DIGEST_ALGORITHM_SHA_384 - SHA384 esetén az aláírási algoritmus RSA-SHA384,
  • XS_DIGEST_ALGORITHM_SHA_512 - SHA512 esetén az aláírási algoritmus RSA-SHA512.
XSO_LOCALE

A státuszüzenetek nyelvét állíthatjuk be a paraméter segítségével. pValue értéke egy string. A string lehetséges értékei: „eng”, „ger”, „hun”.

XS_ESIGN_DOCUMENT

StartSession-nek átadandó dokumentumlista dokuemntum elemei

typedef struct esign_doc_url
{
	XS_ULONG structSize;
	XS_CHAR_PTR docName;
	XS_CHAR_PTR docUrl;
	XS_CHAR_PTR docUrlExpiry;
} XS_ESIGN_DOCUMENT, XS_PTR XS_ESIGN_DOCUMENT_PTR;
  • structSize – a struktúra méretét tartalmazza
  • docName – a dokumentum neve.
  • docUrl – a dokumentum letöltési url-je.
  • docUrlExpiry – a dokumentum letöltési url-jének lejárati ideje.
XSO_CUSTOM_NAMESPACE

A létrehozandó e-aktáknak egyedi névteret lehet beállítani a paraméter segítségével. Ezen függvény segítségével hozhatunk létre a kliens alkalmazásban látható ügyviteli sémákhoz hasonló aktákat. pValue típusa:

typedef struct custom_namespace_struct {
	XS_ULONG				structSize; 
	XS_CHAR_PTR				customNamespace; 
	XS_CHAR_PTR				schemaLocation; 
} XS_CUSTOM_NAMESPACE_DATA, XS_PTR XS_CUSTOM_NAMESPACE_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • customNamespace – a névteret tartalmazó karakterláncot kell itt megadni.
  • schemaLocation – az XML séma elérését lehet megadni.
XSO_VALIDATE_OCSP_RESPONDER

Az opció segítségével beállíthatjuk, hogy az e-Szignó ellenőrizze-e az OCSP válaszadó visszavonási állapotát. pValue típusa XS_BOOL kell legyen.

XSO_XADES_VERSION

A paraméter az aláírás létrehozása során használt XAdES szabvány verzióját állítja be. A pValue paraméterben következő értékek szerepelhetnek:

  • XS_XADES_VERSION_1_2_2 (verzió: 1.2.2)
  • XS_XADES_VERSION_1_3_2 (verzió: 1.3.2).
  • XS_XADES_VERSION_1_4_1 (verzió: 1.4.1).
  • XS_XADES_VERSION_1_4_2 (verzió: 1.4.2).
  • XS_XADES_VERSION_EN_1_0_0 (verzió: EN-1.0.0).

Az alapértelmezett beállítás az 1.4.2-es szabvány. XSO_SIGNATURE_LEVE beállítás esetén a verzió kötelezően EN-1.0.0. szabvány szerinti kell, hogy legyen.

XSO_PDF_SIGNING_DATA

Az opció segítségével a PDF aláírások létrehozása során használt paraméterek alapértelmezett értékét változtathatjuk meg. A pValue típusa:

typedef struct pdf_signing_data_struct
{
	XS_ULONG	  structSize;
	XS_ULONG	  item;
	XS_CHAR_PTR	  signReason;
	XS_CHAR_PTR   signLocation;
	XS_ULONG      signImgMode;
	XS_CHAR_PTR	  signImgPath;
	XS_BYTE_PTR	  signImgBuff;
	XS_ULONG      signImgBuffLen;
	XS_LONG       signImgPage;
	XS_ULONG      signImgAlign;
	XS_ULONG      signImgSize;
	XS_ULONG      signImgSizeMode;
	XS_ULONG      signImgPaddingX;
	XS_ULONG      signImgPaddingY;
	XS_ULONG      signImgPaddingXMode;
	XS_ULONG      signImgPaddingYMode;
	XS_CHAR_PTR	  signImgTitle;
	XS_ULONG	  signImgTitleMode;
	XS_ULONG	  signImgTitleFontSize;
	XS_ULONG	  signImgTitlePaddingX;
	XS_ULONG	  signImgTitlePaddingY;
	XS_ULONG	  signImgTitleAlign;
	XS_BOOL       signImgAdjPosDisable;
	XS_ULONG	  pades;
	XS_CHAR_PTR   signaturePolicy;
	XS_CHAR_PTR   signaturePolicyOID;
	XS_CHAR_PTR   commitmentTypeOID;
	XS_CHAR_PTR   contentHintDescription;
	XS_CHAR_PTR   contentHintType;
} XS_PDF_SIGNING_DATA, XS_PTR XS_PDF_SIGNING_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • item – bitmaszk, amely megadja, hogy melyik mező értékét akarjuk módosítani. A következő makrók bináris VAGY kapcsolatával lehet beállítani:
    • XS_PDFSDI_REASON - signReason mezőt módosítja
    • XS_PDFSDI_LOCATION - signLocation mezőt módosítja
    • XS_PDFSDI_IMG_MODE – signImgMode mezőt módosítja
    • XS_PDFSDI_IMG_PATH - signImgPath mezőt módosítja
    • XS_PDFSDI_IMG_BUFF - signImgBuff és a signImgBuffLen mezőket módosítja
    • XS_PDFSDI_PAGENO - signImgPage mezőt módosítja
    • XS_PDFSDI_ALIGN - signImgAlign mezőt módosítja
    • XS_PDFSDI_SIZE - signImgSize és a signImgSizeMode mezőket módosítja
    • XS_PDFSDI_PADDING_X - signImgPaddingX és a signImgPaddingXMode mezőket módosítja
    • XS_PDFSDI_PADDING_Y - signImgPaddingY és a signImgPaddingYMode mezőket módosítja
    • XS_PDFSDI_TITLE – signImgTitle mezőt módosítja
    • XS_PDFSDI_TITLEMODE – signImgTitleMode mezőt módosítja
    • XS_PDFSDI_TITLEFONTSIZE – signImgTitleFontSize mezőt módosítja
    • XS_PDFSDI_TITLEPADDINGX – signImgTitlePaddingX mezőt módosítja
    • XS_PDFSDI_TITLEPADDINGY – signImgTitlePaddingY mezőt módosítja
    • XS_PDFSDI_TITLEALIGN – signImgTitleAlign mezőt módosítja
    • XS_PDFSDI_PADES – pades mezőt módosítja.
    • XS_PDFSDI_ADJPOSDISABLE – signImgAdjPosDisable mezőt módosítja.
    • XS_PDFSDI_SIGPOLICY – signaturePolicy mezőt módosítja.
    • XS_PDFSDI_SIGPOLICYOID – signaturePolicyOID mezőt módosítja.
    • XS_PDFSDI_COMMITMENTTYPEOID – commitmentTypeOID mezőt módosítja.
    • XS_PDFSDI_CONTENTHINTDESC – contentHintDescription mezőt módosítja.
    • XS_PDFSDI_CONTENTHINTTYPE – contentHintType mezőt módosítja.
  • signReason – Az aláírás reason mezőjét adhatjuk meg vele.
  • signLocation - Az aláírás location mezőjét adhatjuk meg vele.
  • signImgMode - Látható aláírás képének megjelenítési módja. Lehetséges értékei:
    • XS_PDF_IMGMODE_ENA – látható a kép
    • XS_PDF_IMGMODE_DIS – nincs látható aláírás
  • signImgPath – Látható aláírás készítésekor megadhatunk egy fájlrendszerben megtalálható képfájlt.
  • signImgBuff – Látható aláírás előre betöltött állományból.
  • signImgBuffLen – Az signImgBuff mérete bájtokban.
  • signImgPage – Megadja, hogy a látható aláírást hányadik oldalon kívánjuk elhelyezni a dokumentumban. (A negatív oldalszámok a dokumentum végétől számítódnak, tehát a -1 megadása az utolsó oldalra helyezi az aláírást.)
  • signImgAlign – Megadható, hogy a látható aláírást az oldalon melyik lapsarokhoz igazítsa a program. Lehetséges értékei:
    • XS_PDF_SIGPOS_LEFT_BOTTOM – bal alsó sarok (alapértelmezett)
    • XS_PDF_SIGPOS_LEFT_TOP – bal felsó sarok
    • XS_PDF_SIGPOS_RIGHT_BOTTOM – jobb alsó sarok
    • XS_PDF_SIGPOS_RIGHT_TOP – jobb felső sarok
  • signImgSize – a kép átméretezése a megadott értékre.
  • signImgSizeMode– a kép átméretezésének módja. Lehetséges értékei:
    • XS_PDF_SIGSIZEMODE_MAX - Ha a kép magassága nagyobb, mint a szélessége akkor ugyanaz, mint a XS_PDF_SIGSIZEMODE_HEIGHT, különben a XS_PDF_SIGSIZEMODE_WIDTH módot használjuk. Ez az alapértelmezett üzemmód.
    • XS_PDF_SIGSIZEMODE_WIDTH - A signImgSize-ban megadott érték lesz az új szélessége az átméretezett képnek.
    • XS_PDF_SIGSIZEMODE_HEIGHT - A signImgSize -ban megadott érték lesz az új magassága az átméretezett képnek.
    • XS_PDF_SIGSIZEMODE_MAX_PC – Azonos, mint a XS_PDF_SIGSIZEMODE_MAX, de a signImgSize az oldal méretének százalékában van megadva.
    • XS_PDF_SIGSIZEMODE_WIDTH_PC – Azonos, mint a XS_PDF_SIGSIZEMODE_WIDTH, de a signImgSize az oldal méretének százalékában van megadva. (100% az oldal teljes szélessége)
    • XS_PDF_SIGSIZEMODE_HEIGHT_PC – Azonos, mint a XS_PDF_SIGSIZEMODE_ HEIGHT, de a signImgSize az oldal méretének százalékában van megadva. (100% az oldal teljes magassága)
  • signImgPaddingX – Megadhatjuk a látható aláírás vízszintes távolságát a lap szélétől.
  • signImgPaddingY – Megadhatjuk a látható aláírás függőleges távolságát a lap szélétől.
  • signImgPaddingXMode – a signImgPaddingX megadásának módja. Lehetséges értékei:
    • XS_PDF_PADDINGMODE_PX - képpontban megadott érték
    • XS_PDF_PADDINGMODE_PC - az oldal méretének százalékában van megadva
  • signImgPaddingYMode – a signImgPaddingY megadásának módja. Lehetséges értékei, mint a signImgPaddingXMode-nál.
  • signImgTitle - A látható PDF aláíráson opcionálisan elhelyezhető szöveg. Alapértelmezett értéke az aláíró tanúsítványában szereplő Subject.CN értéke. A szövegbe elhelyezhetőek az aláírás időpontjához vagy az aláírói tanúsítványhoz kapcsolódó adatok is:
    • %TSD% - Aláírás dátuma %Y-%m-%d formátumban (lokális idő).
    • %TSH% - Aláírás időpontja %H:%M:%SZ formátumban (lokális idő).
    • %CN% - Aláírói tanúsítványban szereplő Subject.CN (common name) mező értéke.
    • %OU% - Aláírói tanúsítványban szereplő Subject.OU (organization unit) mező értéke.
    • %O% - Aláírói tanúsítványban szereplő Subject.O (organization) mező értéke.
    • %L% - Aláírói tanúsítványban szereplő Subject.L (locality) mező értéke.
    • %T% - Aláírói tanúsítványban szereplő Subject.T (title) mező értéke.
    • %SERIAL% - Aláírói tanúsítvány sorozatszáma.
  • signImgTitleMode - Látható aláírás képe feletti szöveg megjelenítési módja. Lehetséges értékei:
    • XS_PDF_IMGTITLEMODE_ENA – látható a szöveg
    • XS_PDF_IMGTITLEMODE_DIS – nincs felirat a látható aláírás felett
  • signImgTitleFontSize - A megjelenített szöveg betűmérete. Alapértelmezett értéke: 22
  • signImgTitlePaddingY - A látható aláíráson elhelyezett szöveg, név vízszintes irányú távolsága a látható aláírás képének szélétől. Ha nincs megadva a látható aláírás képe és nincs is tiltva a megjelenítése, akkor ennek a paraméternek nincs hatása.
  • signImgTitlePaddingY - A látható aláíráson elhelyezett szöveg, név függőleges irányú távolsága a látható aláírás képének szélétől. Ha nincs megadva a látható aláírás képe és nincs is tiltva a megjelenítése, akkor ennek a paraméternek nincs hatása.
  • signImgTitleAlign - A látható PDF aláíráson opcionálisan elhelyezhető szöveg igazításának módja. Az értéke ha 1, akkor az aláírás képének bal felső sarkához lesz igazítva. Különben a bal alsó-hoz lesz igazítva, ami az alapértelmezett.
  • signImgAdjPosDisable - A látható aláírások egymást elfedő takarását megakadályozó korrekciónak az engedélyezése, ill. tiltása. Alapértelmezett értéke: XS_FALSE - azaz ha az újonnan létrehozni kívánt aláírás képe eltakarna egy már a dokumentumon szereplő aláírást, akkor az új aláírást automatikusan eltolja úgy, hogy a takarás megszűnjön.
  • pades – ETSI (TS 102 778) szabványnak megfelelő PAdES aláírás készítését teszi lehetővé. Lehetséges értékei:
    • XS_PADES_DIS - kikapcsolva
    • XS_PADES_ENA – engedélyezve
    Alapértelmezett értéke: kikapcsolva.
  • signaturePolicy - Aláírási szabályzat URL-je.
  • signaturePolicyOID - Aláírási szabályzat OID-ja, akkor szükséges megadni, ha az aláírási szabályzat nem ASN.1 formátumú.
  • commitmentTypeOID - Aláírói kötelezettség-vállalás típusának OID-ja. CAdES szabvány szerinti lehetséges értékei:
    • 1.2.840.113549.1.9.16.6.1 – eredet igazolása
    • 1.2.840.113549.1.9.16.6.2 – átvételi elismervény
    • 1.2.840.113549.1.9.16.6.3 – kézbesítés igazolása
    • 1.2.840.113549.1.9.16.6.4 – elküldés igazolása
    • 1.2.840.113549.1.9.16.6.5 – jóváhagyás
    • 1.2.840.113549.1.9.16.6.6 – létrehozás igazolása
  • contentHintDescription - Multi-layer message esetén a belső tartalom típusát írja le. Értéke jellemzően mime típus. Nincs alapértelmezett értéke. Részletes leírás az RFC 2634 [5] dokumentumban és az ETSI TS 101 733 leírásban található.
  • contentHintType - Multi-layer message esetén a belső tartalom típusát megadó OID. Nincs alapértelmezett értéke. Részletes leírás az RFC 2634 [5] dokumentumban és az ETSI TS 101 733 leírásban található.

Példa:

XS_PDF_SIGNING_DATA data;
memset(&data, 0, sizeof(data));
data.structSize = sizeof(data);
data.item = XS_PDFSDI_IMG_PATH | XS_PDFSDI_ALIGN;
data.signImgAlign = (XS_ULONG)RIGHT_BOTTOM;
data.signImgPath = (XS_CHAR_PTR) "/home/user/img/test.png";
data.signImgTitle = (XS_CHAR_PTR) "Signed by: %CN%, signature time: %TSD%T%TSH%.";
XS_SetOption(XSO_PDF_SIGNING_DATA, (XS_VOID_PTR)&data);
XSO_OUTPUT_ENCODING

A paraméter az e-akta menésekor az XML kódolását állítja be. A pValue paraméterben következő értékek szerepelhetnek: XS_OUTPUT_ENCODING_UTF8 (UTF-8 kódolás) vagy XS_OUTPUT_ENCODING_LOCAL (lokális kódolás). Az alapértelmezett beállítás a XS_OUTPUT_ENCODING_LOCAL.

XSO_IGNORE_KEYUSAGE

E paraméterrel beállítható, hogy az e-Szignó figyelembe vegye-e az aláírói tanúsítványban lévő kulcshasználat biteket az aláírás létrehozásakor vagy ellenőrzésekor. Amennyiben e paraméter értéke XS_TRUE, a program nem ellenőrzi a kulcshasználat mezőt, figyelmen kívül hagyja azt. Az alapértelmezett esetben (XS_FALSE beállítás) az aláírói tanúsítványban a kulcshasználat biteknek meg kell felelniük a vonatkozó szabványoknak, jogszabályoknak (a digitalSignature és/vagy a nonRepudiation bit kötelező).

XSO_ONLY_QUALIFIED_SIGNATURES

E paraméterrel beállítható, hogy a program csak minősített aláírói tanúsítványokat fogadjon el. (Ilyenkor a tanúsítványban található qcStatements kiterjesztést ellenőrzi az e-Szignó.) Amennyiben e paraméter értéke XS_TRUE, a program csak megfelelő qcStatements kiterjesztéssel rendelkező aláírói tanúsítványokat fogad el.

XSO_CADES

Beállítja, hogy a PKCS #7/CMS alapú aláírások ellenőrzésekor és létrehozásakor a minimális követelmény a CAdES legyen-e (konkrétan: bekerüljön-e az aláírásba a CAdES által megkövetelt id-smime-aa-signingCertificate aláírt tulajdonság, ill. elfogadjon-e olyan aláírásokat, amelyekben az nem található). Amennyiben értéke XS_FALSE, a létrehozott aláírások a CAdES-nek nem felelnek meg (!), és ellenőrzéskor elfogadja a nem CAdES aláírásokat is. Alapértelmezett értéke XS_TRUE. Hatással van a XS_SignCM(), XS_VerifyCM() és XS_SignPDFDocument() függvényekre. (A XS_VerifyPDFDocument() függvény a PDF aláírás szabvány sajátosságai miatt mindig elfogadja a nem CAdES aláírásokat is.)

XSO_ENCRYPTING_PASSWORD

A paraméter segítségével a szimmetrikus kulcsú titkosításhoz használandó jelszót és titkosító algoritmust adhatjuk meg. A pValue típusa:

typedef struct encrypting_password_struct {
	XS_ULONG				structSize;
	XS_CHAR_PTR				password; 
	XS_CHAR_PTR				key; 
	XS_CHAR_PTR				encryptingAlgo; 
} XS_ENCRYPTING_PASSWORD_DATA, XS_PTR XS_ENCRYPTING_PASSWORD_DATA_PTR;
  • password – A titkosításhoz és a titkosítás feloldásához használandó jelszó.
  • key – A titkosításhoz és a titkosítás feloldásához használandó kulcs hexa string formájában. A key és a password együtt nem használható. Amennyiben mindkettő beállításra kerül a password változót veszi figyelembe az alkalmazás
  • encryptingAlgo – A szimmetrikus kulcsú titkosításhoz használandó algoritmus azonosítója. Az azonosítók az openssl szerint definiált algoritmus azonosítók, pl.: aes-128-cbc. Teljes lista az alábbi oldalon található: http://www.openssl.org/docs/apps/enc.html. Amennyiben üres stringet adunk át paraméterként értéke „aes-128-cbc” lesz.
XSO_SRVCERT_VALIDATION

A paraméter segítségével megadható, hogy SSL kapcsolódás esetén (pl. https címek használatakor) az e-Szignó ellenőrizze a távoli szerver tanúsítványát. Alapértelmezés szerint ki van kapcsolva ez a funkció.

XSO_SRVCERT_NOREVCHECK_LIST

A paraméter segítségével megadható, hogy SSL kapcsolódás esetén (pl. https címek használatakor) az e-Szignó ha ellenőrzi a távoli szerver tanúsítványát, akkor mely címek esetében nem kell ellenőriznie a visszavonási állapotot.

XSO_URL_REDIRECT

A megadott URL párok első tagjához történő kapcsolódás helyett minden esetben a második értékként megadott URL lesz használva. A párok és azok elemei is szóközzel legyenek elválasztva.

Példa a következő címek átirányításának megadása:

http://nincs.ilyen.cim http://teszt.e-szigno.hu/testroot2008ocsp
https://ca.e-szigno.hu/ocsp http://rootocsp2009.e-szigno.hu
”http://nincs.ilyen.cim http://teszt.e-szigno.hu/testroot2008ocsp 
https://ca.e-szigno.hu/ocsp http://rootocsp2009.e-szigno.hu”
XSO_XML_ID_LIST

A megadott elemek attribútumait ID típusúként kezeli az XSign.

typedef struct xml_id_struct {
	XS_CHAR_PTR		pElementNSHref;
	XS_CHAR_PTR		pElementName;
	XS_CHAR_PTR		pAttributeNSHref;
	XS_CHAR_PTR		pAttributeName;
} XS_XML_ID, XS_PTR XS_XML_ID_PTR;
  • pElementNSHref – az elem névtere
  • pElementName – az elem neve
  • pAttributeNSHref – az attribútum névtere
  • pAttributeName – az attribútum neve
typedef struct xml_id_list_struct {
	XS_ULONG		ulXMLIDCount;
	XS_XML_ID_PTR	pXMLIDs;
} XS_XML_ID_LIST, XS_PTR XS_XML_ID_LIST_PTR;
  • ulXMLIDCount – az XML azonosító elemek száma
  • pXMLIDs – az XML azonosító elemek tömbje

Példa:

XS_XML_ID x[1];
XS_XML_ID_LIST xs;
x[0].pElementNSHref = NULL;
x[0].pElementName = (XS_CHAR_PTR)"RootElement";
x[0].pAttributeNSHref = NULL;
x[0].pAttributeName = (XS_CHAR_PTR)"id";
xs.ulXMLIDCount = 1;
xs.pXMLIDs = x;
xsRC = XS_SetOption(XSO_XML_ID_LIST, &xs);
if (xsRC != XSR_OK) {
	fprintf(stderr, "XS_SetOption failed \n");
}
XSO_CHECK_TRUSTED_CERT_VALIDITY

Beállítja, hogy a tanúsítványt lejáratokra ellenőrizni kell-e vagy sem.

XSO_MELASZ_READY_VERSION

Ezen opció segítségével az e-Szignó által létrehozott fájlokra vonatkozó MELASZ Ready (magyar interoperábilitási) szabvány verzióját lehet beállítani. Néhány esetben az ellenőrzési beállítások is módosulnak.

XS_MELASZ_READY_1_0

Amennyiben értéke XS_MELASZ_READY_1_0, az e-Szignó a friss ARL-ek (Authority Revocation List – Hitelesítés-szolgáltatói Visszavonási Lista) kibocsátását nem várja meg, és az OCSP válaszok ellenőrzésénél 30 perces kivárási időt alkalmaz. További érintett beállítások:

  • Kimeneti kódolás: UTF-8. (Ellenőrzéskor nincs hatása, tehát elfogad egyéb kódolású XML-t is.)
  • Inkluzív XML kanonizálás. (http://www.w3.org/TR/2001/REC-xml-c14n-20010315) Nem kerül ellenőrzésre.
  • Kivárási idő alkalmazása.
  • A dokumentumokat nem tömöríti az e-Szignó. Nem kerül ellenőrzésre.
  • A XAdES verzió értéke 1.2.2. Nem kerül ellenőrzésre.
XS_MELASZ_READY_2_0

Amennyiben értéke XS_MELASZ_READY_2_0, a következő beállítások és értékek módosulnak:

  • Az aktába bekerül a http://www.melasz.hu/uri/ready/xades/v.2.0.0 hivatkozás XML megjegyzésként. Nem kerül ellenőrzésre.
  • Az e-Szignó a friss ARL-ek (Authority Revocation List – Hitelesítés-szolgáltatói Visszavonási Lista) kibocsátását nem várja meg.
  • Kimeneti kódolás: UTF-8. (Ellenőrzéskor nincs hatása, tehát elfogad egyéb kódolású XML-t is.)
  • Inkluzív XML kanonizálás. (http://www.w3.org/TR/2001/REC-xml-c14n-20010315) Nem kerül ellenőrzésre.
  • Visszavonás ellenőrzésnél kivárási időt alkalmaz.
  • 1.3.2-es verziójú XAdES aláírást készít. Nem kerül ellenőrzésre.
  • A dokumentumokat nem tömöríti az e-Szignó. Nem kerül ellenőrzésre.
XS_MELASZ_READY_NONE

Az XS_MELASZ_READY_NONE beállítással kikapcsolhatjuk a MELASZ Ready követelményeknek történő megfelelést.

XSO_ROLE_CERT_CALLBACK

Beállítható vele az attribútum tanúsítvány adatait kiválasztó callback függvény. A függvény típusdefiniciója a következő:

typedef XS_CALLBACK_FUNCTION(XS_ULONG, XS_ROLE_CERT_CALLBACK)(
	const XS_CHAR_PTR		pDigest
);

A visszatérési érték jelzi a művelet sikerességét, a bemeneti paraméter pedig az aláíráshoz használt tanúsítványhoz tartozó lenyomat.

XSO_ROLE_CERT_FILE_STORE_CALLBACK

Beállítható vele az attribútum tanúsítványhoz szükséges attribútumok tárolásához használt callback függvény. A függvény típusdefiniciója a következő:

typedef XS_CALLBACK_FUNCTION(XS_ULONG, XS_ROLE_CERT_FILE_STORE_CALLBACK)(
	const XS_CHAR_PTR		pURL,
	const XS_BYTE_PTR		pResponse,
	const XS_ULONG			lResponseLength
);

A visszatérési érték jelzi a művelet sikerességét, a bemeneti paraméterek sorrendben: URL, attribútumokat tartalmazó struktúra, struktúra hossza.

XSO_SELECT_ROLE_STRUCT

Segítségével a XSO_ROLE_CERT_CALLBACK függvényen keresztül beállítható az igénylést feldolgozó szerver URL-je és a kiválasztott attribútumok. A pValue típusa itt egy kételemű szövegtömböt reprezentál, ahol az első elem az URL, a második az attribútumok.

XSO_TSL_USAGE

Segítségével a beállítható, hogy az alkalmazás aláírás létrehozáskor és ellenőrzéskor használja-e az EU Trust Service status List (TSL)-t. pValue típusa XS_TSL_SETTINGS_PTR. Ez a struktúra tartalmazza a használathoz szükséges összes paramétert.

typedef struct tsl_settings
{
	XS_ULONG			structSize; 
	XS_ULONG			useTSL;
	XS_CHAR_PTR			tslCacheDir;
	XS_CHAR_PTR			rootTSLURL; 
	XS_CHAR_PTR			TSLTrustedCertDir; 
} XS_TSL_SETTINGS, XS_PTR XS_TSL_SETTINGS_PTR;
  • structSize – a struktúra mérete
  • useTSL – azt adja meg, hogy a az alkalmazás használja-e a TSL-t. Lehetséges értékei:
    • XS_DONT_USE_TSL - 0 : Nem használ az alkalmazás TSL-t.
    • XS_USE_ONLY_TSL - 1: Az alkalmazás csak TSL-t használ.
    • XS_USE_TSL - 2: Az alkalmazás TSL-t és más forrásokat is használ a láncépítés során.
  • tslCacheDir – könyvtár elérési útja. Az alkalmazás ebbe a könyvtárba fogja tenni a TSL-hez tartozó ideiglenes fájlokat.
  • rootTSLURL – A TSL-ek listáját tartalmazó listának az elérési helye.
  • TSLTrustedCertDir – Annak a könyvtárnak az elérési útja, amely tartalmazza a root TSL ellenőrzéséhez szükséges aláíró tanúsítványt.
XSO_ARCHIVE_SETTING

Ezen opció segítségével lehet beállítani, az archivumba küldéshez szükséges URL-t és az alapértelmezett autentikációs tanusítványt.

typedef struct archive_settings_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR		archiveURL;
	XS_CHAR_PTR		archiveAuthCertContext;
} XS_ARCHIVE_SETTINGS, XS_PTR XS_ARCHIVE_SETTINGS_PTR;
  • structSize – A struktúra méretét tartalmazza
  • archiveURL – Az archivumba küldéshez szükséges URL.
  • archiveAuthCertContext – Alapértelmezett autentikációs tanusítványt.

XS_RV XS_GetFirstDocumentHandle(XS_DOSSIER_HANDLE dossierHandle, XS_DOCUMENT_HANDLE_PTR pDocumentHandle)

Adott e-aktában megkeresi és visszaadja az első dokumentumra hivatkozó HANDLE –t. Amennyiben nincs az e-aktában dokumentum, a függvény visszatérési értéke XSR_END_OF_ITERATION.

Paraméterek:

XS_DOSSIER_HANDLE dossierHandle

Bemeneti paraméter. Azon e-aktára hivatkozó HANDLE, melyben a dokumentumot szeretnénk keresni.

XS_DOCUMENT_HANDLE_PTR pDocumentHandle

Kimeneti paraméter. A megtalált első dokumentumra hivatkozó HANDLE–re mutató pointer.

XS_RV XS_GetNextDocumentHandle(XS_DOSSIER_HANDLE dossierHandle, XS_DOCUMENT_HANDLE_PTR pDocumentHandle)

Adott e-aktában megkeresi és visszaadja a következő dokumentumra hivatkozó HANDLE –t. Az XS_GetFirstDocumentHandle() függvénnyel együtt használandó, mellyel együtt végigiterálhatunk az e-aktában lévő dokumentumokon. Amennyiben nincs az e-aktában több dokumentum, a függvény visszatérési értéke XSR_END_OF_ITERATION.

Paraméterek:

XS_DOSSIER_HANDLE dossierHandle

Bemeneti paraméter. Azon e-aktára hivatkozó HANDLE, melyben a dokumentumot szeretnénk keresni.

XS_DOCUMENT_HANDLE_PTR pDocumentHandle

Kimeneti paraméter. A megtalált dokumentumra hivatkozó HANDLE–re mutató pointer.

XS_RV XS_GetFirstSignatureHandle(XS_HANDLE handle, XS_SIGNATURE_HANDLE_PTR pSignatureHandle );

Adott e-aktán vagy dokumentumon lévő aláírások közül megkeresi és visszaadja az első aláírásra hivatkozó HANDLE –t. Amennyiben nincs az adott e-aktán vagy dokumentumon aláírás, a függvény visszatérési értéke XSR_END_OF_ITERATION.

Paraméterek:

XS_HANDLE handle

Bemeneti paraméter. Azon e-aktára vagy dokumentumra hivatkozó HANDLE, melyen a az aláírásokat szeretnénk keresni.

XS_SIGNATURE_HANDLE_PTR pDocumentHandle

Kimeneti paraméter. A megtalált aláírásra hivatkozó HANDLE–re mutató pointer.

XS_RV XS_GetNextSignatureHandle(XS_HANDLE handle, XS_SIGNATURE_HANDLE_PTR pSignatureHandle)

Adott e-aktán vagy dokumentumon megkeresi és visszaadja a következő aláírásra hivatkozó HANDLE –t. Az XS_GetFirstSignatureHandle() függvénnyel együtt használandó, mellyel együtt végigiterálhatunk az e-aktán vagy dokumentumon lévő aláírásokon. Amennyiben nincs az e-aktán vagy dokumentumon több aláírás, a függvény visszatérési értéke XSR_END_OF_ITERATION.

Paraméterek:

XS_HANDLE handle

Bemeneti paraméter. Azon e-aktára vagy dokumentumra hivatkozó HANDLE, melyen az aláírásokat szeretnénk keresni.

XS_SIGNATURE_HANDLE_PTR pSignatureHandle

Kimeneti paraméter. A megtalált aláírásra hivatkozó HANDLE–re mutató pointer.

XS_RV XS_GetInformation(XS_HANDLE handle, XS_INFORMATION_ID infoType, XS_VOID_PTR_PTR ppInfo)

Adott e-aktáról, dokumentumról vagy aláírásról információkat kérhetünk le, a lekérdezni kívánt információ típusát az infoType paraméter határozza meg. A ppInfo változó pedig a visszaadott adatot tartalmazza. ppInfo típusa függ a lekérdezni kívánt adattól. ppInfo egy belső pufferre mutat, ezért használat után nem kell felszabadítani, hiszen az xsign újrahasznosítja a memória területet. Ennek az a következménye, hogy a puffer tartalma a lekérdezést követően felszabadul, ezért tanácsos a tartalmat kimenteni.

Paraméterek:

XS_HANDLE handle

Bemeneti paraméter. Azon e-aktára, dokumentumra vagy aláírásra hivatkozó HANDLE, melyről az információkat szeretnénk lekérni.

XS_INFORMATION_ID infoType

Bemeneti paraméter. A lekérdezni kívánt információ típusát határozza meg.

Az infoType paraméter lehetséges értékei:

XSI_TITLE

A dokumentum, vagy e-akta címét kérdezi le.

XSI_CUSTOM_METADATA

Az XS_HANDLE értékétől függően a dokumentum vagy a keret metaadatait kérhetjük le.

Minden esetben a ppInfo típusa XS_MAP_PTR kell, hogy legyen.

XS_MAP_PTR definíció szerint:

typedef struct map_struct { 
	XS_ULONG			keyAndValueCount;
	XS_KEY_AND_VALUE_PTR	pKeyAndValueArray;
} XS_MAP, XS_PTR XS_MAP_PTR;
  • keyAndValueCount – a metaadat név-érték párosok számát adja meg.
  • pKeyAndValueArray – név-érték párosokat tartalmazó tömbre mutató pointer.
    XS_KEY_AND_VALUE_PTR definíció szerint:
    typedef struct key_and_value_struct {
    	XS_CHAR_PTR		pKey;
    	XS_CHAR_PTR		pValue;
    } XS_KEY_AND_VALUE, XS_PTR XS_KEY_AND_VALUE_PTR;
    
    • pKey – Metaadat nevét tartalmazó C stringre mutató pointer.
    • pValue – Metaadatot tartalmazó C stringre mutató pointer.

Példa a használatra:

XS_RV xsRC = XSR_OK;
XS_OPEN_DOSSIER_DATA od_data;
XS_DOSSIER_HANDLE hDossier = 0;
XS_MAP_PTR pMap = NULL;
int i = 0;
XS_DOCUMENT_HANDLE hDoc = 0;
///////////////////////////////////////////
memset(&od_data, 0, sizeof(od_data));
od_data.structSize = sizeof(od_data);
od_data.pFilePath = "test.es3";
xsRC = pXSign->XS_OpenDossier(&od_data, &hDossier);
if (xsRC != XSR_OK) {
	fprintf(stderr, "XS_OpenDossier failed, returned %d\n", xsRC);
	goto end;
}
printf("Dossier custom metadata\n");
xsRC = pXSign->XS_GetInformation(hDossier, XSI_CUSTOM_METADATA, &pMap);
if (xsRC != XSR_OK) {
	fprintf(stderr, "XS_GetInformation failed, returned %d\n", xsRC);
	goto end;
}
for (i = 0; i < pMap->keyAndValueCount; i++) {
	printf("%s: %s\n", pMap->pKeyAndValueArray[i].pKey, pMap->pKeyAndValueArray[i].pValue);
}
XSI_TYPE

A handle értéke által hivatkozott objektum típusát adja meg.

XSI_OBJ_SIZE

A handle értéke által hivatkozott objektum méretét adja meg. Dokumentum esetén a beillesztett dokumentum beillesztés előtti méretét adja vissza.

XSI_CREATION_DATE

A handle értéke által hivatkozott objektum létrehozási idejét adja meg.

XSI_MIME_TYPE

A handle értéke által hivatkozott objektum MIME típusát adja meg.

XSI_COMMENT

A handle értéke által hivatkozott aláíráshoz fűzött megjegyzést adja vissza.

XSI_XADES_TYPE

A handle értéke által hivatkozott aláírás XAdES típusát adja vissza.

XSI_SIG_PLACE_CITY

A handle értéke által hivatkozott aláírásra vonatkozó aláírói tulajdonságok közül az aláírás helyéből a város mező értékét adja meg.

XSI_SIG_PLACE_COUNTRY

A handle értéke által hivatkozott aláírásra vonatkozó aláírói tulajdonságok közül az aláírás helyéből az ország mező értékét adja meg.

XSI_SIG_PLACE_POSTAL_CODE

A handle értéke által hivatkozott aláírásra vonatkozó aláírói tulajdonságok közül az aláírás helyéből az irányítószám mező értékét adja meg.

XSI_SIG_PLACE_PROVINCE

A handle értéke által hivatkozott aláírásra vonatkozó aláírói tulajdonságok közül az aláírás helyéből a megye mező értékét adja meg.

XSI_SIGNER_ROLE

A handle értéke által hivatkozott aláírásra vonatkozó aláírói tulajdonságok közül az aláíró szerepkörét adja meg.

XSI_COMMITMENT_TYPE

A handle értéke által hivatkozott aláírásra vonatkozó aláírói tulajdonságok közül a kötelezettségvállalást adja meg.

XSI_BEFORE_SIGNING_TIME

A handle értéke által hivatkozott aláírás előtti megbízható időpontot adja vissza.

XSI_AFTER_SIGNING_TIME

A handle értéke által hivatkozott aláírás utáni megbízható időpontot adja vissza.

XSI_CERT_CHAIN_INFO

A handle értéke által hivatkozott aláírói tanúsítvány láncára vonatkozó információkat ad vissza.

XSI_REV_INFO

Visszaadja szöveges formában, hogy az aláíráshoz vannak-e csatolva visszavonási információk.

XSI_ATTRIBUTES

A handle által hivatkozott csomópont (dokumentum, aláírás) attribútumait adja vissza egy struktúrában. (Minden esetben a ppInfo típusa XS_ATTRIBUTES_PTR-re mutató pointer kell, hogy legyen.)

typedef struct attributes_struct {
	XS_CHAR_PTR 	identifier;
	XS_CHAR_PTR 	title;
	XS_ULONG	serial;
	XS_ULONG	mainType;
	XS_ULONG	subType;
	XS_CHAR_PTR 	type;
	XS_CHAR_PTR 	category;
	XS_CHAR_PTR 	creationDate;
	XS_CHAR_PTR 	mainMimeType;
	XS_CHAR_PTR 	subMimeType;
	XS_CHAR_PTR 	extension;
	XS_ULONG	length;
	XS_ULONG	xadesType;
	XS_CHAR_PTR 	certificateInBase64;
	XS_CHAR_PTR 	signerAlternativeName;
	XS_CHAR_PTR 	certificateChainInfo;
	XS_CHAR_PTR 	beforeSigningTime;
	XS_CHAR_PTR 	afterSigningTime;
	XS_CHAR_PTR 	signaturePolicy;
	XS_CHAR_PTR 	signerApplication;
	XS_BOOL		isDocumentSafeViewed;
	XS_BOOL		isDocumentSignedByAServer;
	XS_BOOL		qualified;
	XS_BOOL		basedOnEPES;
} XS_ATTRIBUTES, XS_PTR XS_ATTRIBUTES_PTR;
  • identifier – a csomópont UUID alapú azonosítója
  • title – a dokumentum címe ill. az aláíró neve
  • serial – a csomópont belső használatú azonosítója
  • mainType – a csomópont fő típusa (belső használatra)
  • subType – a csomópont altípusa (belső használatra)
  • type – a csomópont típusa szöveges formában
  • category – a csomópont kategóriája szöveges formában
  • creationDate – a létrehozás (dokumentum esetén beillesztés) időpontja
  • mainMimeType – a fő MIME típus (a ’/’ karakter előtti rész)
  • subMimeType – a MIME altípus (a ’/’ karakter utáni rész)
  • extension – a dokumentum fájlkiterjesztése
  • length – a beillesztett dokumentum hossza bájtokban
  • xadesType – az aláírás XAdES-típusa
  • certificateInBase64 – az aláíró base64 kódolt tanúsítványa
  • signerAlternativeName – az aláíró alternatív neve
  • certificateChainInfo – szöveges információ a csatolt tanúsítványláncról
  • beforeSigningTime – az aláírás előtti megbízható időpont
  • afterSigningTime – az aláírás utáni megbízható időpont
  • signaturePolicy – az aláírási szabályzat URL-je
  • signerApplication – az aláírás-létrehozó alkalmazás neve
  • isDocumentSafeViewed – belső, biztonságos megjelenítővel került-e megtekintésre az aláírt dokumentum? (Az aláírás attribútuma.)
  • isDocumentSignedByAServer – szerver alkalmazás készítette-e az aláírást?
  • qualified – minősített-e az aláíró tanúsítványa?
  • basedOnEPES – XAdES-EPES-en alapul-e az aláírás (és nem XAdES-BES-en)?
XSI_ATTRIBUTES_2

A handle által hivatkozott csomópont (dokumentum, aláírás) attribútumait adja vissza egy struktúrában. Ez tulajdonképpen az XS_ATTRIBUTES struktúra kiterjesztett (és tovább terjeszthető) változata. (Minden esetben a ppInfo típusa XS_ATTRIBUTES_2_PTR-re mutató pointer kell, hogy legyen.)

typedef struct attributes_struct {
	XS_ULONG		structSize; /***/
	XS_CHAR_PTR 	identifier;
	XS_CHAR_PTR 	title;
	XS_ULONG	serial;
	XS_ULONG	mainType;
	XS_ULONG	subType;
	XS_CHAR_PTR 	type;
	XS_CHAR_PTR 	category;
	XS_CHAR_PTR 	creationDate;
	XS_CHAR_PTR 	mainMimeType;
	XS_CHAR_PTR 	subMimeType;
	XS_CHAR_PTR 	extension;
	XS_ULONG	length;
	XS_ULONG	xadesType;
	XS_CHAR_PTR 	certificateInBase64;
	XS_CHAR_PTR 	signerAlternativeName;
	XS_CHAR_PTR 	certificateChainInfo;
	XS_CHAR_PTR 	beforeSigningTime;
	XS_CHAR_PTR 	afterSigningTime;
	XS_CHAR_PTR 	signaturePolicy;
	XS_CHAR_PTR 	signerApplication;
	XS_BOOL		isDocumentSafeViewed;
	XS_BOOL		isDocumentSignedByAServer;
	XS_BOOL		qualified;
	XS_BOOL		basedOnEPES;
	XS_CHAR_PTR	refType; /***/				
	XS_CHAR_PTR	digestMethod; /***/
	XS_BUFFER	digestValue; /***/
	XS_CHAR_PTR signatureAlgorithm; /***/
	XS_CHAR_PTR signatureKeyDescription; /***/
	XS_CHAR_PTR certSignAlgorithm; /***/
	XS_ULONG	xadesVersion; /***/ 
	XS_CHAR_PTR afterFirstValidationTime; /***/
	XS_CHAR_PTR lastArchiveTSTime; /***/
	XS_CHAR_PTR lastArchiveTSValidityEnd; /***/
	XS_SIGN_PROPERTIES_PTR signProperties; /***/
	XS_QC_RESULT_PTR qcResult; /***/	
	XS_ULONG	sourceOfTrust; /***/
	XS_CHAR_PTR pSubjectOrgId; /***/
} XS_ATTRIBUTES_2, XS_PTR XS_ATTRIBUTES_2_PTR;

A struktúra elemei között az XS_ATTRIBUTES-hoz képest új elemeket /***/ jelöli. Ezek leírása (a többiét ld. az XS_ATTRIBUTES leírásánál):

  • structSize – a struktúra mérete bájtokban.
  • refType – az aláírás csomópontban található Reference elem típusa (Type attribútuma). Csak a XS_Get…SignedDocumentHandle hívások által visszaadott handle-ek esetén van kitöltve.
  • digestMethod – az aláírás csomópontban található Reference elem hash algoritmusát azonosító URI (pl. http://www.w3.org/2000/09/xmldsig#sha1). Csak a XS_Get…SignedDocumentHandle hívások által visszaadott handle-ek esetén van kitöltve.
  • digestValue – az aláírás csomópontban található Reference elem hash értékét tartalmazó puffer (XS_BUFFER struktúra). Csak a XS_Get…SignedDocumentHandle hívások által visszaadott handle-ek esetén van kitöltve.
  • signatureAlgorithm - az aláíró algoritmus
  • signatureKeyDescription - az aláíró kulcs szöveges leírása
  • certSignAlgorithm - az aláíró tanúsítvány aláírásához használt algoritmus
  • xadesVersion - az aláírás melyik XAdES verziónak felel meg (ld. XSO_XADES_VERSION)
  • afterFirstValidationTime - az aláírás első ellenőrzése utáni megbízható időpont (a *RefsTimeStamp elem alapján)
  • lastArchiveTSTime - az utolsó archív időbélyeg időpontja
  • lastArchiveTSValidityEnd - az utolsó archív időbélyegző tanúsítványának lejárati időpontja
  • signProperties - további aláírói tulajdonságok, ld. XS_SIGN_PROPERTIES leírása
  • qcResult - az aláírói tanúsítvány minősítettségére vonatkozó információk egy XS_QC_RESULT struktúrában (ld. alább)
  • sourceOfTrust - aláírói tanúsítvány ellenőrzésekor a tanúsítványlánc gyökér elemének forrása, lehetséges értékei:
    • 0: A trusted_cert_dir könyvtárból származik a gyökértanúsítvány
    • 1: A EU Trust Service status List (TSL)-ről származik a gyökértanúsítvány
    • 2: A Windows tanúsítványtárából származik a gyökértanúsítvány
    • 3-6: Fenntartott
    • 7: Nincs beállítva vagy nem meghatározható
  • pSubjectOrgId - az aláírói tanúsítvány szervezeti azonosítója

Az aláírói tanúsítvány minősítettségét leíró XS_QC_RESULT struktúra:

typedef struct qc_result_struct {
	XS_ULONG		structSize;
	XS_ULONG		regulation;
	XS_ULONG		qualification;
	XS_ULONG		statement;
	XS_DOUBLE		limitValue;
	XS_CHAR_PTR		pLimitValueCurrency;
	XS_ULONG		retentionPeriod;
	XS_ULONG		types;
	XS_MAP_PTR		pPDSList;
	XS_PSD2_QC_TYPE_PTR	pPSD2QCType;
} XS_QC_RESULT, XS_PTR XS_QC_RESULT_PTR;

A struktúra elemei:

  • structSize - a struktúra mérete bájtokban
  • regulation - mely szabályozásnak felel meg a tanúsítvány. Lehetséges értékek:
    • XS_REGULATION_EUR_NONE - a felsoroltak közül egyiknek sem
    • XS_REGULATION_EUR_1999 - 1999/93/EC
    • XS_REGULATION_EUR_EIDAS - eIDAS / (EU) No 910/2014
  • qualification - minősítettség. Lehetséges értékek:
    • XS_QUALIFICATION_NON_QUALIFIED - nem minősített
    • XS_QUALIFICATION_BASED_ON_QUALIFIED - minősített tanúsítványra épülő
    • XS_QUALIFICATION_QUALIFIED - minősített
  • statement - információ a minősítettségre vonatkozó állításról (qcStatements). Lehetséges értékek:
    • XS_QC_STATEMENT_CRITICAL_FAILURE - a qcStatements kritikus és hibás elemet tartalmaz
    • XS_QC_STATEMENT_NONE - nincs qcStatements
    • XS_QC_STATEMENT_PRESENT - van qcStatements és megfelelő
    • XS_QC_STATEMENT_CRITICAL - van qcStatements és kritikusként van megjelölve
  • limitValue - ügyleti érték
  • pLimitValueCurrency - ügyleti érték pénzneme
  • retentionPeriod - megőrzési idő (év)
  • types - a tanúsítvány típusa (az alábbi bites közül több is szerepelhet vagy kapcsolatban):
    • XS_QC_TYPE_NONE - nincs bit beállítva (0)
    • XS_QC_TYPE_SIGN - aláírás
    • XS_QC_TYPE_SEAL - bélyegző
    • XS_QC_TYPE_WEB - webszerver
  • pPDSList - a PKI közzétételi lista (PDS lista) XS_MAP formátumban, ahol az egyes elemek értelmezése:
      pKey - a PDS nyelve
      pValue - a PDS URL-je
  • pPSD2QCType - a tanúsítványhoz tartozó PSP szerepköröket és az NCA adatait tartalmazza
XS_PSD2_QC_TYPE

A tanúsítványhoz tartozó PSP szerepköröket és az NCA adatait tartalmazza.

typedef struct psd2_qc_type_struct {
	XS_ROLES_OF_PSP_PTR	pRolesOfPSP;
	XS_CHAR_PTR		pNCAName;
	XS_CHAR_PTR		pNCAId;
} XS_PSD2_QC_TYPE, XS_PTR XS_PSD2_QC_TYPE_PTR;
  • pRolesOfPSP – a tanúsítványhoz tartozó PSP szerepköröket tartalmazza
  • pNCAName - az NCA neve
  • pNCAId - az NCA azonosítója
XS_ROLES_OF_PSP

A tanúsítványhoz tartozó PSP szerepköröket tartalmazza.

typedef struct roles_of_psp_struct {
	XS_ULONG		ulCount;
	XS_ROLE_OF_PSP_PTR	pRoleOfPSP;
} XS_ROLES_OF_PSP, XS_PTR XS_ROLES_OF_PSP_PTR;
  • ulCount – a PSP szerepkörök száma
  • pRoleOfPSP - a PSP szerepkörök tömbje
XS_ROLE_OF_PSP

PSP szerepkört tartalmazó struktúra.

typedef struct role_of_psp_struct {
	XS_CHAR_PTR		roleOfPSPOid;
	XS_CHAR_PTR		roleOfPSPName;
} XS_ROLE_OF_PSP, XS_PTR XS_ROLE_OF_PSP_PTR;
  • roleOfPSPOid – a PSP szerepkörhöz tartozó OID
  • roleOfPSPName - a PSP szerepkörhöz tartozó rövidített név
XSI_TRANSFORMATIONS

A handle által hivatkozott dokumentumon, annak e-aktába illesztésekor végzett transzformációk listája. ppInfo a következőkben részletezett XS_TRANSFORMATIONS_PTR típusú pointerre kell, hogy mutasson.

typedef struct transformations_struct {
	XS_ULONG		ulCount;
	XS_CHAR_PTR_PTR	pTransformations;
} XS_TRANSFORMATIONS, XS_PTR XS_TRANSFORMATIONS_PTR;
  • ulCount – a transzformációk száma
  • pTransformations – a string formátumú transzformáció-azonosítók tömbje
    Transzformációk:
    • base64 – base64 kódolás
    • zip – tömörítés
    • encrypt – PKCS #7, RSA-DES3 titkosítás
XSI_ATTACHED_PKI_ITEM_LIST

Az aláíráshoz csatolt „PKI elemek”, időbélyegek, tanúsítványok, OCSP válaszok, CRL-ek listáját adja vissza. ppInfo egy XS_PKI_ITEM_LIST_PTR-re kell, hogy mutasson.

typedef struct pki_item_list_struct {
	XS_ULONG	ulCount;
	XS_PKI_ITEM_PTR pPKIItem;
} XS_PKI_ITEM_LIST, XS_PTR XS_PKI_ITEM_LIST_PTR;
  • ulCount – a PKI elemek száma
  • pPKIItem – a PKI elemek tömbje, elemei XS_PKI_ITEM típusúak:
typedef struct pki_item_struct {
	XS_ULONG structSize;
	XS_CHAR_PTR pXMLIdentifier;
	XS_CHAR_PTR pIssuerDN;
	XS_ULONG	ulType;
	XS_VOID_PTR pItem;
} XS_PKI_ITEM, XS_PTR XS_PKI_ITEM_PTR;
XSI_UNSIGNED_HASH_B64ED

Megjegyzés: WINCE operációs rendszeren nem támogatott ez az opció.

Kétmenetes aláírás létrehozásakor visszaadja az aláírás keret elkészítése (XS_Sign() hívás) után az aláíratlan lenyomatot base64 kódolt formában. ppInfo egy C stringre (char*) kell mutasson. Lásd még az XS_SetOption(XSO_SIGNING_CERTIFICATE) és az XS_SetInformation(XSI_SIGNED_HASH_B64ED) leírását.

XSI_SIGNER_DN

Az aláírói tanúsítványban található DN mező értékét lehet lekérni.

XSI_COMMENT_DOC

A handle által hivatkozott aláíráshoz tartozó megjegyzés dokumentumot, és a hozzá tartozó attribútumait adja vissza egy struktúrában. (Minden esetben a ppInfo típusa XS_COMMENT_DOC_PTR-re mutató pointer kell, hogy legyen.)

A struktúra definíciója:

typedef struct comment_doc_struct {
	XS_DOCUMENT_HANDLE documentHandle;
	XS_ULONG fileSize;
	XS_CHAR_PTR pTitle;
	XS_CHAR_PTR pExtension;
	XS_CHAR_PTR pMimeType;
} XS_COMMENT_DOC, XS_PTR XS_COMMENT_DOC_PTR;
  • documentHandle – A csatolt dokumentumra hivatkozó HANDLE.
  • fileSize – A csatolt dokumentum eredeti mérete.
  • pTitle – A csatolt dokumentum neve.
  • pExtension – A csatolt dokumentum eredeti fájlkiterjesztése.
  • pMimeType – A csatolt dokumentum típusa.

Példa:

XS_RV xsRC = XSR_OK;
XS_OPEN_DOSSIER_DATA od_data;
XS_DOSSIER_HANDLE hDossier = 0;
XS_SIGNATURE_HANDLE hSig = 0;
XS_COMMENT_DOC_PTR pCommentDoc = NULL;
XS_EXPORT_DOCUMENT_DATA edc_data;
/* opening dossier */
memset(&od_data, 0, sizeof(od_data));
od_data.structSize = sizeof(od_data);
od_data.pFilePath = "test_files/func_000028.es3";
xsRC = pXSign->XS_OpenDossier(&od_data, &hDossier);
if (xsRC != XSR_OK) {
	goto end;
}
xsRC = pXSign->XS_GetFirstSignatureHandle(hDossier, &hSig);
if (xsRC != XSR_OK) {
	goto end;
}
xsRC = pXSign->XS_GetInformation(hSig, XSI_COMMENT_DOC, (XS_VOID_PTR_PTR)&pCommentDoc);
if ((xsRC != XSR_OK) || !pCommentDoc) {
	goto end;
}
if (strcmp(pCommentDoc->pExtension, "pdf")
	|| strcmp(pCommentDoc->pMimeType, "application/pdf")
	|| strcmp(pCommentDoc->pTitle, "Vélemény")
	|| (pCommentDoc->fileSize != 87710)) {	
	/*  ..  */
}
/* exporting document */
memset(&edc_data, 0, sizeof(edc_data));
edc_data.structSize = sizeof(edc_data);
edc_data.pFilePath = "comdoc_clone.pdf";
xsRC = pXSign->XS_ExportDocument(pCommentDoc->documentHandle, &edc_data);
if (xsRC != XSR_OK) {
	goto end;
}
XSI_PDF_ATTRIBUTES

A handle által hivatkozott PDF aláírás objektumról (XS_PDF_SIGNATURE_HANDLE) ad vissza információkat a következő struktúrában:

typedef struct pdf_attributes_struct {
	XS_ULONG structSize;
	XS_CHAR_PTR signerDN;
	XS_CHAR_PTR name;
	XS_CHAR_PTR signTime;
	XS_CHAR_PTR revision;
	XS_CHAR_PTR subfilter;
	XS_BOOL hasSignatureTimeStamp;
	XS_BOOL signatureCoversWholeDocument;
	XS_ULONG sourceOfTrust;
} XS_PDF_ATTRIBUTES, XS_PTR XS_PDF_ATTRIBUTES_PTR;
  • structSize – A struktúra mérete (sizeof XS_PDF_ATTRIBUTES).
  • signerDN – Az aláíró tanúsítványában szereplő subject DN (distinguished name).
  • name – Az aláírás „name” mezeje.
  • signTime – Az aláírás időpontja.
  • signatureCoversWholeDocument – true, ha az aláírás a teljes PDF dokumentumra készült, tehát nem történt változtatás a PDF dokumentumon az aláírás óta.
  • revision – Az aláírás verziója „%N of %N” formátumban.
  • hasSignatureTimeStamp – true, ha az aláíráson van az aláírás időpontját igazoló időbélyeg.
  • sourceOfTrust - Az aláírói tanúsítvány ellenőrzésekor a tanúsítványlánc gyökér elemének forrása. Lehetséges értékeket lásd az XS_ATTRIBUTES_2 elemnél.
XSI_CERTIFICATE_CHAIN

A handle értéke által hivatkozott aláírói tanúsítvány lánca.

typedef struct certificate_chain {
	XS_ULONG		    chainSize; 
	XS_CHAR_PTR_PTR		ppCertInBase64Array;
} XS_CERTIFICATE_CHAIN, XS_PTR XS_CERTIFICATE_CHAIN_PTR;
  • chainSize – A tanúsítványláncban szereplő tanúsítványok száma.
  • ppCertInBase64Array – Mutató egy olyan tömbre, amelynek minden eleme egy karaktertömbre mutató mutató. Ezek a karaktertömbök a tanúsítványokat tartalmazzák base64 kódolt string formában.
XSI_ASIC_CONTAINER_MAIN_TYPE

A handle értéke által hivatkozott ASiC konténer típusa. Lehetséges értékei:

  • XS_ASIC_MAIN_UNKNOWN - amíg az ASiC konténer üres
  • XS_ASIC_MAIN_S - a konténer csak egyetlen dokumentumot és aláírást tartalmaz
  • XS_ASIC_MAIN_E - a konténer bármennyi dokumentumot és aláírást tartalmazhat

Részletesebb információ: ETSI TS 102 918 V1.2.1 bekezdés: 4.4.2

typedef XS_ULONG XS_ASIC_MAIN_TYPE, XS_PTR XS_ASIC_MAIN_TYPE_PTR;
XSI_ASIC_CONTAINER_SUB_TYPE

A handle értéke által hivatkozott ASiC konténer altípusa és egyben a konténerben levő aláírások típusa. Lehetséges értékei:

  • XS_SIG_TYPE_UNKNOWN - amíg az ASiC konténerben egyetlen aláírás sincs
  • XS_SIG_TYPE_XADES - a konténerben XAdES aláírások találhatóak
  • XS_SIG_TYPE_CADES - a konténer CAdES aláírások találhatóak

Részletesebb információ: ETSI TS 102 918 V1.2.1 bekezdés: 4.4.2

typedef XS_ULONG XS_ASIC_SUB_TYPE, XS_PTR XS_ASIC_SUB_TYPE_PTR;
XSI_ASIC_CONTAINER_MIME_TYPE

A handle értéke által hivatkozott ASiC konténer MIME típusát tartalmazó NULL végű karakterlánc.

typedef XS_CHAR XS_PTR		XS_CHAR_PTR;
XSI_ASIC_CONTAINER_ZIP_HEADER_COMMENT

A handle értéke által hivatkozott ASiC konténer zip fejlécében szereplő kommentet tartalmazó NULL végű karakterlánc. Opcionálisan tartalmazhatja a konténer MIME típusát is.

typedef XS_CHAR XS_PTR		XS_CHAR_PTR;
XSI_ASIC_DOC_PATH_IN_CONTAINER

A handle értéke által hivatkozott ASiC dokumentum konténeren belüli elérési útját tartalmazó NULL végű karakterlánc.

typedef XS_CHAR XS_PTR		XS_CHAR_PTR;
XSI_ASIC_SIG_ID

A handle értéke által hivatkozott XAdES aláírás azonosítóját tartalmazó NULL végű karakterlánc. Az aláírás az ASiC konténeren belül a META-INF könyvtárban egy XML fájlban található, amely több XAdES aláírást is tartalmazhat. Az XSI_ASIC_SIG_PATH_IN_CONTAINER és XSI_ASIC_SIG_ID együttvéve egyedien azonosít egy XAdES aláírást az ASiC konténeren belül. Az XSI_ASIC_SIG_ID értéke CAdES aláírások esetén nem értelmezett, értéke üres karakterlánc.

typedef XS_CHAR XS_PTR		XS_CHAR_PTR;
XSI_ASIC_SIG_PATH_IN_CONTAINER

A handle értéke által hivatkozott ASiC aláírást tartalmazó fájl ASiC konténeren belüli elérési útját tartalmazó NULL végű karakterlánc.

typedef XS_CHAR XS_PTR		XS_CHAR_PTR;
XSI_ASIC_CONTAINER_DOC_SIZE_LIMIT

A handle értéke által hivatkozott ASiC konténerben levő, memóriába beolvasott dokumentumok maximális mérete bájtokban. Az ezen értéknél tömörítetlenül kisebb dokumentumokat az API beolvassa a memóriába. A nagyobbakat pedig streamelve olvassa végig az egyes műveleteknél.

typedef unsigned long int XS_ULONG, XS_PTR XS_ULONG_PTR;
XSI_ASIC_ATTRIBUTES

A handle által hivatkozott ASiC dokumentum vagy aláírás attribútumait adja vissza egy struktúrában. (Minden esetben a ppInfo típusa XS_ATTRIBUTES_2_PTR-re mutató pointer kell, hogy legyen.)

Az XS_ATTRIBUTES_2_PTR leírását lásd az XSI_ATTRIBUTES_2 leírásánál.

XSI_NAMESPACE

A handle által meghivatkozott akta névtere kérhető le. Ezen opció segítségével meghatározható az e-akta sémája. A visszaadott érték egy NULL értékkel lezárt karakterlánc.

XSI_ADES_TYPE

A handle által meghivatkozott aláírás típusa kérdezhető le. Jelenleg PAdES és XAdES aláírások típusát lehet lekérdezni. Visszaadott értéke egy XS_LONG típusú érték.

Lehetséges visszaadott értékek:

Lehetséges visszaadott értékek:
enum AdESTypes
{
	UNDEF			= -1
	, ADES_BES		= 1
	, ADES_EPES		= 2
	, ADES_T		= 3
	, ADES_C		= 4
	, ADES_X		= 5
	, ADES_X_L		= 6
	, ADES_A		= 7
};

XSI_LTV_ENABLED

A handle által meghivatkozott PAdES aláírásról lekérdezhető, hogy LTV (Long Term Validation) támogató aláírás-e, azaz tartalmaz-e DSS (Document Security Store) elemet és Document Timestamp elemet. A visszatérési érték XS_BOOL típusú.

XSI_RECIPIENT_INFOS

A titkosított dokumentum címzettjeinek a tanúsítványát és a titkosított kulcsokat adja vissza.

XS_RECIPIENT_INFOS_PTR definíció szerint:

typedef struct recipient_infos {
	XS_ULONG				structSize;
	XS_ULONG				count; 
	XS_CHAR_PTR_PTR			certificates; 
	XS_CHAR_PTR_PTR			encodedKey; 
} XS_RECIPIENT_INFOS, XS_PTR XS_RECIPIENT_INFOS_PTR;
  • count – az adatok számát adja meg.
  • certificates – Az adott címzett tanúsítványát base64 kódolt formában tárolja.
  • encodedKey – Az adott címzett privát kulcsát base64 kódolt formában tárolja.

XS_RV XS_SetInformation(XS_HANDLE handle, XS_INFORMATION_ID infoType, XS_VOID_PTR pInfo)

Az XS_HANDLE által meghatározott e-aktának, dokumentumnak vagy aláírásnak egyes adatait állíthatjuk be, a beállítani kívánt információ típusát az infoType paraméter határozza meg. A beállítani kívánt adatot pedig a pInfo változó tartalmazza. pInfo típusa függ a beállítani kívánt adattól.

Paraméterek:

XS_HANDLE handle

Bemeneti paraméter. Azon e-aktára, dokumentumra vagy aláírásra hivatkozó HANDLE, melynek az adatait szeretnénk beállítani.

XS_INFORMATION_ID infoType

Bemeneti paraméter. A beállítani kívánt információ típusát határozza meg.

Az infoType paraméter lehetséges értékei:

XSI_TITLE

A dokumentum, vagy e-akta címét állítja be. Ilyenkor a pInfo paraméter értéke egy C típusú string. Aláírt akta, vagy dokumentum címét nem lehet megváltoztatni. Aláírás címét, azaz az aláíró nevét sem lehet megváltoztatni.

XSI_CUSTOM_METADATA

Megjegyzés: WINCE operációs rendszeren nem támogatott ez az opció.

Az XS_HANDLE értékétől függően a dokumentum vagy a keret metaadatait állíthatjuk be. Aláírt akta, vagy dokumentum metaadatait nem lehet megváltoztatni.

Minden esetben a pInfo típusa XS_MAP_PTR kell, hogy legyen.

XS_MAP_PTR definíció szerint:

typedef struct map_struct { 
	XS_ULONG			keyAndValueCount;
	XS_KEY_AND_VALUE_PTR	pKeyAndValueArray;
} XS_MAP, XS_PTR XS_MAP_PTR;
  • keyAndValueCount – a metadat név-érték párosok számát adja meg.
  • pKeyAndValueArray – név-érték párosokat tartalmazó tömbre mutató pointer.

XS_KEY_AND_VALUE_PTR definíció szerint:

typedef struct key_and_value_struct {
	XS_CHAR_PTR		pKey;
	XS_CHAR_PTR		pValue;
} XS_KEY_AND_VALUE, XS_PTR XS_KEY_AND_VALUE_PTR;
  • pKey – A metaadat nevét tartalmazó C stringre mutató pointer.
  • pValue – A metaadatot tartalmazó C stringre mutató pointer.

Példa:

XS_RV xsRC = XSR_OK;
XS_OPEN_DOSSIER_DATA od_data;
XS_DOSSIER_HANDLE hDossier = 0;
XS_SAVE_DOSSIER_DATA sd_data;
XS_DOCUMENT_HANDLE hDoc = 0;
XS_MAP map;
XS_KEY_AND_VALUE map_elems[2] = { 0 };
///////////////////////////////////////
memset(&od_data, 0, sizeof(od_data));
od_data.structSize = sizeof(od_data);
od_data.pFilePath = "test.es3";
xsRC = pXSign->XS_OpenDossier(&od_data, &hDossier);
if (xsRC != XSR_OK)
{
	fprintf(stderr, "XS_OpenDossier failed, returned %d\n", xsRC);
	goto end;
}
// set dossier metadata
memset(&map, 0, sizeof(map));
map.keyAndValueCount = 2;
map.pKeyAndValueArray = map_elems;
map_elems[0].pKey = "ElsőElem";
map_elems[0].pValue = "Tesztelő tartalom";
map_elems[1].pKey = "MásodikElem";
map_elems[1].pValue = "<?xml version='1.0' encoding='ISO-8859-2'?><Gyökér><Elem/></Gyökér>";
xsRC = pXSign->XS_SetInformation(hDossier, XSI_CUSTOM_METADATA, &map);
if (xsRC != XSR_OK)
{
	fprintf(stderr, "XS_SetInformation failed, returned %d\n", xsRC);
	goto end;
}
Kiegészítés:

A kliens e-Szignó támogatást nyújt bizonyos speciális metaadatok kezelésére egy metaadat dialógus segítségével.

Ezen metaadatok egy elemben jelennek meg egy külön xml-be ágyazva. Erre az xml struktúrára az alábbiakban láthatunk példát.

<mireg:metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" 
xmlns:mireg="http://mireg.org/schema/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://mireg.org/schema/1.0/ http://mireg.org/model/XSD/metadata.xsd" 
about="#Object0">
<mireg:mireg>
<dc:contributor>közreműködő tartalom</dc:contributor>
<dc:coverage>tér-idő vonatkozás tartalom</dc:coverage>
<dc:creator>létrehozó tartalom</dc:creator>
<dc:description>tartalmi leírása tartalom</dc:description>
<dc:format>formátum tartalom</dc:format>
<dc:identifier>azonosító tartalom</dc:identifier>
<dc:language>nyelv tartalom</dc:language>
<dc:publisher>másolatkészítő személy neve </dc:publisher>
<dc:relation>másolat készítési szabályzat URL</dc:relation>
<dc:rights>jogok tartalom</dc:rights><dc:source>forrás tartalom</dc:source>
<dc:subject>téma tartalom</dc:subject>
<dc:title>cím tartalom</dc:title>
<dc:type>típus tartalom</dc:type>
<dcterms:available>2007-03-20T08:36:53Z</dcterms:available>
<dcterms:extent>Other</dcterms:extent>
<dcterms:valid>start=2007-03-20T08:36:53Z</dcterms:valid>
</mireg:mireg></mireg:metadata>

Ha ezt az XML-t metadata néven illesztjük be, akkor a kliens e-Szignó által megjeleníthető e-aktát kapunk.

XSI_CUSTOM_METADATA_2

Megjegyzés: WINCE operációs rendszeren nem támogatott ez az opció.

Az XS_HANDLE értékétől függően a dokumentum vagy a keret metaadatait állíthatjuk be. Aláírt akta, vagy dokumentum metaadatait nem lehet megváltoztatni.

Minden esetben a pInfo típusa XS_METADATA_MAP_PTR kell, hogy legyen.

XS_METADATA_MAP_PTR definíció szerint:

typedef struct metadata_map_struct {
	XS_ULONG metadataCount;
	XS_METADATA_PTR_PTR ppMetadataArray; 
} XS_METADATA_MAP, XS_PTR XS_METADATA_MAP_PTR;
  • metadataCount – a metaadatok számát adja meg.
  • ppMetadataArray – a metaadatokra mutató pointereket tartalmazó tömbre mutató pointer.
XS_METADATA_PTR definíció szerint:
typedef struct custom_metadata_struct { 
	XS_ULONG structSize;
	XS_CHAR_PTR	pKey;	
	XS_CHAR_PTR	pDisplayName;
	XS_CHAR_PTR	pValue;
} XS_METADATA, XS_PTR XS_METADATA_PTR;			
  • structSize – A struktúra mérete
  • pKey – Metaadat nevét tartalmazó C stringre mutató pointer.
  • pDisplayName – Metaadat megjelenítendő nevét tartalmazó C stringre mutató pointer.
  • pValue – Metaadat értékét tartalmazó C stringre mutató pointer.

Példa:

XS_RV xsRC = XSR_OK;
XS_OPEN_DOSSIER_DATA od_data;
XS_DOSSIER_HANDLE hDossier = 0;
XS_SAVE_DOSSIER_DATA sd_data;
XS_DOCUMENT_HANDLE hDoc = 0;
XS_METADATA_MAP map;
XS_METADATA map_elem1, map_elem2;
XS_METADATA_PTR pMetadataElements[2] = { &map_elem1, &map_elem2 };
memset(&od_data, 0, sizeof(od_data));
od_data.structSize = sizeof(od_data);
od_data.pFilePath = "test_files/func_000036.es3";
xsRC = pXSign->XS_OpenDossier(&od_data, &hDossier);
if (xsRC != XSR_OK)
{
	fprintf(stderr, "XS_OpenDossier failed, returned %d\n", xsRC);
	goto end;
}
memset(&map, 0, sizeof(map));
map.metadataCount = 2;
map.ppMetadataArray = &pMetadataElements;
map_elem1.structSize = sizeof(map_elem1);
map_elem1.pKey = "ElsőjElem";
map_elem1.pDisplayName = "ElsőMegjelenítendő";
map_elem1.pValue = "Tesztelőjtartalom";
map_elem2.structSize = sizeof(map_elem2);
map_elem2.pKey = "MásodikÚjElem";
map_elem2.pDisplayName = "MásodikMegjelenítendő";
map_elem2.pValue = "MásodikTartalom";
xsRC = pXSign->XS_SetInformation(hDossier, XSI_CUSTOM_METADATA_2, &map);
if (xsRC != XSR_OK)
{
	fprintf(stderr, "XS_SetInformation failed, returned %d\n", xsRC);
	goto end;
}
XSI_ADD_TBS_OBJECT

Megjegyzés: WINCE operációs rendszeren nem támogatott ez az opció.

XML-be illesztendő aláírás létrehozása (XS_InsertSignature() hívás) előtt hozzáad egy elemet az aláírandó (TBS – To Be Signed) objektumok listájához. pInfo típusa a következőkben részletezett XS_SIGNED_OBJECT_PTR kell legyen.

typedef struct signed_object {
	XS_ULONG		structSize;
	XS_CHAR_PTR		pURI;
	XS_SX_TRANSFORM	transformation;
	XS_CHAR_PTR		pMIMEType;
} XS_SIGNED_OBJECT, XS_PTR XS_SIGNED_OBJECT_PTR;
  • structSize – a struktúra mérete
  • pURI – az aláírandó objektum belső (’#’ karakterrel kezdődő) URI-ja
  • transformation – az aláírandó objektumon lenyomatképzés előtt végzendő transzformáció. Lehetséges értékei:
    • XS_SX_TR_C14N (0) – XML kanonizálás (XML tartalom aláírása címkékkel – tagekkel – együtt)
    • XS_SX_TR_BASE64 (1) – base64 transzformáció (XML-be illesztett base64 kódolt bináris tartalom aláírása)
  • pMIMEType – az objektum MIME-típusa. Alapértelmezésként (ha e paraméter értéke NULL) az XS_SX_TR_C14N transzformációval aláírandó objektumok MIME-típusa text/xml, az XS_SX_TR_BASE64 transzformációval aláírandó objektumoké pedig application/octet-stream lesz.

Lásd még az XS_InsertSignature() leírását.

XSI_REGISTER_XPATH_NS

Megjegyzés: WINCE operációs rendszeren nem támogatott ez az opció.

XML-be illesztendő aláírás létrehozása (XS_InsertSignature() hívás) előtt ezen információtípus használatával regisztrálhatjuk be az aláíráskor megadandó XPath kifejezésben használandó XML névtér prefixeket. A pInfo paraméter típusa XS_KEY_AND_VALUE_PTR.

typedef struct key_and_value_struct {
	XS_CHAR_PTR		pKey;
	XS_CHAR_PTR		pValue;
} XS_KEY_AND_VALUE, XS_PTR XS_KEY_AND_VALUE_PTR;
  • pKey – az XML névtér prefix
  • pValue – az XML névtér URI (HREF)

Lásd még az XS_InsertSignature() leírását.

XSI_SIGNED_HASH_B64ED

Megjegyzés: WINCE operációs rendszeren nem támogatott ez az opció.

Kétmenetes aláírás létrehozásakor ezen információtípus segítségével állíthatjuk be az aláírt lenyomat értékét a félkész aktában. A folyamat befejezése képpen az elkészült aláírás ellenőrzésre kerül, tehát a vonatkozó beállítások (megbízható tanúsítványok, visszavonás-ellenőrzés) szükségesek. pInfo egy NULL karakterrel lezárt karaktersorozat (C string), mely az aláírt lenyomatot tartalmazza base64 kódolva.

A kétmenetes aláírás lényege, hogy az aláírást az e-Szignó program két menetben hozza létre: az első menetben a megadott tanúsítvánnyal létrehozza az aláírás XML keretét a kötelezően aláírandó metaadatokkal, valamint kiszámítja az aláírandó adatok lenyomatát, amit egy külső alkalmazásnak (pl. weboldalba illesztett ActiveX control vagy Java applet) átad aláírásra. A második menetben a külső alkalmazás által aláírt lenyomatot beilleszti a félkész aláírásba, majd ellenőrzi az aláírói tanúsítványt, esetleg időbélyeggel (XAdES-T) bőviti az aláírást.

Az aláíráshoz szükséges magánkulcs és az aláíró program fizikailag elkülönül, tipikusan a magánkulcs a kliens géphez csatlakoztatott kártyaolvasóba helyezett kártyán, az aláíró program (e-Szignó SDK) pedig a browser „túloldalán”, a HTTPS kapcsolatot kiszolgáló szervergépen fut. A kliens nem tudja a magánkulcsát eljuttatni a szerverre, hisz az „be van zárva a kártyába”, így a kliens e-Szignón kívül csak a kétmenetes aláírás marad, mint megoldás.

A kétmenetes aláírás pár előnye:

  • Az XML feldolgozáshoz és a tanúsítvány ellenőrzéshez szükséges programkód egy központi szerveren fut, egységes konfigurációval.
  • A lenyomat aláírása viszonylag könnyen implementálható a kliens számítógépén, ezáltal az aláírás olyan platformokon is elérhetővé válhat, ahova a teljes „arzenál” (XML feldolgozás, időbélyegzés, OCSP…) portolása nagyon sok időt venne igénybe.
  • A klienseknek csak egy nagyon kis alkalmazást (ActiveX control, Java applet) kell letölteniük az aláíráshoz. („Vékony” kliens.)

A kétmenetes aláírás használatának feltétele, hogy a kliens megbizonyosodjon és megbízzon a szerver által számára elküldött lenyomat valódiságában, pl. szerver-autentikált HTTPS (SSL) kapcsolat szükséges!

Ld. még az e-Szignó parancssori interfészének dokumentációját (doc\eszigno3_ref.html).

Példa:

XS_NEW_DOSSIER_DATA ndd;
XS_DOSSIER_HANDLE hDossier = 0;
XS_SIGNING_CERTIFICATE_DATA scd;
XS_CERT_KEY_DATA ckd;
char* pUnsigned = NULL;
char* pSigned = NULL;
/* Általános beállítások. */
XS_SetOption(XSO_WIN_USE_CERT_STORE, (XS_VOID_PTR)XS_FALSE);
XS_SetOption(XSO_TRUSTED_CERT_DIR, (XS_VOID_PTR)"test_files/trusted_certs");
XS_SetOption(XSO_INTERMEDIATE_CERT_DIR, (XS_VOID_PTR)"test_files/intermediate_certs");
XS_SetOption(XSO_WORK_SILENT, (XS_VOID_PTR)XS_FORCE_SILENT);
memset(&ndd, 0, sizeof(ndd));
ndd.structSize = sizeof(ndd);
ndd.pTitle = "E-akta";
XS_NewDossier(&ndd, &hDossier);
/* csak az aláíró tanúsítványát állítjuk be,
   a magánkulcsát nem; innen tudja az e-Szignó,
   hogy kétmenetes aláírás készül.
A tanúsítványt pl. a kliens választotta ki
ActiveX controlban és felküldte HTTP POST-tal.
Mi lementettük a lenti elérési útra.*/
memset(&scd, 0, sizeof(scd));
scd.structSize = sizeof(scd);
scd.keyType = XS_KEYFORM_CERT;
memset(&ckd, 0, sizeof(ckd));
ckd.structSize = sizeof(ckd);
ckd.pPath = "test_files/func_000018.cer";
scd.pData = &ckd;
XS_SetOption(XSO_SIGNING_CERTIFICATE, &scd);
/* Félkész keretaláírás létrehozása: */
XS_SignFrame(hDossier, NULL, NULL);
/* Az aláíratlan lenyomat kinyerése. */
XS_GetInformation(
	hDossier
	, XSI_UNSIGNED_HASH_B64ED
	, (XS_VOID_PTR_PTR)&pUnsigned
);
/* ... a pUnsigned tartalmazza az aláíratlan hasht.
   Ezt eljuttatjuk valamilyen módon a klienshez, pl.
   a fenti HTTP POST-ra válaszul. Ekkor a kliens a nála
   lévő magánkulccsal aláírja a hash-t, majd visszaküldi.
   Belekerül a pSigned változóba */
...
...
...
/* Az aláírt lenyomat beállítása.
Ilyenkor a beállított XAdES típusnak
(XSO_XADES_TYPE) megfelelő aláírás készül! * /
XS_SetInformation(
	hDossier
	, XSI_SIGNED_HASH_B64ED
	, (XS_VOID_PTR)pSigned
);
/* Elkészült az aláírás. */

XS_RV XS_SignPDF (XS_SIGN_PDF_DATA_PTR pSignPDFData)

PDF fájlokat nem csak e-aktán belül lehet aláírni, hanem közvetlenül a fájt is aláírhatjuk, hiszen a PDF szabvány (az 1.3 verzió óta) ezt megengedi. Ennek a függvénynek a segítségével tudunk közvetlenül e-akta létrehozás nélkül PDF aláírást létrehozni. Ha a visszavonás-ellenőrzési mód nincs megadva, OCSP/CRL-t használ.

Megjegyzés:

Ez a funkció WinCE operációs rendszer alatt nincs implementálva.

Paraméterek:

XS_SIGN_PDF_DATA_PTR pSignPDFData

Bemeneti paraméter. A hivatkozott struktúra definíciója alább látható.

typedef struct sign_pdf_struct
{
	XS_ULONG                structSize;
	XS_INPUT_PDF_DATA_PTR   pInputPDF;
	XS_OUTPUT_PDF_DATA_PTR  pOutputPDF; 
} XS_SIGN_PDF_DATA, XS_PTR XS_SIGN_PDF_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pInputPDF – Bemeneti paraméter. Struktúra, ami az aláírni kívánt PDF fájl adatait tartalmazza.
  • pOutputPDF – Kimeneti paraméter. Struktúra, ami az aláírt PDF fájl adatait tartalmazza

A pInputPDF és a pOutputPDF struktúra definíciója az alábbiakban látható.

typedef struct io_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR		pFilePath;
	XS_BUFFER_PTR	pBuffer; 
} XS_IO_DATA, XS_PTR XS_IO_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pFilePath – Be-/kimeneti paraméter. A használni kívánt fájl nevét kell megadni teljes elérési úttal. Értéke lehet NULL, ekkor a pBuffer változó értéke kerül felhasználásra.
  • pBuffer – Be-/kimeneti paraméter. Ha a pFilePath értéke NULL, akkor használja az alkalmazás ezt a változót. Ez a paraméter az adott fájl tartalmát hordozza.

, ahol pBuffer definíciója:

typedef struct buffer_struct
{
	XS_BYTE_PTR  pBuffer;
	XS_ULONG     bufferLength;
} XS_BUFFER, XS_PTR XS_BUFFER_PTR;
  • pBuffer – A puffer tartalmára mutató pointer.
  • bufferLength – A puffer hossza.

XS_RV XS_SignCM(XS_SIGN_CM_DATA_PTR pSignCMData)

CMS aláírás készítése.

Megjegyzés: Ez a funkció WinCE operációs rendszer alatt nincs implementálva.

Paraméterek:

XS_SIGN_CM_DATA_PTR pSignCMData

Bemeneti paraméter. A hivatkozott struktúra definíciója alább látható.

typedef struct sign_cm_struct
{
	XS_ULONG			structSize;
	XS_IO_DATA XS_PTR		pInput;
	XS_IO_DATA XS_PTR		pOutput;
	XS_CHAR_PTR			pContentType;
	XS_BOOL			detached;
} XS_SIGN_CM_DATA, XS_PTR XS_SIGN_CM_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pInput – Bemeneti paraméter. Struktúra, ami az aláírni kívánt fájl adatait tartalmazza.
  • pOutput – Kimeneti paraméter. Struktúra, ami az aláírt fájl adatait tartalmazza
  • pContentType – A beillesztett tartalom típusát meghatározó OID „pontozott” formátumban; alapértelmezett értéke „1.2.840.113549.1.7.1” (bináris adattípus).
  • Detached – true esetén a pInput paraméterben megadott bájtsorozat nem kerül beillesztésre a CMS fájlba.

XS_RV XS_VerifyCM(XS_VERIFY_CM_DATA_PTR pVerifyCMData)

CMS aláírás ellenőrzése.

Megjegyzés: Ez a funkció WinCE operációs rendszer alatt nincs implementálva.

Paraméterek:

XS_VERIFY_CM_DATA_PTR pVerifyCMData

Bemeneti paraméter. A hivatkozott struktúra definíciója alább látható.

typedef struct verify_cm_struct
{
	XS_ULONG			structSize;
	XS_IO_DATA XS_PTR		pInput;
	XS_IO_DATA XS_PTR		pContent;
	XS_IO_DATA XS_PTR		pOutput;
} XS_VERIFY_CM_DATA, XS_PTR XS_VERIFY_CM_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pInput – Bemeneti paraméter. Struktúra, ami az ellenőrizni kívánt fájl adatait tartalmazza.
  • pContent – Bemeneti paraméter. Struktúra, ami az aláírt fájl adatait tartalmazza. Különálló CMS aláírás esetén kell megadni.
  • pOutput – Kimeneti paraméter. Struktúra, ami az aláírt fájl adatait tartalmazza.

XS_RV XS_CreateAcknowledgement (XS_CREATE_ACKNOWLEDGEMENT_DATA_PTR pCreateAcknowledgementData, XS_DOSSIER_HANDLE_PTR pDossierHandle)

Átvételi elismervényt készít egy adott elektronikus aktáról a függvény

Megjegyzés: Ez a funkció WinCE operációs rendszer alatt nincs implementálva.

Paraméterek:

XS_CREATE_ACKNOWLEDGEMENT_DATA_PTR pCreateAcknowledgementData

Bemeneti paraméter. A hivatkozott struktúra definíciója alább látható.

typedef struct create_acknowledgement_data_struct {
	XS_ULONG				structSize;
	XS_CHAR_PTR				pFilePath;
	XS_BUFFER_PTR			pFile;
	XS_INSERT_DOCUMENT_DATA_PTR	pCommentDoc;
} XS_CREATE_ACKNOWLEDGEMENT_DATA
, XS_PTR XS_CREATE_ACKNOWLEDGEMENT_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pFilePath – annak az e-aktának az elérési útját tartalmazza, amelyről az átvételi elismervény készítendő. Kötelező megadni.
  • pFile – opcionális paraméter, melyben megadható az e-aktának megfelelő bájtsorozat egy XS_BUFFER struktúrában. Amennyiben megadásra kerül, az xsign róla készíti a lenyomatot és nem a pFilePath paraméterben megadott fájlról.
  • pCommentDoc – opcionális paraméter, az átvételi elismervényen szereplő aláíráshoz csatolható dokumentumot lehet megadni a paraméter segítségével. A pCommentDoc paraméter típusa: XS_INSERT_DOCUMENT_DATA_PTR.
  • pFileHash – opcionális paraméter, azon elektronikus aktának az SHA256 lenyomata amelyre az átvételi elismervényt készítjük. Amennyiben megadásra kerül, az átvételi elismervény ezen lenyomat alapján készíti, nem a pFilePath vagy a pFile paraméterben beállított fájlról.
typedef struct insert_document_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR		pFilePath; 
	XS_BUFFER_PTR	pBuffer; 
	XS_CHAR_PTR		pMIMEType; 
	XS_CHAR_PTR		pTitle;
} XS_INSERT_DOCUMENT_DATA, XS_PTR XS_INSERT_DOCUMENT_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pFilePath – a beillesztendő csatolmány elérési útja. NULL karakterrel lezárt karakterlánc mutató.
  • pBuffer – ha nem fájlból, hanem memóriából szeretnénk átadni a beillesztendő csatolmányt, akkor pFilePath értékének NULL-nak kell lennie és ezen paraméter segítségével kell megadni a memóriacímet.
  • pMIMEType – a beillesztendő dokumentum MIME típusa. Értéke lehet NULL, ekkor Windows operációs rendszereken automatikusan felismeri a MIME típust, Linux operációs rendszeren pedig text/plain alapértelmezett értéket kap.
  • pTitle – A csatolt dokumentumnak opcionálisan megadhatjuk a címét, ha ezt nem tesszük, akkor a fájl neve lesz a cím.

XS_RV XS_InsertSignature(XS_DOSSIER_HANDLE dossierHandle, XS_INSERT_SIGNATURE_DATA_PTR pInsertSignatureData)

Bármilyen XML-ben képes aláírást elhelyezni a funkció. Az XS_SetInformation() függvény XSI_ADD_TBS_OBJECT paraméterének segítségével határozhatjuk meg azokat a csomópontokat, melyeket alá szeretnénk írni. Az XS_InsertSignature() függvény meghívása után ismét be kell állítani az aláírni kívánt csomópontokat, ha újra szeretnénk használni a metódust. Ez egyben azt is jelenti, hogy nem kell resetelni a korábban beállított csomópontokat az utolsó aláírás után.

Paraméterek:

XS_DOSSIER_HANDLE dossierHandle

Bemeneti paraméter. Az aláírni kívánt XML-re hivatkozó HANDLE-t kell megadni, amit az XS_OpenDossier segítségével kaphatunk meg.

XS_INSERT_SIGNATURE_DATA_PTR pInsertSignatureData

Bemeneti paraméter. Az aláírás körülményeit határozhatjuk meg ezen paraméter segítségével. A struktúra definícióját az alábbiakban láthatjuk.

typedef struct insert_signature_data_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR		pXPath;   
	XS_SX_INSERT_AS	sigLocInsertAs; 
	XS_BOOL		addSchemaLocation;
	XS_SIGN_PROPERTIES_PTR pSignProperties;
} XS_INSERT_SIGNATURE_DATA, XS_PTR XS_INSERT_SIGNATURE_DATA_PTR;

Példa:

XS_OPEN_DOSSIER_DATA input;
XS_KEY_AND_VALUE ns;
XS_DOSSIER_HANDLE hDossier = 0;
XS_INSERT_SIGNATURE_DATA sxd;
XS_SAVE_DOSSIER_DATA output;
memset(&input, 0, sizeof(input));
input.structSize = sizeof(input);
input.pFilePath = "test_files/teszt.xml";
input.passAllXMLs = XS_TRUE;
XS_OpenDossier(&input, &hDossier);
memset(&ns, 0, sizeof(ns));
ns.pKey = "n1";
ns.pValue = "http://teszt.e-szigno.hu/1#";	
XS_SetInformation(hDossier, XSI_REGISTER_XPATH_NS, &ns);
memset(&object, 0, sizeof(object));
object.structSize = sizeof(object);
object.pURI = "#Node1";
object.transformation = XS_SX_TR_BASE64;
object.pMIMEType = "text/plain";
XS_SetInformation(hDossier, XSI_ADD_TBS_OBJECT, &object);
object.pURI = "#Node0";
object.transformation = XS_SX_TR_C14N;
object.pMIMEType = NULL;
XS_SetInformation(hDossier, XSI_ADD_TBS_OBJECT, &object);
memset(&sxd, 0, sizeof(sxd));
sxd.pXPath = "/n1:Gyökér";
XS_InsertSignature(hDossier, &sxd);
memset(&output, 0, sizeof(output));
output.structSize = sizeof(output);
output.pFilePath = "new1.xml";
XS_SaveDossier(hDossier, &output);

XS_RV XS_Register(XS_REGISTER_DATA_PTR pRegData)

A modul teljes funkcionalitásának eléréséhez regisztrációs fáj szükséges. Ez a függvény automatikusan elkészíti a regisztrációs fájlt a regisztrációs kulcs segítségével.

Megjegyzés: Ez a funkció WinCE operációs rendszer alatt nincs implementálva.

Paraméterek:

XS_REGISTER_DATA_PTR pRegData

Bemeneti paraméter. Regisztrációs struktúrára mutató pointer. Ebben a struktúrában kell meghatározni a regisztráció körülményeit. A struktúra leírása az alábbiakban található.

typedef struct reg_data_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR		pRegKey;
	XS_CHAR_PTR		pRegURL;
	XS_IO_DATA_PTR    pOutput;	
} XS_REGISTER_DATA, XS_PTR XS_REGISTER_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pRegKey – Bementi paraméter. Stringben kell megadni a regisztrációs kulcsot. Ezt a kulcsot a termék megvásárlása esetén kapja meg a Microsec zrt. munkatársaitól.
  • pRegURL – Bemeneti paraméter. Ebben a stringben kell megadni a regisztrációs szerver URL-t. Ez az érték lehet NULL, ekkor az alapértelmezett értéke https://srv.e-szigno.hu/cgi-bin/registration.cgi.
  • pOutput – Kimeneti paraméter. Ebbe a pufferbe kerül a válasz regisztráció, ezt kell a fájlrendszerbe elhelyezni.

XS_RV XS_Delete(XS_DELETE_DATA_PTR pDeleteData)

Ennek a funkciónak a segítségéve, a paraméterektől függően törölhetünk egy dokumentumot vagy aláírást. A dokumentumot vagy aláírást csak akkor törölhetjük, ha a dosszié nincs aláírva.

Paraméterek:

XS_DELETE_DATA_PTR pDeleteData

Bemeneti paraméter. A törlendő objektumot adja meg. A struktúra felépítése a következő:

typedef struct delete_data_struct 
{
	XS_ULONG				structSize;
	XS_HANDLE				handle; 
} XS_DELETE_DATA, XS_PTR XS_DELETE_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • handle – Bementi paraméter. A törlendő objektumra hivatkozó handle.

XS_RV XS_ClearURLCache(XS_DOSSIER_HANDLE dossierHandle)

Kiüríti a megadott e-aktához tartozó URL gyorsítótárat (cache-t).

Paraméterek:

XS_DOSSIER_HANDLE dossierHandle

Bemeneti paraméter. Azon e-aktára hivatkozó HANDLE, amelyhez tartozó URL cache-t üríteni szeretnénk.

XS_RV XS_Encrypt(XS_HANDLE handle)

Titkosítja a megadott e-aktát vagy dokumentumot. A titkosításhoz az XSO_RECIPIENT_CERTIFICATE_LIST opcióval megadott címzett tanúsítványokat használja. Lásd még a hivatkozott opció példáját.

Paraméterek:

XS_HANDLE handle

Bemeneti paraméter. Azon e-aktára vagy dokumentumra hivatkozó HANDLE, amelyet titkosítani szeretnénk.

XS_RV XS_CheckAcknowledgement(XS_DOSSIER_HANDLE handle, XS_CHECK_ACKNOWLEDGEMENT_DATA_PTR pData)

Ellenőrzi a megadott tértivevényt.

Paraméterek:

XS_DOSSIER_HANDLE handle

Bemeneti paraméter. Azon tértivevényre hivatkozó HANDLE, melyet ellenőrizni szeretnénk.

XS_CHECK_ACKNOWLEDGEMENT_DATA_PTR pData

Bemeneti paraméter. Az ellenőrizendő tértivevényhez tartozó e-aktát kell megadni A struktúra felépítése a következő:

typedef struct check_acknowledgement_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR		pFilePath;
	XS_BUFFER_PTR	pBuffer; 
} XS_CHECK_ACKNOWLEDGEMENT_DATA, XS_PTR XS_CHECK_ACKNOWLEDGEMENT_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pFilePath – Bemeneti paraméter. Az ellenőrzéshez tartozó fájl nevét kell megadni teljes elérési úttal.
  • pBuffer – NULL. Későbbi felhasználásra fenntartva.

XS_RV XS_SetEngine(XS_ENGINE_DATA_PTR pEngineData)

Az aláíráshoz használandó OpenSSL engine-t lehet beállítani.

Paraméterek:

XS_ENGINE_DATA_PTR pEngineData

Bemeneti paraméter. Az engine paramétereit lehet megadni a paraméter segítségével A struktúra felépítése a következő:

typedef struct set_engine_struct
{
	XS_ULONG		      structSize;
	XS_CHAR_PTR			pEngineID;	
	XS_CHAR_PTR			pPreInitCommands; 
	XS_CHAR_PTR			pPostInitCommands; 
} XS_ENGINE_DATA, XS_PTR XS_ENGINE_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pEngineID – Bemeneti paraméter. Az engine azonosítóját kell megadni pl.:”chil”.
  • pPreInitCommands – Az engine inicializálása előtt végrehajtandó parancsok listája, „parancs1:értékek1 parancs2:értékek2 …” formában.
  • pPostInitCommands – Az engine inicializálása után végrehajtandó parancsok listája, „parancs1:értékek1 parancs2:értékek2 …” formában.

XS_RV XS_OpenPDFDocument(XS_OPEN_PDF_DOCUMENT_DATA_PTR pData, XS_PDF_DOCUMENT_HANDLE_PTR pPDFDocHandle)

Megnyit egy PDF dokumentumot és visszaadja a dokumentum objektumra vonatkozó handle-t.

Paraméterek:

XS_OPEN_PDF_DOCUMENT_DATA_PTR pData

Bemeneti paraméter. A PDF dokumentum megnyitásához szükséges adatokat adhatjuk meg a segítségével.

typedef struct open_pdf_document_data_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR		pFilePath; 
	XS_BUFFER_PTR		pBuffer; 
	XS_BOOL			bValidatePDF; 
	XS_CHAR_PTR		pPassword;
} XS_OPEN_PDF_DOCUMENT_DATA, XS_PTR XS_OPEN_PDF_DOCUMENT_DATA_PTR;
	
  • structSize – a struktúra mérete.
  • pFilePath – a megnyitandó pdf dokumentum elérési útja.
  • pBuffer – a megnyitandó pdf dokumentumot tartalmazó buffer.
  • bValidatePDF – megnyitáskor ellenőrizze-e a teljes pdf formázottságát. XS_FALSE esetén nem tölti be a teljes pdf dokumentumot a memóriába.
  • pPassword - opcionális paraméter. Titkosított pdf kezelésére.

XS_PDF_DOCUMENT_HANDLE_PTR pPDFDocHandle

Kimeneti paraméter. A megadott pointer által mutatott XS_PDF_DOCUMENT_HANDLE típusú memóriaterület az újonnan létrehozott PDF dokumentum objektum handle-jét kapja értékül.

XS_RV XS_FreePDFDocument(XS_FREE_PDF_DOCUMENT_DATA_PTR pData, XS_PDF_DOCUMENT_HANDLE_PTR pPDFDocHandle)

A megadott PDF dokumentum objektumot felszabadítja és törli a memóriából. Figyelem! A dokumentumon lévő aláírások is törlődnek, tehát a rájuk vonatkozó XS_PDF_SIGNATURE_HANDLE-öket már nem lehet használni!

Paraméterek:

XS_FREE_PDF_DOCUMENT_DATA_PTR pData

Bemeneti paraméter. Későbbi használatra fenntartva, értéke legyen NULL.

XS_PDF_DOCUMENT_HANDLE_PTR pPDFDocHandle

Be- és kimeneti paraméter. A megadott pointer által mutatott XS_PDF_DOCUMENT_HANDLE által hivatkozott PDF dokumentum objektum felszabadításra kerül és a handle XS_INVALID_HANDLE értéket kap.

XS_RV XS_SavePDFDocument(XS_PDF_DOCUMENT_HANDLE pdfDocHandle, XS_SAVE_PDF_DOCUMENT_DATA_PTR pData)

Elmenti a megadott PDF dokumentum objektumot.

Paraméterek:

XS_PDF_DOCUMENT_HANDLE pdfDocHandle

Bemeneti paraméter. A menteni kívánt PDF dokumentum objektumra hivatkozó handle.

XS_SAVE_PDF_DOCUMENT_DATA_PTR pData

Bemeneti paraméter. A PDF dokumentum mentéséhez szükséges adatokat adhatjuk meg a segítségével.

typedef struct save_pdf_document_data_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR		pFilePath; 
	XS_BUFFER_PTR		pBuffer;  
} XS_SAVE_PDF_DOCUMENT_DATA, XS_PTR XS_SAVE_PDF_DOCUMENT_DATA_PTR;
	
  • structSize – a struktúra mérete.
  • pFilePath – az elmentendő pdf dokumentum elérési útja.
  • pBuffer – az elmentedő pdf dokumentumot tartalmazó buffer.

XS_RV XS_SignPDFDocument(XS_PDF_DOCUMENT_HANDLE pdfDocHandle, XS_SIGN_PDF_DOCUMENT_DATA_PTR pData, XS_PDF_SIGNATURE_HANDLE_PTR pPDFSignatureHandle)

Aláírja a megadott PDF dokumentum objektumot. Ha a visszavonás-ellenőrzési mód nincs megadva, OCSP/CRL-t használ.

Paraméterek:

XS_PDF_DOCUMENT_HANDLE pdfDocHandle

Bemeneti paraméter. Az aláírni kívánt PDF dokumentum objektumra hivatkozó handle.

XS_SIGN_PDF_DOCUMENT_DATA_PTR pData

Bemeneti paraméter. A PDF dokumentum aláírásához szükséges adatokat adhatjuk meg a segítségével. Értéke NULL lehet, ekkor az alapértelmezett beállításokkal történik az aláírás. A XS_SIGN_PDF_DOCUMENT_DATA struktúra a következőképpen fest:

typedef struct sign_pdf_doc_data {
	XS_ULONG		structSize;
	XS_ULONG		preserveSize;
} XS_SIGN_PDF_DOCUMENT_DATA, XS_PTR XS_SIGN_PDF_DOCUMENT_DATA_PTR;
  • structSize – a struktúra mérete (sizeof(XS_SIGN_PDF_DOCUMENT_DATA)).
  • preserveSize – az aláírás számára a PDF dokumentumban fenntartandó hely bájtokban (alapértelmezett: 20480, azaz 20 kB).
XS_PDF_SIGNATURE_HANDLE_PTR pPDFSignatureHandle

Kimeneti paraméter, opcionális, tehát értéke lehet NULL. A megadott pointer által mutatott XS_PDF_SIGNATURE_HANDLE típusú memóriaterület az újonnan létrehozott PDF aláírás objektum handle-jét kapja értékül.

XS_RV XS_VerifyPDFDocument(XS_PDF_DOCUMENT_HANDLE pdfDocHandle, XS_VERIFY_PDF_DOCUMENT_DATA_PTR pData, XS_HANDLE_ARRAY_PTR pPDFSignatureHandles)

Ellenőrzi a megadott PDF dokumentumban lévő összes aláírást. Az ellenőrzött aláírások handle-jeit visszaadja. A folyamat megegyezik az XS_GetSignedPDFDocument által visszaadott összes aláírást tartalmazó tömb elemein meghívott XS_VerifyPDFSignature hívással. Az ellenőrzést az első hibás aláírásig végzi.

Paraméterek:

XS_PDF_DOCUMENT_HANDLE pdfDocHandle

Bemeneti paraméter. Az ellenőrizni kívánt PDF dokumentum objektumra hivatkozó handle.

XS_VERIFY_PDF_DOCUMENT_DATA_PTR pData

Bemeneti paraméter. A PDF dokumentum ellenőrzéséhez szükséges adatokat adhatjuk meg a segítségével. Értéke NULL lehet, ekkor az alapértelmezett beállításokkal történik az ellenőrzés. A XS_VERIFY_PDF_DOCUMENT_DATA struktúra a következőképpen fest:

typedef struct verify_pdf_doc_data {
	XS_ULONG	structSize;
	XS_BOOL		ignoreUnknownSubFilters;
} XS_VERIFY_PDF_DOCUMENT_DATA, XS_PTR XS_VERIFY_PDF_DOCUMENT_DATA_PTR;
  • structSize – a struktúra mérete (sizeof(XS_VERIFY_PDF_DOCUMENT_DATA)).
  • ignoreUnknownSubFilters – e paraméter segítségével azt lehet beállítani, hogy mit csináljon a XSign abban az esetben, ha nem támogatott aláírás subFilter értékkel találkozik a PDF-ben.
    • XS_FALSE – ismeretlen subFilter esetén hibát jelez. (Ez az alapértelmezett beállítás.)
    • XS_TRUE – az ismeretlen subFilterrel rendelkező aláírásokat átugorja, a kimeneti handle listában sem fognak szerepelni.

Az XSign a legelterjedtebb subFiltereket támogatja, nevezetesen:

  • adbe.pkcs7.detached
  • adbe.pkcs7.sha1
  • ETSI.CAdES.detached
XS_HANDLE_ARRAY_PTR pPDFSignatureHandles

Kimeneti paraméter, opcionális, tehát értéke lehet NULL. A megadott pointer által mutatott XS_HANDLE_ARRAY típusú struktúrát feltölti az ellenőrzött PDF aláírás objektumok handle-jeivel. Amennyiben az aláírások között szerepel legalább egy hibás aláírás, úgy az értéke NULL.

Az XS_HANDLE_ARRAY struktúra definíciója:

typedef struct handle_array {
	XS_ULONG	ulCount;
	XS_HANDLE_PTR	phHandles;
} XS_HANDLE_ARRAY, XS_PTR XS_HANDLE_ARRAY_PTR;
  • ulCount – a handle tömb elemeinek száma.
  • phHandles – a handle tömb. A tömb elemeit a következőképpen lehet elérni: phHandles[index], ahol index a 0..(ulCount-1) tartományba esik.

A pPDFSignatureHandles által hivatkozott tömb csak a következő XSign hívásig érvényes, ezért a benne visszaadott handle-öket el kell másolni a memóriaterületről:

memcpy(pNewHandles, pPDFSignatureHandles->phHandles, pPDFSignatureHandles->ulCount);

XS_RV XS_GetSignedPDFDocument(XS_PDF_SIGNATURE_HANDLE pdfSigHandle, XS_GET_SIGNED_PDF_DOCUMENT_DATA_PTR pData, XS_PDF_DOCUMENT_HANDLE_PTR pPDFDocumentHandle)

Visszaadja az adott aláírás által aláírt PDF dokumentum verziót.

Paraméterek:

XS_PDF_SIGNATURE_HANDLE pdfSigHandle

Bemeneti paraméter. A PDF aláírás objektum handle-je.

XS_GET_SIGNED_PDF_DOCUMENT_DATA_PTR pData

Későbbi használatra fenntartva. Értéke legyen NULL.

XS_PDF_DOCUMENT_HANDLE_PTR pPDFSignatureHandle

Kimeneti paraméter. A megadott pointer által mutatott XS_PDF_DOCUMENT_HANDLE típusú memóriaterület a lekért dokumentum objektum handle-jét kapja értékül.

XS_RV XS_GetPDFSignatures(XS_PDF_DOCUMENT_HANDLE pdfDocHandle, XS_HANDLE_ARRAY_PTR pPDFSignatureHandles)

Az aláírt PDF dokumentumhoz tartozó összes aláírást visszaadja egy tömbben.

Paraméterek:

XS_PDF_DOCUMENT_HANDLE pdfDocHandle

Bemeneti paraméter. A PDF dokumentum handle-je.

XS_HANDLE_ARRAY_PTR pPDFSignatureHandles

Az aláírások listája, ahol

typedef struct handle_array_struct {
	XS_ULONG				ulCount;
	XS_HANDLE_PTR			phHandles;
} XS_HANDLE_ARRAY, XS_PTR XS_HANDLE_ARRAY_PTR;
  • ulCount – az aláírások száma
  • phHandles – az aláírások handle-jeinek tömbje

XS_RV XS_VerifyPDFSignature(XS_PDF_SIGNATURE_HANDLE pdfSigHandle, XS_VERIFY_PDF_DOCUMENT_DATA_PTR pData)

A handle által hivatkozott PDF aláírást ellenőrzi le.

Paraméterek:

XS_PDF_SIGNATURE_HANDLE pdfSigHandle

Bemeneti paraméter. A PDF aláírás objektum handle-je. Ezt az aláírást fogja leellenőrizni a metódus.

XS_VERIFY_PDF_DOCUMENT_DATA_PTR pData

Az aláírás ellenőrzés körülményeit beállító paramétereket tartalmazó struktúrára mutató pointer, ahol

typedef struct verify_pdf_doc_data {
	XS_ULONG	structSize;
	XS_BOOL		ignoreUnknownSubFilters; 
} XS_VERIFY_PDF_DOCUMENT_DATA, XS_PTR XS_VERIFY_PDF_DOCUMENT_DATA_PTR;
  • structSize – A struktúra mérete
  • ignoreUnknownSubFilters - e paraméter segítségével azt lehet beállítani, hogy mit csináljon a XSign abban az esetben, ha nem támogatott aláírás subFilter értékkel találkozik a PDF-ben.
    • XS_FALSE – ismeretlen subFilter esetén hibát jelez. (Ez az alapértelmezett beállítás.)
    • XS_TRUE – az ismeretlen subFilterrel rendelkező aláírásokat átugorja, a kimeneti handle listában sem fognak szerepelni.

Az XSign a legelterjedtebb subFiltereket támogatja, nevezetesen:

  • adbe.pkcs7.detached
  • adbe.pkcs7.sha1

XS_RV XS_GetSignerCert(XS_PDF_SIGNATURE_HANDLE pdfSigHandle, XS_IO_DATA_PTR pOutData)

Visszaadja az adott aláíráshoz tartozó aláírói tanúsítványt.

Paraméterek:

XS_PDF_SIGNATURE_HANDLE pdfSigHandle

Bemeneti paraméter. A PDF aláírás objektum handle-je, melynek a tanúsítványát szeretnénk lekérni.

XS_IO_DATA_PTR pOutData

Az aláíráshoz tartozó aláírói tanúsítványt tartalmazza.

XS_RV XS_GetUnsignedHashPDFSignature(XS_PDF_SIGNATURE_HANDLE pdfSigHandle, XS_GET_UNSIGNED_HASH_DATA_PTR pData)

Visszaadja az adott aláíráshoz tartozó aláíratlan lenyomatot.

Paraméterek:

XS_PDF_SIGNATURE_HANDLE pdfSigHandle

Bemeneti paraméter. A PDF aláírás objektum handle-je, melynek a tanúsítványát szeretnénk lekérni.

XS_GET_UNSIGNED_HASH_DATA_PTR pData

Kimeneti paraméter. Az aláírásból kiolvasandó aláíratlan lenyomatot tartalmazza.

typedef struct get_unsigned_hash_pdf_signature_data {
	XS_ULONG		structSize;
	XS_CHAR_PTR_PTR	ppBASE64EncodedUnsignedHash;
} XS_GET_UNSIGNED_HASH_PDF_SIGNATURE_DATA, XS_PTR XS_GET_UNSIGNED_HASH_PDF_SIGNATURE_DATA_PTR;
  • structSize – A struktúra mérete
  • ppBASE64EncodedUnsignedHash - a BASE64 kódolt aláírt lenyomat „null-terminated” karakterlánc formájában; egy c stringre (char*) kell mutasson

XS_RV XS_SetSignedHashPDFSignature(XS_PDF_SIGNATURE_HANDLE pdfSigHandle, XS_SET_SIGNED_HASH_DATA_PTR pData)

Beállítja az adott aláíráshoz az aláírt lenyomatot. Szükség esetén kiterjeszti az aláírást a megadott típusúra.

Paraméterek:

XS_PDF_SIGNATURE_HANDLE pdfSigHandle

Bemeneti paraméter. A PDF aláírás objektum handle-je, melynek a tanúsítványát szeretnénk lekérni.

XS_SET_SIGNED_HASH_DATA_PTR pData

Bemeneti paraméter. Az aláírásba beillesztendő aláírt lenyomatot tartalmazza.

typedef struct set_signed_hash_pdf_signature_data {
	XS_ULONG		structSize;
	XS_CHAR_PTR		pBASE64EncodedSignedHash;
} XS_SET_SIGNED_HASH_PDF_SIGNATURE_DATA, XS_PTR XS_SET_SIGNED_HASH_PDF_SIGNATURE_DATA_PTR;
  • structSize – A struktúra mérete
  • pBASE64EncodedSignedHash – a BASE64 kódolt aláírt lenyomat „null-terminated” karakterlánc formájában

XS_RV XS_DeleteLastPDFVersion(XS_PDF_DOCUMENT_HANDLE pdfDocHandle)

Visszaállítja a legutolsó aláírás vagy időbélyegzés előtti PDF dokumentumot. Teljes archív aláírás esetén a teljes aláírás törléséhez két hívás szükséges (első hívás az archív időbélyegre, második hívás az aláírásra).

Paraméterek:

XS_PDF_DOCUMENT_HANDLE pdfDocHandle

Bemeneti paraméter. A PDF dokumentum objektum leírója.

XS_RV XS_ValidateDossier(XS_DOSSIER_HANDLE hDossier, XS_VALIDATE_DOSSIER_DATA_PTR pData)

E-akta hitelességének ellenőrzése. A függvény ellenőrzi, hogy az e-akta nem üres-e, valamint hogy az összes dokumentum aláírása érvényes-e. A keretaláírás az összes dokumentum aláírásának számít. Az időbélyegek nem számítanak aláírásnak. Rekurzív módban az e-aktába illesztett e-akta típusú dokumentumok belsejét is ellenőrzi. Amennyiben egy érvénytelen aláírás „kívül” egy érvényessel „védve van”, a program elfogadja az aktát. (Pl. a dokumentum aláírása lejárt, de a keretaláírás érvényes.) Ez a működés felülbírálható a XS_VALIDATE_DOSSIER_DATA.forceValidateAllSignatures paraméter használatával.

Paraméterek:

XS_DOSSIER_HANDLE hDossier

Bemeneti paraméter. Az ellenőrizendő e-aktára hivatkozó HANDLE.

XS_VALIDATE_DOSSIER_DATA_PTR pData

Bemeneti paraméter. Az e-akta ellenőrzéséhez szükséges paramétereket tartalmazó struktúrára mutató pointer.

typedef struct validate_dossier_data {
	XS_ULONG		structSize;
	XS_BOOL		recursive;
	XS_BOOL		forceValidateAllSignatures;
	XS_BOOL		showProperties;
	XS_ULONG		truncateToXAdESType;
	XS_ULONG		addTimestamp;
	XS_BOOL		checkDocumentFormat;
	XS_IO_DATA_PTR	pOut;
} XS_VALIDATE_DOSSIER_DATA, XS_PTR XS_VALIDATE_DOSSIER_DATA_PTR;
  • structSize – a struktúra mérete
  • recursive – megadható, hogy az e-aktába illesztett e-akták belsejét is ellenőrizze-e
  • forceValidateAllSignatures – megadható, hogy a keretaláírással ellátott akták esetében, a belső aláírások is ellenőrzésre kerüljenek
  • showProperties – megadható, hogy a kimeneti listában szerepeljenek-e a XAdES által megkövetelt, a későbbi ellenőrzéshez szükséges elemek
  • truncateToXAdESType – az ellenőrzés előtt az aláírás XAdES-típusát az új XAdES típusra csökkenti
  • addTimestamp – ezen opció egy bizonyos típusú időbélyegből még egy darab beillesztésére ad lehetőséget Lehetséges értékei:
    • XS_ADD_TIMESTAMP_NONE – ne adjon újabb időbélyeget az aláíráshoz
    • XS_ADD_TIMESTAMP_SIGNATURE - SignatureTimeStamp elemet illeszt be; amennyiben a módosítandó aláírásban még nincs egyetlen egy XAdES-T időbélyeg sem, a függvény hibát jelez
    • XS_ADD_TIMESTAMP_REFS - SigAndRefsTimeStamp vagy RefsOnlyTimeStamp elemet illeszt be; amennyiben a módosítandó aláírásban még nincs egyetlen egy XAdES-X időbélyeg sem, a függvény hibát jelez
    • XS_ADD_TIMESTAMP_ARCHIVE - ArchiveTimeStamp elemet illeszt be; amennyiben a módosítandó aláírásban még nincs egyetlen egy XAdES-A időbélyeg sem, a függvény hibát jelez
    • XS_ADD_TIMESTAMP_EXTRA - egy új időbélyeget illeszt be, ha az aláírás eléri a beállított XAdES típust
  • checkDocumentFormat – megadható, hogy az e-aktában lévő dokumentumok formátumát ellenőrizze-e az e-Szignó; az egyetlen, jelenleg támogatott dokumentumformátum a PDF, tehát a formátum ellenőrzés csak erre fog lefutni
  • pOut – a kimeneti állomány (az e-akta beltartalmáról, valamint az ellenőrzési folyamatról készült leírás)

XS_RV XS_SendData(XS_SEND_DATA_PTR pData)

Állomány feltöltése HTTP-n keresztül. Ha a HTTP státusz kód értéke nem 200, akkor a függvény visszatérési érteke XSR_FUNCTION_FAILED.

Paraméterek:

XS_SEND_DATA_PTR pData

Bemeneti paraméter. A feltöltéséhez szükséges paramétereket tartalmazó struktúrára mutató pointer.

typedef struct send_data {
	XS_ULONG		structSize;
	XS_IO_DATA_PTR	pIn;
	XS_CHAR_PTR		pURL;
	XS_CHAR_PTR		pName;
	XS_CHAR_PTR		pFilename;
	XS_IO_DATA_PTR	pOut;
} XS_SEND_DATA, XS_PTR XS_SEND_DATA_PTR;
  • structSize – a struktúra mérete
  • pIn – a bemeneti állomány
  • pURL – az URL („null-terminated string”)
  • pName – a mező neve az űrlapon („null-terminated string”)
  • pFilename – az állomány neve az űrlapon („null-terminated string”)
  • pOut – a kimeneti állomány (HTTP válasz)

XS_RV XS_SignHash(XS_SIGN_HASH_DATA_PTR pData)

A paraméterben megadott hasht aláírja. Az aláíráshoz be kell állítani a megbízható tanúsítványok könyvtárát és az aláírói tanúsítványt.

Paraméterek:

XS_SIGN_HASH_DATA pData

Bemeneti és kimeneti paraméter. Az aláíratlan hash-t tartalmazza és ide teszi vissza az aláírt hash-t is a program. Az aláíráshoz szükséges paramétereket tartalmazó struktúrára mutató pointer.

typedef struct sign_hash_data {
	XS_ULONG		structSize;
	XS_IO_DATA_PTR	pUnsignedHash; 
	XS_IO_DATA_PTR	pSignedHash;
} XS_SIGN_HASH_DATA, XS_PTR XS_SIGN_HASH_DATA_PTR;
  • structSize – a struktúra mérete
  • pUnsignedHash – az aláíratlan hash
  • pSignedHash – az aláírt hash

XS_RV XS_ValidateCertificate(XS_VALIDATE_CERTIFICATE_DATA_PTR pValidateCertificateData);

Ellenőrzi a megadott tanúsítvány érvényességét, és a visszavonásra vonatkozó adatokat szolgáltat. Visszavonási információt nemcsak a paraméterben megadott tanúsítványról kapunk, hanem a hozzátartozó tanúsítvány láncban szereplő tanúsítványokról is, illetve ocsp ellenőrzést használva az ocsp választ aláíró tanúsítványról is.

Paraméterek:

XS_VALIDATE_CERTIFICATE_DATA_PTR pValidateCertificateData

Bemeneti paraméter. A tanúsítvány ellenőrzéséhez szükséges adatokat tartalmazó struktúrára (ld. alább) mutató pointer.

typedef struct validate_certificate_data {
	XS_ULONG	structSize;
	XS_BUFFER_PTR	pBuf;
	XS_REVOCATION_SUMMARY_DATA_PTR_PTR	pRevocationSummaryArray;
	XS_ULONG	revocationSummaryArraySize;
} XS_VALIDATE_CERTIFICATE_DATA, XS_PTR XS_VALIDATE_CERTIFICATE_DATA_PTR;
  • structSize – a struktúra mérete (sizeof(XS_VALIDATE_CERTIFICATE_DATA));
  • pBuf – a PEM vagy DER kódolt X.509 tanúsítványt tartalmazó puffert leíró struktúrára mutat. Emlékeztetésképpen, a struktúra így fest:
    typedef struct buffer_struct
    {
    	XS_BYTE_PTR  pBuffer;
    	XS_ULONG     bufferLength;
    } XS_BUFFER, XS_PTR XS_BUFFER_PTR;
    	
    Ahol pBuffer a bájtsorozat kezdőcíme, a bufferLength pedig a hossza.
  • pRevocationSummaryArray – mutatókat tartalmazó tömb. A mutatók egy-egy visszavonási információkat tartalmazó strukturára mutatnak. Egy ilyen struktúra felépítése:
    typedef struct revocation_summary_struct
    {
    	XS_ULONG	structSize;
    	XS_CHAR_PTR	certFingerPrint;
    	XS_ULONG	revocationStatus;
    	XS_ULONG	revocationReason;
    	XS_CHAR_PTR	revocationDate;
    } XS_REVOCATION_SUMMARY_DATA, XS_PTR XS_REVOCATION_SUMMARY_DATA_PTR;
    
    • structSize – a struktúra mérete (sizeof(XS_REVOCATION_SUMMARY_DATA));
    • certFingerPrint – a tanúsítvány sha1-es lenyomata. A lenyomat bájtjai hexadecimális számrendszerben ábrázolva következnek egymás után.
    • revocationStatus – visszavonás állapota. Lehetséges értékei:
      • XS_REVOCATION_STATUS_NOT_SET – nincs megadva
      • XS_REVOCATION_STATUS_GOOD – nincs visszavonva
      • XS_REVOCATION_STATUS_REVOKED - visszavont
      • XS_REVOCATION_STATUS_UNKNOWN - ismeretlen
    • revocationReason – visszavonás oka. Ha a revocationStatus értéke XS_REVOCATION_STATUS_REVOKED, akkor a lehetséges értékei:
      • XS_REVOCATION_REASON_UNSPECIFIED
      • XS_REVOCATION_REASON_KEY_COMPROMISE
      • XS_REVOCATION_REASON_CA_COMPROMISE
      • XS_REVOCATION_REASON_AFFILIATION_CHANGED
      • XS_REVOCATION_REASON_SUPERSEDED
      • XS_REVOCATION_REASON_CESSATION_OF_OPERATION
      • XS_REVOCATION_REASON_CERTIFICATE_HOLD
      • XS_REVOCATION_REASON_REMOVE_FROM_CRL
      Egyébként : XS_REVOCATION_REASON_NO_STATUS
    • revocationDate – visszavonás dátuma. Ha a revocationStatus értéke XS_REVOCATION_STATUS_REVOKED akkor, az értéke egy string, ami xml formátumban tárolja a visszavonás időpontját utc-ben. Egyébként NULL.
  • revocationSummaryArraySize – visszavonási információs struktúrák darabszáma. Tanúsítványonként egy-egy struktúra jön létre.

XS_RV XS_PDFAddTimeStamp(XS_PDF_DOCUMENT_HANDLE pdfDocHandle, XS_PDF_ADD_TIMESTAMP_DATA_PTR pData);

Fő funkciója egy újabb dokumentum időbélyeg PDF-be illesztése. Amennyiben a PDF már tartalmaz aláírásokat, úgy az összeset leellenőrzi az időbélyegzés előtt. Figyelem! A függvény akkor is elhelyez egy időbélyeget a PDF-en, ha nincs aláírva! Amennyiben a dokumentum tartalmaz adbe.x509.rsa_sha1 SubFilter értékű aláírásokat, akkor a PAdES-LTV szintű aláírás nem támogatott.

Paraméterek:

XS_PDF_DOCUMENT_HANDLE pdfDocHandle

Bemeneti paraméter. A PDF dokumentum handle-je, melyhez az időbélyeget szeretnénk hozzáadni.

XS_PDF_ADD_TIMESTAMP_DATA_PTR pData

Bemeneti paraméter. Az időbélyeg hozzáadásának paramétereit tartalmazó struktúra.

typedef struct add_timestamp_pdf_struct
{
	XS_ULONG structSize;
	XS_BOOL bUnknownSubfilterFlags; 
} XS_PDF_ADD_TIMESTAMP_DATA, XS_PTR XS_PDF_ADD_TIMESTAMP_DATA_PTR;
  • structSize – a struktúra mérete
  • bUnknownSubfilterFlags – Amennyiben értéke TRUE, a program átlépi az ismeretlen subFilter értékkel rendelkező aláírásokat, tehát nem is rakja bele a kimeneti tömbbe azokat. FALSE érték esetén hibát jelez ismeretlen subFilter esetén.

XS_RV XS_PDFAddAttachment(XS_PDF_DOCUMENT_HANDLE pdfDocHandle, XS_ADD_PDF_ATTACHMENT_DATA_PTR pData);

PDF fájlba csatolt dokumentum beillesztése.

Paraméterek:

XS_PDF_DOCUMENT_HANDLE pdfDocHandle

Bemeneti paraméter. A PDF dokumentum handle-je, melyhez az időbélyeget szeretnénk hozzáadni.

XS_ADD_PDF_ATTACHMENT_DATA_PTR pData

Bemeneti paraméter. A csatolmány hozzáadásának paramétereit tartalmazó struktúra.

typedef struct add_attachment_pdf_struct
{
	XS_ULONG				structSize;
	XS_CHAR_PTR				pDescription;
	XS_IO_DATA XS_PTR			pInput;
} XS_ADD_PDF_ATTACHMENT_DATA, XS_PTR XS_ADD_PDF_ATTACHMENT_DATA_PTR;
  • structSize – a struktúra mérete
  • pDescription - Opcionálisan megadható leírás a csatolmányhoz.
  • pInput - A bemeneti csatolmány adatait tartalmazó struktúra. Ha a pBuffer NULL akkor a pFilePath-et használja elérési útként, ha a pBuffer nem NULL akkor a pFilePath-et a file neveként használja.

XS_RV XS_PDFAddMetadata(XS_PDF_DOCUMENT_HANDLE pdfDocHandle, XS_ADD_PDF_METADATA_DATA_PTR pData);

Saját metaadat hozzáadása a PDF dokumentumhoz.

Paraméterek:

XS_PDF_DOCUMENT_HANDLE pdfDocHandle

Bemeneti paraméter. A PDF dokumentum handle-je.

XS_ADD_PDF_METADATA_DATA_PTR pData

Bemeneti paraméter. A metaadatokat tartalmazó struktúra:

typedef struct add_metadata_pdf_struct
{
	XS_ULONG				structSize;
	XS_MAP_PTR				pMetadataMap;
} XS_ADD_PDF_METADATA_DATA, XS_PTR XS_ADD_PDF_METADATA_DATA_PTR;
  • structSize – a struktúra mérete
  • pDescription - Metaadatok. Az XS_MAP_PTR használatát lásd a XS_GetInformation függvény leírásán belül a XSI_CUSTOM_METADATA leírásánál.

XS_RV XS_ASiC_NewContainer(XS_ASIC_CONTAINER_HANDLE_PTR pContainerHandle);

Létrehoz egy új üres ASiC konténert. A létrejövő konténer használat után felszabadítható az XS_ASiC_FreeContainer függvénnyel.

Paraméterek:

XS_ASIC_CONTAINER_HANDLE_PTR pContainerHandle

Kimeneti paraméter. A létrehozott konténerhez tartozó handle-re mutató pointer.

typedef XS_HANDLE	XS_ASIC_CONTAINER_HANDLE;
typedef XS_ASIC_CONTAINER_HANDLE XS_PTR XS_ASIC_CONTAINER_HANDLE_PTR;

XS_RV XS_ASiC_FreeContainer(XS_ASIC_CONTAINER_HANDLE_PTR pContainerHandle);

Felszabadítja a korábban létrehozott vagy megnyitott ASiC konténert. A felszabadítás után a konténerhez tartozó handle invaliddá válik.

Paraméterek:

XS_ASIC_CONTAINER_HANDLE_PTR pContainerHandle

Be- és kimeneti paraméter. A felszabadítani kívánt konténerhez tartozó handle-re mutató pointer.

typedef XS_ASIC_CONTAINER_HANDLE XS_PTR XS_ASIC_CONTAINER_HANDLE_PTR;

XS_RV XS_ASiC_SaveContainer(XS_ASIC_CONTAINER_HANDLE containerHandle, XS_SAVE_ASIC_CONTAINER_DATA_PTR pData);

A korábban létrehozott vagy megnyitott ASiC konténert menti el a fájlrendszerbe vagy a memóriába.

Paraméterek:

XS_ASIC_CONTAINER_HANDLE containerHandle

Bemeneti paraméter. A menteni kívánt konténerhez tartozó handle.

XS_SAVE_ASIC_CONTAINER_DATA_PTR pData

Bemeneti paraméter. A mentéshez tartozó paramétereket tartalmazó struktúrára mutató pointer, és memóriába történő mentés esetén a pufferre mutató pointer.

typedef XS_IO_DATA	XS_SAVE_ASIC_CONTAINER_DATA, XS_PTR XS_SAVE_ASIC_CONTAINER_DATA_PTR;

Az XS_IO_DATA típusú struktúra leírását lásd az XS_SignPDF() függvény dokumentációjánál.

XS_RV XS_ASiC_OpenContainer(XS_OPEN_ASIC_CONTAINER_DATA_PTR pData, XS_ASIC_CONTAINER_HANDLE_PTR pContainerHandle);

Megnyit egy ASiC konténert a fájlrendszerből vagy a memóriából. A létrejövő konténer használat után felszabadítható az XS_ASiC_FreeContainer függvénnyel.

Paraméterek:

XS_OPEN_ASIC_CONTAINER_DATA_PTR pData

Bemeneti paraméter. A megnyitáshoz tartozó paramétereket tartalmazó struktúrára mutató pointer.

typedef struct asic_open_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR		pFilePath;
	XS_BUFFER_PTR		pBuffer;
	XS_ULONG		docSizeLimit;
} XS_OPEN_ASIC_CONTAINER_DATA, XS_PTR XS_OPEN_ASIC_CONTAINER_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pFilePath – NULL-lal lezárt karakterlánc, a megnyitni kívánt ASiC konténer fájlrendszerbeli elérési útját tartalmazó karakterlánc.
  • pBuffer – a megnyitni kívánt konténert tartalmazó puffer. Az XS_BUFFER struktúra definícióját lásd az XS_OpenDossier függvény leírásánál.
  • docSizeLimit – lehetőség van beállítani egy méretlimitet, amelynél nagyobb fájlokat nem a memóriába olvassa az xsign, hanem fájlrendszeren keresztül használja őket (lásd még: XSI_ASIC_CONTAINER_DOC_SIZE_LIMIT)

A pFilePath és pBuffer tagmezők kölcsönösen kizárják egymást. Ha az egyik meg van adva, akkor a másik értékét NULL-ra kell állítani. A docSizeLimit-nek csak pFilePath megadása esetén van hatása (viszont később az XSI_ASIC_CONTAINER_DOC_SIZE_LIMIT beállításával bármikor módosítható a program működése).

XS_ASIC_CONTAINER_HANDLE_PTR pContainerHandle

Kimeneti paraméter. A megnyitott konténerhez tartozó handle-re mutató pointer.

typedef XS_HANDLE	XS_ASIC_CONTAINER_HANDLE;
typedef XS_ASIC_CONTAINER_HANDLE XS_PTR XS_ASIC_CONTAINER_HANDLE_PTR;

XS_RV XS_ASiC_InsertDocument(XS_ASIC_CONTAINER_HANDLE containerHandle, XS_ASIC_INSERT_DOCUMENT_DATA_PTR pData, XS_ASIC_DOCUMENT_HANDLE_PTR pDocumentHandle);

Létező ASiC konténerbe dokumentumot illeszt be.

Paraméterek:

XS_ASIC_CONTAINER_HANDLE containerHandle

Bemeneti paraméter. A konténerhez tartozó handle, amibe a dokumentumot be szeretnénk illeszteni.

typedef XS_HANDLE	XS_ASIC_CONTAINER_HANDLE;
XS_ASIC_INSERT_DOCUMENT_DATA_PTR pData

Bemeneti paraméter. A beillesztéshez szükséges adatokat tartalmazó struktúrára mutató pointer.

typedef struct asic_insert_document_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR		pFilePath;
	XS_BUFFER_PTR	pBuffer;
	XS_CHAR_PTR		pURI;
} XS_ASIC_INSERT_DOCUMENT_DATA, XS_PTR XS_ASIC_INSERT_DOCUMENT_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pFilePath – NULL-lal lezárt karakterlánc, a beilleszteni kívánt dokumentum fájlrendszerbeli elérési útját tartalmazó karakterlánc.
  • pBuffer – a beilleszteni kívánt dokumentumot tartalmazó puffer. Az XS_BUFFER struktúra definícióját lásd az XS_OpenDossier függvény leírásánál.
  • pURI – NULL-lal lezárt karakterlánc, ami a dokumentum konténeren belüli elérési útját tartalmazza.

A pFilePath és pBuffer tagmezők kölcsönösen kizárják egymást. Ha az egyik meg van adva, akkor a másik értékét NULL-ra kell állítani.

XS_ASIC_DOCUMENT_HANDLE_PTR pDocumentHandle

Kimeneti paraméter. A beillesztett dokumentumot hivatkozó handle-re mutató pointer. Később ezzel a handle-val hivatkozhatunk a dokumentumra a konténeren belül.

typedef XS_HANDLE XS_ASIC_DOCUMENT_HANDLE;
typedef XS_ASIC_DOCUMENT_HANDLE XS_PTR XS_ASIC_DOCUMENT_HANDLE_PTR;

XS_RV XS_ASiC_ExportDocument(XS_ASIC_DOCUMENT_HANDLE documentHandle, XS_ASIC_EXPORT_DOCUMENT_DATA_PTR pData);

Dokumentumot exportál ASiC konténerből.

Paraméterek:

XS_ASIC_DOCUMENT_HANDLE documentHandle

Bemeneti paraméter. A dokumentumhoz tartozó handle, amit ki szeretnénk exportálni.

typedef XS_HANDLE XS_ASIC_DOCUMENT_HANDLE;
XS_ASIC_EXPORT_DOCUMENT_DATA_PTR pData

Bemeneti paraméter. Az exportáláshoz szükséges adatokat tartalmazó struktúrára mutató pointer.

typedef XS_IO_DATA XS_ASIC_EXPORT_DOCUMENT_DATA, XS_PTR XS_ASIC_EXPORT_DOCUMENT_DATA_PTR;

Az XS_IO_DATA típusú struktúra leírását lásd az XS_SignPDF() függvény dokumentációjánál.

XS_RV XS_ASiC_RemoveDocument(XS_ASIC_DOCUMENT_HANDLE documentHandle);

Dokumentumot töröl ASiC konténerből. A törlés művelet nem hajtható végre, ha létezik legalább egy olyan aláírás az ASiC konténerben, ami a dokumentumot aláírja. Ekkor a függvény visszatérési értéke XSR_INVALID_OPERATION lesz.

Paraméterek:

XS_ASIC_DOCUMENT_HANDLE documentHandle

Bemeneti paraméter. A dokumentumhoz tartozó handle, amit ki szeretnénk törölni.

typedef XS_HANDLE XS_ASIC_DOCUMENT_HANDLE;

XS_RV XS_ASiC_GetDocumentsInContainer(XS_ASIC_CONTAINER_HANDLE containerHandle, XS_HANDLE_ARRAY_PTR pDocumentHandles);

Visszaadja az összes dokumentum handle-jet, ami az ASiC konténerben található.

Paraméterek:

XS_ASIC_CONTAINER_HANDLE containerHandle

Bemeneti paraméter. A konténerhez tartozó handle, amiben a dokumentumok találhatóak.

typedef XS_HANDLE	XS_ASIC_CONTAINER_HANDLE;
XS_HANDLE_ARRAY_PTR pDocumentHandles

Kimeneti paraméter. A konténerben található dokumentumok handle-jeit tartalmazó tömb.

Az XS_HANDLE_ARRAY definícióját lásd az XS_GetInformation függvény leírásán belül az XSI_COUNTER_SIGNED_SIGNATURES résznél.

XS_RV XS_ASiC_GetSignaturesInContainer(XS_ASIC_CONTAINER_HANDLE containerHandle, XS_HANDLE_ARRAY_PTR pSignatureHandles);

Visszaadja az összes aláírás handle-jet, ami az ASiC konténerben található.

Paraméterek:

XS_ASIC_CONTAINER_HANDLE containerHandle

Bemeneti paraméter. A konténerhez tartozó handle, amiben az aláírások találhatóak.

typedef XS_HANDLE	XS_ASIC_CONTAINER_HANDLE;
XS_HANDLE_ARRAY_PTR pSignatureHandles

Kimeneti paraméter. A konténerben található aláírások handle-jeit tartalmazó tömb.

Az XS_HANDLE_ARRAY definícióját lásd az XS_GetInformation függvény leírásán belül az XSI_COUNTER_SIGNED_SIGNATURES résznél.

XS_RV XS_ASiC_GetSignaturesOfDocument(XS_ASIC_DOCUMENT_HANDLE documentHandle, XS_HANDLE_ARRAY_PTR pSignatureHandles);

Visszaadja az összes aláírás handle-jet, ami a megadott dokumentumot aláírja.

Paraméterek:

XS_ASIC_DOCUMENT_HANDLE documentHandle

Bemeneti paraméter. Azon dokumentumhoz tartozó handle, amelyik aláírásait kérjük.

typedef XS_HANDLE XS_ASIC_DOCUMENT_HANDLE;
XS_HANDLE_ARRAY_PTR pSignatureHandles

Kimeneti paraméter. A dokumentumot aláíró aláírások handle-jeit tartalmazó tömb.

Az XS_HANDLE_ARRAY definícióját lásd az XS_GetInformation függvény leírásán belül az XSI_COUNTER_SIGNED_SIGNATURES résznél.

XS_RV XS_ASiC_GetDocumentsSignedBy(XS_ASIC_SIGNATURE_HANDLE signatureHandle, XS_HANDLE_ARRAY_PTR pDocumentHandles);

Visszaadja az összes dokumentum handle-jet, amit a megadott aláírás aláír.

Paraméterek:

XS_ASIC_SIGNATURE_HANDLE signatureHandle

Bemeneti paraméter. Azon aláíráshoz tartozó handle, amelyik aláírja a visszaadott dokumentumokat.

typedef XS_HANDLE XS_ASIC_SIGNATURE_HANDLE;
XS_HANDLE_ARRAY_PTR pDocumentHandles

Kimeneti paraméter. Az aláírás által aláírt dokumentumok handle-jeit tartalmazó tömb.

Az XS_HANDLE_ARRAY definícióját lásd az XS_GetInformation függvény leírásán belül az XSI_COUNTER_SIGNED_SIGNATURES résznél.

XS_RV XS_ASiC_Sign(XS_HANDLE_ARRAY_PTR pDocumentHandles, XS_ASIC_SIGN_DATA_PTR pData, XS_ASIC_SIGNATURE_HANDLE_PTR pSignatureHandle);

Aláírja a megadott dokumentumokat. Ha a konténer altípusa ismeretlen, akkor lehetőségünk van megadni, hogy XAdES vagy CAdES aláírásokat tartalmazzon. A konténer altípusa akkor lehet ismeretlen, ha még egyetlen aláírást sem tartalmaz.

Paraméterek:

XS_HANDLE_ARRAY_PTR pDocumentHandles

Bemeneti paraméter. Az aláírni kívánt dokumentumok handle-jeit tartalmazó tömb.

Az XS_HANDLE_ARRAY definícióját lásd az XS_GetInformation függvény leírásán belül az XSI_COUNTER_SIGNED_SIGNATURES résznél.

XS_ASIC_SIGN_DATA_PTR pData

Bemeneti paraméter. Az aláíráshoz szükséges adatokat tartalmazó struktúra.

typedef struct asic_sign_data_struct
{
    XS_ULONG                structSize;
    XS_CHAR_PTR             pSignatureName;
    XS_ULONG                signatureType;
    XS_SIGN_PROPERTIES_PTR  pSignProperties;
} XS_ASIC_SIGN_DATA, XS_PTR XS_ASIC_SIGN_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pSignatureName – NULL-lal lezárt karakterlánc, ami az aláírás nevét tartalmazza. Lehet NULL. Az aláírásokat tartalmazó fájlok a konténeren belül a META-INF könyvtárba kerülnek. Elnevezésük így alakul: [_|signatures].[xml|p7s]
  • signatureType – Így állíthatjuk be az aláírás típusát, ha a konténer altípusa még ismeretlen. Ha már ismert a konténer altípusa, akkor értéke figyelmen kívül marad. Lehetséges értékei:
    • XS_SIG_TYPE_XADES
    • XS_SIG_TYPE_CADES
    • XS_SIG_TYPE_UNKNOWN - Az XS_ASiC_Sign függvény használata esetén a jelentése megegyezik az XS_SIG_TYPE_XADES értékével.
  • pSignProperties – Az aláírás tulajdonságait adhatjuk meg a paraméter segítségével. A paraméter részletes leírása az XS_SIGN_PROPERTIES_PTR leírásánál található.
XS_ASIC_SIGNATURE_HANDLE_PTR pSignatureHandle

Kimeneti paraméter. Az aláírást hivatkozó handlera mutató pointer.

typedef XS_HANDLE XS_ASIC_SIGNATURE_HANDLE;
typedef XS_ASIC_SIGNATURE_HANDLE XS_PTR	XS_ASIC_SIGNATURE_HANDLE_PTR;

XS_RV XS_ASiC_GetUnsignedSignatures(XS_ASIC_CONTAINER_HANDLE containerHandle, XS_HANDLE_ARRAY_PTR pSignatureHandles);

Kétmenetes aláírás létrehozásakor visszaadja azon aláírásokat, amelyek csak az aláírás keret aláíratlan lenyomatát tartalmazzák.

Paraméterek:

XS_ASIC_CONTAINER_HANDLE containerHandle

Bemeneti paraméter. A konténerhez tartozó handle, amiben az aláírások találhatóak.

typedef XS_HANDLE	XS_ASIC_CONTAINER_HANDLE;
XS_HANDLE_ARRAY_PTR pSignatureHandles

Kimeneti paraméter. A konténerben található aláírások handle-jeit tartalmazó tömb.

Az XS_HANDLE_ARRAY definícióját lásd az XS_GetInformation függvény leírásán belül az XSI_COUNTER_SIGNED_SIGNATURES résznél.

XS_RV XS_ASiC_GetUnsignedHash(XS_ASIC_SIGNATURE_HANDLE signatureHandle, XS_ASIC_GET_UNSIGNED_HASH_DATA_PTR pData);

Kétmenetes aláírás létrehozásakor visszaadja az aláírás keret elkészítése (XS_ASiC_Sign() hívás) után az aláíratlan lenyomatot base64 kódolt formában.

Paraméterek:

XS_ASIC_SIGNATURE_HANDLE signatureHandle

Bemeneti paraméter. Azon aláíráshoz tartozó handle, amelyik az aláíratlan lenyomatot tartalmazza.

typedef XS_HANDLE XS_ASIC_SIGNATURE_HANDLE;
XS_ASIC_GET_UNSIGNED_HASH_DATA_PTR pData

Kimeneti paraméter. Az aláíratlan lenyomat lekérésével kapcsolatos adatokat tartalmazó struktúrára mutató pointer.

typedef struct asic_get_unsigned_hash_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR     pHashValue;
} XS_ASIC_GET_UNSIGNED_HASH_DATA, XS_PTR XS_ASIC_GET_UNSIGNED_HASH_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pHashValue – NULL-lal lezárt karakterlánc, ami az aláíratlan lenyomatot tartalmazza base64 kódolt formában

XS_RV XS_ASiC_SetSignedHash(XS_ASIC_SIGNATURE_HANDLE signatureHandle, XS_ASIC_SET_SIGNED_HASH_DATA_PTR pData);

Kétmenetes aláírás létrehozásakor beállítja az aláírt lenyomat értékét a félkész aláírásban. A folyamat befejezése képpen az elkészült aláírás ellenőrzésre kerül, tehát a vonatkozó beállítások (megbízható tanúsítványok, visszavonás-ellenőrzés) szükségesek.

Paraméterek:

XS_ASIC_SIGNATURE_HANDLE signatureHandle

Bemeneti paraméter. Azon aláíráshoz tartozó handle, amelyik aláírt lenyomatát be szeretnénk állítani.

typedef XS_HANDLE XS_ASIC_SIGNATURE_HANDLE;
XS_ASIC_SET_SIGNED_HASH_DATA_PTR pData

Bemeneti paraméter. Az aláírt lenyomat beállításával kapcsolatos adatokat tartalmazó struktúrára mutató pointer.

typedef struct asic_set_signed_hash_struct
{
	XS_ULONG		structSize;
	XS_CHAR_PTR     pHashValue;
	XS_ULONG        addTimeStamp;
} XS_ASIC_SET_SIGNED_HASH_DATA, XS_PTR XS_ASIC_SET_SIGNED_HASH_DATA_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pHashValue – NULL-lal lezárt karakterlánc, ami az aláírt lenyomatot tartalmazza base64 kódolt formában
  • addTimestamp – ezen opció egy bizonyos típusú időbélyegből még egy darab beillesztésére ad lehetőséget. Lehetséges értékei:
    • XS_ADD_TIMESTAMP_NONE – ne adjon újabb időbélyeget az aláíráshoz
    • XS_ADD_TIMESTAMP_SIGNATURE - SignatureTimeStamp elemet illeszt be; amennyiben a módosítandó aláírásban még nincs egyetlen egy XAdES-T időbélyeg sem, a függvény hibát jelez
    • XS_ADD_TIMESTAMP_REFS - SigAndRefsTimeStamp vagy RefsOnlyTimeStamp elemet illeszt be; amennyiben a módosítandó aláírásban még nincs egyetlen egy XAdES-X időbélyeg sem, a függvény hibát jelez
    • XS_ADD_TIMESTAMP_ARCHIVE - ArchiveTimeStamp elemet illeszt be; amennyiben a módosítandó aláírásban még nincs egyetlen egy XAdES-A időbélyeg sem, a függvény hibát jelez
    • XS_ADD_TIMESTAMP_EXTRA - egy új időbélyeget illeszt be, ha az aláírás eléri a beállított XAdES típust

XS_RV XS_ASiC_Verify(XS_ASIC_SIGNATURE_HANDLE signatureHandle, XS_ASIC_VERIFY_DATA_PTR pData);

Ellenőrzi a megadott aláírást. Ha az aláírás helyességét a függvény a visszatérési értékében jelzi. Lásd: visszatérési értékek.

Paraméterek:

XS_ASIC_SIGNATURE_HANDLE signatureHandle

Bemeneti paraméter. Azon aláíráshoz tartozó handle, amelyiket ellenőrizni szeretnénk.

typedef XS_HANDLE XS_ASIC_SIGNATURE_HANDLE;
XS_ASIC_VERIFY_DATA_PTR pData

Bemeneti paraméter. Az ellenőrzéssel kapcsolatos adatokat tartalmazó struktúrára mutató pointer. Jelenleg nem használjuk. Értéke mindig NULL.

XS_RV XS_ASiC_RemoveSignature(XS_ASIC_SIGNATURE_HANDLE signatureHandle);

Eltávolítja a megadott aláírást az ASiC konténerből.

Paraméterek:

XS_ASIC_SIGNATURE_HANDLE signatureHandle

Bemeneti paraméter. Azon aláíráshoz tartozó handle, amelyiket el szeretnénk távolítani.

typedef XS_HANDLE XS_ASIC_SIGNATURE_HANDLE;

XS_RV XS_ESign_StartSession(XS_CHAR_PTR startUrl, XS_ESIGN_DOCUMENT_LIST_PTR docsToSign, XS_SESSION_PARAMS_JSON_PTR sessionParams, XS_CUSTOM_ESIGN_PARAMS_PTR CustomParams);

Új ESign munkamenet indítása. Jelenleg a parancs segítségével egy dokumentum kétmenetes aláírásához lehet munkamenetet indítani. Használat előtt szükséges lehet az ESign központi szerverrel való biztonságos kommunikációhoz szükséges egyéb paraméterek (pl. authentikációs adatok) beállítása is.

Paraméterek:

XS_CHAR_PTR startUrl

Bemeneti paraméter. A központi szerver URL-je, amelyhez a munkamenet indítási kérelmet intézzük.

XS_ESIGN_DOCUMENT_LIST_PTR docsToSign

Bemeneti paraméter. Az aláírandó dokumentum elérési útja.

typedef struct esign_document_param
{
	XS_ULONG structSize;
	XS_ULONG documentCount;
	XS_ESIGN_DOCUMENT_PTR documentElements;
} XS_ESIGN_DOCUMENT_LIST, XS_PTR XS_ESIGN_DOCUMENT_LIST_PTR;
  • structSize – a struktúra méretét tartalmazza
  • documentCount – hány dokumentumot adunk át.
  • documentElements – a struktúra, ami tartalmazza a dokumentum adatait.(struktúra méret, dokumentum név, letöltési url, letöltési url lejárati ideje)
XS_SESSION_PARAMS_JSON_PTR sessionParams

Kimeneti paraméter. A létrehozott munkamenet paraméterei (pl. sessionID) JSON formátumban.

typedef XS_CHAR_PTR_PTR XS_SESSION_PARAMS_JSON_PTR;
XS_CUSTOM_ESIGN_PARAMS_PTR pCustomParams

Bemeneti paraméter. Az eSign munkamenet személyreszabása végezhető el e paraméter segítségével .

typedef struct custom_esign_params 
{
	XS_ULONG structSize;
	XS_CHAR_PTR		customSPName;
	XS_CHAR_PTR		customMessage;
	XS_CHAR_PTR		customURIScheme;
	XS_CHAR_PTR		customFilters;
	XS_BOOL			documentStateProvided;
} XS_CUSTOM_ESIGN_PARAMS, XS_PTR XS_CUSTOM_ESIGN_PARAMS_PTR;
  • structSize – a struktúra méretét tartalmazza
  • customSPName – a service provider neve adható meg string formájában. Mobil aláíráskor ez megjelenik a felhasználói felületen.
  • customMessage – egyedi üzenet, ami mobil aláíráskor ez megjelenik a felhasználói felületen.
  • customURIScheme – opcionálisan megadható URI séma. Alapértelmezett értéke: "esign"
  • customFilters – JSON formátumban tartalmazza a protokoll során használt tanúsítványhoz támasztott szűrőfeltételeket (további információkért lásd az ESign protokoll dokumentációját). Nincs alapértelmezett értéke.
  • documentStateProvided – Igaz érték esetén jelzi az e-Szignó a közvetítő szervernek, hogy támogatjuk a dokumentumok állapotának beállítását (lásd: XS_ESign_SetDocumentState).

XS_RV XS_ESign_GetQRCodeXS_SESSION_PARAMS_JSON pSessionParams,XS_CHAR_PTR customURIScheme, XS_QR_BUFFER_PTR pSessionParamsQR;

A mobil alíráshoz szükséges QR kódot adja vissza.

Parameters:

XS_SESSION_PARAMS_JSON_PTR sessionParams

Bemeneti paraméter. A létrehozott munkamenet paraméterei (pl. sessionID) JSON formátumban.

typedef XS_CHAR_PTR_PTR XS_SESSION_PARAMS_JSON_PTR;
XS_CHAR_PTR customURIScheme

Bemeneti paraméter. opcionálisan megadható URI séma. Alapértelmezett értéke: "esign"

typedef XS_CHAR_PTR_PTR XS_SESSION_PARAMS_JSON_PTR;
XS_QR_BUFFER_PTR sessionParamsQR

Ki- és bemeneti paraméter. Az ESign URI-t és az abból készített QR kódot tartalmazza.

typedef struct qr {
	XS_ULONG structSize;
	XS_BUFFER	buffer;
	XS_ULONG	type;
	XS_BUFFER	esignURI;
} XS_QR_BUFFER, XS_PTR XS_QR_BUFFER_PTR;
  • structSize – a struktúra méretét tartalmazza
  • buffer – QR kódot tartalmazza a megadott formátumban (lásd: type)
  • type – Képformátum. Lehetséges értékek: QR_TYPE_BMP (.bmp), QR_TYPE_PNG (.png).
  • esignURI – URI-t tartalmazó buffer (akkor használható session indítására, ha nem lehetséges a QR kód beolvasása)

XS_RV XS_ESign_CancelSession(XS_SESSION_PARAMS_JSON sessionParams);

ESign munkamenet törlése. Erre akkor lehet szükség például, ha a kétmenetes aláírás első fázisához lejárt tanúsítványt kaptunk az aláíró klienstől.

Paraméterek:

XS_SESSION_PARAMS_JSON sessionParams

Bemeneti paraméter. A munkamenet indításakor létrehozott, a munkamenet paramétereit tartalmazó JSON.

typedef XS_CHAR_PTR_PTR XS_SESSION_PARAMS_JSON_PTR;

XS_RV XS_ESign_Poll_Certificate(XS_SESSION_PARAMS_JSON sessionParams, XS_BUFFER_PTR pOut, XS_POLL_CERT_PTR pPollData, XS_ESIGN_POLL_OPTIONS_PTR pollOptions);

Tanúsítvány lekérése az ESign központi szervertől. Előbbi a kétmenetes aláírás első feléhez szükséges.

Paraméterek:

XS_SESSION_PARAMS_JSON sessionParams

Bemeneti paraméter. A munkamenet indításakor létrehozott, a munkamenet paramétereit tartalmazó JSON.

typedef XS_CHAR_PTR_PTR XS_SESSION_PARAMS_JSON_PTR;
XS_BUFFER_PTR pOut

Kimeneti paraméter. A lekérés során visszakapott adatot tartalmazza. Az XS_BUFFER struktúra definícióját lásd az XS_OpenDossier függvény leírásánál.

XS_POLL_CERT_PTR pPollData

Bemeneti paraméter. A lekéréshez szükséges információkat tartalmazza. Értéke egy XS_POLL_CERT típusú struktúrára mutató pointer

typedef struct poll_cert {
	XS_ULONG		structSize;
	XS_CHAR_PTR		certUrl;
}XS_POLL_CERT, XS_PTR XS_POLL_CERT_PTR;
	
  • structSize – a struktúra méretét tartalmazza
  • certUrl – az ESign központi szerver tanúsítvány lekéréshez tartozó URL-je
XS_ESIGN_POLL_OPTIONS_PTR pollOptions

Bemeneti paraméter. Lekérés időzítési paraméterei.

typedef struct poll_options {
	XS_ULONG structSize;
	XS_ULONG pollDelay;
	XS_DOUBLE pollTimeout;
} XS_ESIGN_POLL_OPTIONS, XS_PTR XS_ESIGN_POLL_OPTIONS_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pollDelay - két lekérés közötti időtartam másodpercben
  • pollTimeout - időtúllépés másodpercben

XS_RV XS_ESign_Poll_SignedHashes(XS_SESSION_PARAMS_JSON sessionParams, XS_ESIGN_DOCUMENT_HASH_LIST_PTR pOutBuff, XS_POLL_SIGNED_PTR pPollData, XS_ESIGN_POLL_OPTIONS_PTR pollOptions);

Aláírt hash lekérése az ESign központi szervertől. A kétmenetes aláírás második feléhez szükséges. Aláírt hash lekérése esetén ugyanezen parancson belül megtörténik az aláíratlan hash felküldése (ezt írja majd alá a kliens).

Paraméterek:

XS_SESSION_PARAMS_JSON sessionParams

Bemeneti paraméter. A munkamenet indításakor létrehozott, a munkamenet paramétereit tartalmazó JSON.

typedef XS_CHAR_PTR_PTR XS_SESSION_PARAMS_JSON_PTR;
XS_ESIGN_DOCUMENT_HASH_LIST_PTR pOutBuff

Kimeneti paraméter. A lekérés során visszakapott adatot tartalmazza.

typedef struct esign_hash_list
{
	XS_ULONG structSize;
	XS_ULONG count;
	XS_ESIGN_DOCUMENT_HASH_PTR esignDocumentHash;
} XS_ESIGN_DOCUMENT_HASH_LIST, XS_PTR XS_ESIGN_DOCUMENT_HASH_LIST_PTR;
				
  • structSize – a struktúra méretét tartalmazza
  • count – az aláírt hashek száma
  • esignDocumentHash – egy aláírt lenyomatot tartalmazó strukúrára mutató pointer. XS_ESIGN_DOCUMENT_HASH strukúra elemei:
    typedef struct esign_hash
    {
    	XS_ULONG structSize;
    	XS_CHAR_PTR hash;
    } XS_ESIGN_DOCUMENT_HASH, XS_PTR XS_ESIGN_DOCUMENT_HASH_PTR;
    						
    • structSize – a struktúra méretét tartalmazza
    • hash – base64 kódolt aláírt hashre mutató pointer
XS_POLL_SIGNED_PTR pPollData

Bemeneti paraméter. A lekéréshez szükséges információkat tartalmazza. Értéke egy XS_POLL_SIGNED típusú struktúrára mutató pointer:

typedef struct poll_signed {
	XS_ULONG							structSize;
	XS_CHAR_PTR							unsignedHashUrl;
	XS_CHAR_PTR							signedHashUrl;
	XS_ESIGN_DOCUMENT_HASH_LIST_PTR		unsignedHashes;
	XS_BOOL								usePKCS7;
} XS_POLL_SIGNED, XS_PTR XS_POLL_SIGNED_PTR;
				
  • structSize – a struktúra méretét tartalmazza
  • unsignedHashUrl – az ESign központi szerver aláíratlan hash felküldéséhez tartozó URL-je
  • signedHashUrl – az ESign központi szerver aláírt hash lekéréshez tartozó URL-je
  • unsignedHashes – az aláíratlan lenyomatokat base64 kódolva tartalmazó tömb, amelyet a másik fél alá fog írni. XS_ESIGN_DOCUMENT_HASH_LIST_PTR leírása fentebb található
  • usePKCS7 – XS_TRUE esetén az ESign szervernek PKCS7 aláírással együtt küldi fel az aláíratlan hash-t az e-szignó (lásd ESign protokoll leírás). Megjegyzés: a Microsec ESign központi szerver a nem teszt felhasználóknál a setUnsignedHashes kérést csak aláírva fogadja el, ilyenkor tehát az opció értéke XS_TRUE kell, hogy legyen és be kell állítani egy megfelelő aláírói tanúsítványt is.
XS_ESIGN_POLL_OPTIONS_PTR pollOptions

Bemeneti paraméter. Lekérés időzítési paraméterei.

typedef struct poll_options {
	XS_ULONG structSize;
	XS_ULONG pollDelay;
	XS_DOUBLE pollTimeout;
} XS_ESIGN_POLL_OPTIONS, XS_PTR XS_ESIGN_POLL_OPTIONS_PTR;
  • structSize – a struktúra méretét tartalmazza
  • pollDelay - két lekérés közötti időtartam másodpercben
  • pollTimeout - időtúllépés másodpercben

XS_RV XS_ESign_SetDocumentState(XS_SESSION_PARAMS_JSON sessionParams, XS_CHAR_PTR setDocumentStateURL, XS_ESIGN_DOCUMENT_STATE_LIST_PTR pDocumentStates);

A dokumentumok állapotának közvetítő szerver felé történő megadását szolgáló függvény. Az állapotok megadásával lehet jelezni a közvetítő szervernek, hogy sikerült-e az aláírás, vagy esetleg valami hiba történt.

Paraméterek:

XS_SESSION_PARAMS_JSON sessionParams

Bemeneti paraméter. A munkamenet indításakor létrehozott, a munkamenet paramétereit tartalmazó JSON.

typedef XS_CHAR_PTR_PTR XS_SESSION_PARAMS_JSON_PTR;
XS_CHAR_PTR setDocumentStateURL

Bemeneti paraméter. ESign központi szerver dokumentumok állapotának beállításához tartozó URL-je.

XS_ESIGN_DOCUMENT_STATE_LIST_PTR pDocumentStates

Bemeneti paraméter. Az állapotok küldéséhez szükséges információkat tartalmazza. Értéke egy XS_ESIGN_DOCUMENT_STATE_LIST típusú struktúrára mutató pointer

typedef struct esign_doc_state_list
{
	XS_ULONG structSize;
	XS_ULONG documentCount;
	XS_ESIGN_DOCUMENT_STATE_PTR documentElements;
} XS_ESIGN_DOCUMENT_STATE_LIST, XS_PTR XS_ESIGN_DOCUMENT_STATE_LIST_PTR;
	
  • structSize – a struktúra méretét tartalmazza
  • documentCount – tömbelemek számát tartalmazza
  • documentElements – állapotok listája, documentCount darab XS_ESIGN_DOCUMENT_STATE értéket tartalmazó tömb, az elemek az XS_ESign_StartSession-ben megadott dokumentumok sorrendjét követi
typedef struct esign_doc_state
{
	XS_ULONG structSize;
	XS_CHAR_PTR docState;
	XS_CHAR_PTR docStateComment;
} XS_ESIGN_DOCUMENT_STATE, XS_PTR XS_ESIGN_DOCUMENT_STATE_PTR;
	
  • structSize – a struktúra méretét tartalmazza
  • docState – dokumentum állapota, a következő értékeket veheti fel: signed (a dokumentumot sikerült aláírni), can_not_be_signed (hiba történt az aláírási folyamat közben), unsigned (aláírás folyamatban, ez a dokumentumok eredeti állapota a session kezdetekor, ha nincs állapotváltozás, ezt kell megadni)
  • docStateComment – állapotokhoz tartalmazó kommentek, csak akkor szükséges megadni, ha az állapothoz plusz információt szeretnénk közölni

Példák

Új e-akta létrehozása, dokumentum beillesztése, mentés

XS_RV test()
{
    int                      rc = 0;
    HMODULE                  hDll = NULL;
    t_pfnXS_GetFunctionList  pEntry = NULL;
    XS_RV                    xsRC = XSR_OK;
    int                      initted = 0;
    XS_INITIALIZE_DATA       init_data;
    hDll = LoadLibrary("xsign.dll");
    if (!hDll)
    {
        goto end;
    }
    /* getting main entry point */
    pEntry = (t_pfnXS_GetFunctionList)GetProcAddress(hDll, "XS_GetFunctionList");
    if (!pEntry)
    {
        fprintf(stderr, "error getting XS_GetFunctionList entry point.\n");
        goto end;
    }
    /* getting function list */
    xsRC = pEntry(&pXSign);
    if (xsRC != XSR_OK)
    {
        goto end;
    }
    /* log path */
    xsRC = pXSign->XS_SetOption(XSO_LOG_FILE_PATH, "xsign_log.txt");
    if (xsRC != XSR_OK)
    {
        goto end;
    }
    XS_INSERT_DOCUMENT_DATA idc_data;
    XS_RV xsRC = XSR_OK;
    XS_DOSSIER_HANDLE hDossier = 0;
    XS_SAVE_DOSSIER_DATA sd_data;
    /* create a new dossier */
    xsRC = pXSign->XS_NewDossier(NULL, &hDossier);
    if (xsRC != XSR_OK)
    {
        goto end;
    }
    /* inserting a document */
    memset(&idc_data, 0, sizeof(idc_data));
    idc_data.structSize = sizeof(idc_data);
    idc_data.pFilePath = "test.txt";
    xsRC = pXSign->XS_InsertDocument(hDossier, &idc_data, NULL);
    if (xsRC != XSR_OK)
    {
        goto end;
    }
    /* save dossier */
    memset(&sd_data, 0, sizeof(sd_data));
    sd_data.structSize = sizeof(sd_data);
    sd_data.pFilePath = "new.es3";
    xsRC = pXSign->XS_SaveDossier(hDossier, &sd_data);
    if (xsRC != XSR_OK)
    {
        goto end;
    }
end:
    return xsRC;
}

Aláírás PFX fájllal

XS_RV test()
{
    int                      rc = 0;
    HMODULE                  hDll = NULL;
    t_pfnXS_GetFunctionList  pEntry = NULL;
    XS_RV                    xsRC = XSR_OK;
    int                      initted = 0;
    XS_INITIALIZE_DATA       init_data;
    hDll = LoadLibrary("xsign.dll");
    if (!hDll)
    {
        goto end;
    }
    /* getting main entry point */
    pEntry = (t_pfnXS_GetFunctionList)GetProcAddress(hDll, "XS_GetFunctionList");
    if (!pEntry)
    {
        fprintf(stderr, "error getting XS_GetFunctionList entry point.\n");
        goto end;
    }
    /* getting function list */
    xsRC = pEntry(&pXSign);
    if (xsRC != XSR_OK)
    {
        goto end;
    }
    /* log path */
    xsRC = pXSign->XS_SetOption(XSO_LOG_FILE_PATH, "xsign_log.txt");
    if (xsRC != XSR_OK)
    {
        goto end;
    }
    XS_RV xsRC = XSR_OK;
    XS_RV xsRC2 = XSR_OK;
    XS_OPEN_DOSSIER_DATA od_data;
    XS_DOSSIER_HANDLE hDossier = 0;
    XS_INITIALIZE_DATA init_data;
    XS_SIGNING_CERTIFICATE_DATA scd;
    XS_PFX_KEY_DATA pfxd;
    int reinitted = 0;
    /*******************************/
    xsRC = pXSign->XS_Finalize(NULL);
    if (xsRC != XSR_OK)
    {
        goto end;    
    }
    memset(&init_data, 0, sizeof(init_data));
    init_data.structSize = sizeof(init_data);
    init_data.pWorkDir = ".";
    init_data.pRegFilePath = "./test_reg.xml";
    xsRC = pXSign->XS_Initialize(&init_data);
    if (xsRC != XSR_OK)
    {
        goto end;
    }
    reinitted = 1;
    xsRC = pXSign->XS_SetOption(XSO_WORK_SILENT,(XS_VOID_PTR)XS_FORCE_SILENT);
    if (xsRC != XSR_OK)
    {
        goto end;
    }
    /* set pfx key */
    memset(&scd, 0, sizeof(scd));
    memset(&pfxd, 0, sizeof(pfxd));
    pfxd.structSize = sizeof(pfxd);
    pfxd.pPath = "./keys/test_alairas.pfx";
    pfxd.pPassword = "12345";
    scd.structSize = sizeof(scd);
    scd.keyType = XS_KEYFORM_PFX;
    scd.pData = &pfxd;
    xsRC = pXSign->XS_SetOption(XSO_SIGNING_CERTIFICATE, &scd);
    if (xsRC != XSR_NOT_REGISTERED)
    {
        xsRC = XSR_FUNCTION_FAILED;
        goto end;    
    }    
    /* anyway, keep on trying */
    memset(&od_data, 0, sizeof(od_data));
    od_data.structSize = sizeof(od_data);
    od_data.pFilePath = "./proba.es3";
    xsRC = pXSign->XS_OpenDossier(&od_data, &hDossier);
    if (xsRC != XSR_OK)
    {
        goto end;
    }
    xsRC = pXSign->XS_SignFrame(hDossier, NULL_PTR, NULL_PTR);
    if (xsRC != XSR_FUNCTION_FAILED)
    {
        xsRC = XSR_FUNCTION_FAILED;
        goto end;
    }
    xsRC = pXSign->XS_FreeDossier(NULL_PTR, &hDossier);
    if (xsRC != XSR_OK)
    {
        goto end;
    }
end:
    if (reinitted)
    {
        xsRC2 = pXSign->XS_Finalize(NULL);
        if (xsRC2 != XSR_OK)
        {
            goto end_end;    
        }
        memset(&init_data, 0, sizeof(init_data));
        init_data.structSize = sizeof(init_data);
        init_data.pWorkDir = ".";
        xsRC2 = pXSign->XS_Initialize(&init_data);
        if (xsRC2 != XSR_OK)
        {
            goto end_end;
        }
    }
end_end:
    return xsRC;
}

Kétmenetes PDF aláírás

/* step1
char* argv[] = {„app_name”, „app_parameter”, „path_to_jar_files”, „step1”, „sample.pdf”, „half_signed.pdf”};
*/
/* step2
char* argv[] = {„app_name”, „app_parameter”, „path_to_jar_files”, „step2”, „half_signed.pdf”, 
    „WrfdsgrE465fdGFD...fefdsnklvr7”, „signed.pdf”};
*/
extern XS_FUNCTION_LIST_PTR pXSign;
/* try 2-step pdf signature creation */
XS_RV test(int argc, char* argv[])
{
    XS_RV xsRC = XSR_OK;
    
    /*******************************/
    if (argc < 4)
        return XSR_FUNCTION_FAILED;
    xsRC = pXSign->XS_SetOption(XSO_JAR_PATH, (XS_VOID_PTR)argv[2]);
    if (xsRC != XSR_OK)
    {
        fprintf(stderr, "XS_SetOption failed, returned %d\n", xsRC);
        goto end;
    }
    xsRC = pXSign->XS_SetOption(XSO_WIN_USE_CERT_STORE, (XS_VOID_PTR)XS_FALSE);
    if (xsRC != XSR_OK)
    {
        fprintf(stderr, "XS_SetOption failed, returned %d\n", xsRC);
        goto end;
    }
    xsRC = pXSign->XS_SetOption(XSO_TRUSTED_CERT_DIR, (XS_VOID_PTR)"test_files/trusted_certs");
    if (xsRC != XSR_OK)
    {
        fprintf(stderr, "XS_SetOption failed, returned %d\n", xsRC);
        goto end;
    }
    xsRC = pXSign->XS_SetOption(XSO_INTERMEDIATE_CERT_DIR, (XS_VOID_PTR)"test_files/intermediate_certs");
    if (xsRC != XSR_OK)
    {
        fprintf(stderr, "XS_SetOption failed, returned %d\n", xsRC);
        goto end;
    }
    if (strcmp(argv[3], "step1") == 0)
    {
        XS_SIGNING_CERTIFICATE_DATA scd;
        XS_CERT_KEY_DATA ckd;
        XS_OPEN_PDF_DOCUMENT_DATA        opdfdd;
        XS_PDF_DOCUMENT_HANDLE            hpdfdoc;
        XS_SIGN_PDF_DOCUMENT_DATA        signpdfdd;
        XS_PDF_SIGNATURE_HANDLE            hpdfsig;
        XS_GET_UNSIGNED_HASH_PDF_SIGNATURE_DATA guhpdfsd;
        XS_SAVE_PDF_DOCUMENT_DATA        savepdfdd;
        char *pUnsignedPDF;
        char *pHalfSignedPDF;
        char *pUnsignedHash;
        /********************************************/
        if (argc < 6)
            return XSR_FUNCTION_FAILED;
        pUnsignedPDF = argv[4];
        pHalfSignedPDF = argv[5];
        xsRC = pXSign->XS_SetOption(XSO_WORK_SILENT, (XS_VOID_PTR)XS_FORCE_SILENT);
        if (xsRC != XSR_OK) 
        {
            fprintf(stderr, "XS_SetOption failed, returned %d\n", xsRC);
            goto end;
        }
        memset(&scd, 0, sizeof(scd));
        scd.structSize = sizeof(scd);
        scd.keyType = XS_KEYFORM_CERT;
        memset(&ckd, 0, sizeof(ckd));
        ckd.structSize = sizeof(ckd);
        ckd.pPath = "test_files/func_000018.cer";
        scd.pData = &ckd;
        xsRC = pXSign->XS_SetOption(XSO_SIGNING_CERTIFICATE, &scd);
        if (xsRC != XSR_OK)
        {
            fprintf(stderr, "XS_SetOption failed, returned %d\n", xsRC);
            goto end;
        }
        memset(&opdfdd, 0, sizeof(opdfdd));
        opdfdd.structSize = sizeof(opdfdd);
        opdfdd.pFilePath = pUnsignedPDF;
        xsRC = pXSign->XS_OpenPDFDocument(&opdfdd, &hpdfdoc);
        if (xsRC != XSR_OK) 
        {
            fprintf(stderr, "XS_OpenPDFDocument failed, returned %d\n", xsRC);
            goto end;
        }
        memset(&signpdfdd, 0, sizeof(signpdfdd));
        signpdfdd.structSize = sizeof(signpdfdd);
        signpdfdd.preserveSize = 16*1024;
        xsRC = pXSign->XS_SignPDFDocument(hpdfdoc, &signpdfdd, &hpdfsig);
        if (xsRC != XSR_OK) 
        {
            fprintf(stderr, "XS_SignPDFDocument failed, returned %d\n", xsRC);
            goto end;
        }
        memset(&guhpdfsd, 0, sizeof(guhpdfsd));
        guhpdfsd.structSize = sizeof(guhpdfsd);
        guhpdfsd.ppBASE64EncodedUnsignedHash = &pUnsignedHash;
        xsRC = pXSign->XS_GetUnsignedHashPDFSignature(hpdfsig, &guhpdfsd);
        if (xsRC != XSR_OK) 
        {
            fprintf(stderr, "XS_GetUnsignedHashPDFSignature failed, returned %d\n", xsRC);
            goto end;
        }
        memset(&savepdfdd, 0, sizeof(savepdfdd));
        savepdfdd.structSize = sizeof(savepdfdd);
        savepdfdd.pFilePath = pHalfSignedPDF;
        xsRC = pXSign->XS_SavePDFDocument(hpdfdoc, &savepdfdd);
        if (xsRC != XSR_OK) 
        {
            fprintf(stderr, "XS_SavePDFDocument failed, returned %d\n", xsRC);
            goto end;
        }
        xsRC = pXSign->XS_FreePDFDocument(NULL, &hpdfdoc);
        if (xsRC != XSR_OK)
        {
            fprintf(stderr, "XS_FreePDFDocument failed, returned %d\n", xsRC);
            goto end;
        }
        printf("%s", pUnsignedHash);
    }
    else if (strcmp(argv[3], "step2") == 0)
    {
        char *pHalfSignedPDF;
        char *pSignedHash;
        char *pSignedPDF;
        XS_OPEN_PDF_DOCUMENT_DATA        opdfdd;
        XS_PDF_DOCUMENT_HANDLE            hpdfdoc;
        XS_SET_SIGNED_HASH_PDF_SIGNATURE_DATA sshpdfsd;
        XS_HANDLE_ARRAY                    hpdfsigs;
        XS_SAVE_PDF_DOCUMENT_DATA        savepdfdd;
        
        /*********************************/
        if (argc < 7)
            return XSR_FUNCTION_FAILED;
        pHalfSignedPDF = argv[4];
        pSignedHash = argv[5];
        pSignedPDF = argv[6];
        xsRC = pXSign->XS_SetOption(XSO_TIMESTAMP_URL_LIST, (XS_VOID_PTR)"http://teszt.e-szigno.hu/tsa");
        if (xsRC != XSR_OK)
        {
            fprintf(stderr, "XS_SetOption failed, returned %d\n", xsRC);
            goto end;
        }
        xsRC = pXSign->XS_SetOption(XSO_SIGNATURE_LEVEL, (XS_VOID_PTR)XS_SIGLEVEL_B_T);
        if (xsRC != XSR_OK)
        {
            fprintf(stderr, "XS_SetOption failed, returned %d\n", xsRC);
            goto end;
        }
		
        xsRC = pXSign->XS_SetOption(XSO_XADES_VERSION, (XS_VOID_PTR)XS_XADES_VERSION_EN_1_0_0);
        if (xsRC != XSR_OK)
        {
            fprintf(stderr, "XS_SetOption failed, returned %d\n", xsRC);
            goto end;
        }
        memset(&opdfdd, 0, sizeof(opdfdd));
        opdfdd.structSize = sizeof(opdfdd);
        opdfdd.pFilePath = pHalfSignedPDF;
        xsRC = pXSign->XS_OpenPDFDocument(&opdfdd, &hpdfdoc);
        if (xsRC != XSR_OK) 
        {
            fprintf(stderr, "XS_OpenPDFDocument failed, returned %d\n", xsRC);
            goto end;
        }
        memset(&hpdfsigs, 0, sizeof(hpdfsigs));
        xsRC = pXSign->XS_GetPDFSignatures(hpdfdoc, &hpdfsigs);
        if (xsRC != XSR_OK) 
        {
            fprintf(stderr, "XS_GetPDFSignatures failed, returned %d\n", xsRC);
            goto end;
        }
        memset(&sshpdfsd, 0, sizeof(sshpdfsd));
        sshpdfsd.structSize = sizeof(sshpdfsd);
        sshpdfsd.pBASE64EncodedSignedHash = pSignedHash;
        xsRC = pXSign->XS_SetSignedHashPDFSignature(hpdfsigs.phHandles[hpdfsigs.ulCount - 1], &sshpdfsd);
        if (xsRC != XSR_OK) 
        {
            fprintf(stderr, "XS_SetSignedHashPDFSignature failed, returned %d\n", xsRC);
            goto end;
        }
        memset(&savepdfdd, 0, sizeof(savepdfdd));
        savepdfdd.structSize = sizeof(savepdfdd);
        savepdfdd.pFilePath = pSignedPDF;
        xsRC = pXSign->XS_SavePDFDocument(hpdfdoc, &savepdfdd);
        if (xsRC != XSR_OK) 
        {
            fprintf(stderr, "XS_SavePDFDocument failed, returned %d\n", xsRC);
            goto end;
        }
        xsRC = pXSign->XS_FreePDFDocument(NULL, &hpdfdoc);
        if (xsRC != XSR_OK)
        {
            fprintf(stderr, "XS_FreePDFDocument failed, returned %d\n", xsRC);
            goto end;
        }
    }
    xsRC = XSR_OK;
end:
    return xsRC;
}