unit diFirmaSat;
interface
{ 
  Delphi/FreePascal interface for FirmaSAT
  $Id: diFirmaSAT.pas $ */
  Copyright (C) 2010-16 David Ireland, DI Management Services Pty Limited.
  All rights reserved. <www.di-mgt.com.au> <www.cryptosys.net>
  Provided as is with no warranties. Use at your own risk.
  Last updated:
    $Date: 2016-01-25 04:59 $
    $Revision: 7.2.0 $
 }
 
  function SAT_Version : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_LicenceType : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_CompileTime(szOutput : PAnsiChar; nOutChars : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_ModuleName(szOutput : PAnsiChar; nOutChars : LongInt; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_LastError(szOutput : PAnsiChar; nOutChars : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_ErrorLookup(szOutput : PAnsiChar; nOutChars : LongInt; nErrCode : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_MakePipeStringFromXml(szOut : PAnsiChar; nOutChars : LongInt; szXmlFile : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_MakeSignatureFromXml(szOut : PAnsiChar; nOutChars : LongInt; szInputXmlFile : AnsiString; szKeyFile : AnsiString; szPassword : AnsiString) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_MakeSignatureFromXmlEx(szOut : PAnsiChar; nOutChars : LongInt; szXmlFile : AnsiString; szKeyFile : AnsiString; szPassword : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_ValidateXml(szXmlFile : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_VerifySignature(szXmlFile : AnsiString; szCertFile : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_SignXml(szOutputFile : AnsiString; szInputXmlFile : AnsiString; szKeyFile : AnsiString; szPassword : AnsiString; szCertFile : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_MakeDigestFromXml(szOut : PAnsiChar; nOutChars : LongInt; szXmlFile : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_ExtractDigestFromSignature(szOut : PAnsiChar; nOutChars : LongInt; szXmlFile : AnsiString; szCertFile : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_GetCertNumber(szOut : PAnsiChar; nOutChars : LongInt; szFileName : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_GetCertExpiry(szOut : PAnsiChar; nOutChars : LongInt; szFileName : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_GetCertAsString(szOut : PAnsiChar; nOutChars : LongInt; szFileName : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_GetXmlAttribute(szOut : PAnsiChar; nOutChars : LongInt; szXmlFile : AnsiString; szAttribute : AnsiString; szElement : AnsiString) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_GetXmlAttributeEx(szOut : PAnsiChar; nOutChars : LongInt; szXmlFile : AnsiString; szAttribute : AnsiString; szElement : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_CheckKeyAndCert(szKeyFile : AnsiString; szPassword : AnsiString; szCertFile : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_XmlReceiptVersion(szXmlFile : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_FixBOM(szOutputFile : AnsiString; szInputFile : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_GetKeyAsString(szOut : PAnsiChar; nOutChars : LongInt; szKeyFile : AnsiString; szPassword : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_WritePfxFile(szOutputFile : AnsiString; szPfxPassword : AnsiString; szKeyFile : AnsiString; szKeyPassword : AnsiString; szCertFile : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_QueryCert(szOut : PAnsiChar; nOutChars : LongInt; szFileName : AnsiString; szQuery : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_SignXmlToString(szOut : PAnsiChar; nOutChars : LongInt; szXmlData : AnsiString; szKeyFile : AnsiString; szPassword : AnsiString; szCertFile : AnsiString; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';
  function SAT_Uuid(szOut : PAnsiChar; nOutChars : LongInt; nOptions : LongInt) : LongInt; stdcall; external 'diFirmaSAT2.dll';

const
  { OPTION FLAGS AND CONSTANTS }
  SAT_HASH_DEFAULT   = 0;
  SAT_HASH_MD5       = $10;
  SAT_HASH_SHA1      = $20;
  SAT_DATE_NOTBEFORE = $1000;
  SAT_TFD            = $8000;
  SAT_XML_STRICT     = 0;
  SAT_XML_LOOSE      = $4000;
  SAT_ENCODE_UTF8    = 0;
  SAT_ENCODE_LATIN1  = 1;
  SAT_FILE_NO_BOM    = $2000;
  SAT_KEY_ENCRYPTED  = $10000;
  SAT_XML_EMPTYELEMTAG  = $20000;
  SAT_FILE_BIGFILE      = $8000000;
  SAT_GEN_PLATFORM   = $40;
  SAT_MAX_HASH_CHARS = 64;
  SAT_MAX_ERROR_CHARS = (4073-1);
  
implementation
end.