Sample code for 30+ languages & platforms
SQL Server

Verify Factura Electronica Chile SII (iso-8859-1)

See more XAdES Examples

Demonstrates how to verify SII XML stored as iso-8859-1 having just a single signature.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- This example requires the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    -- The signed XML to be verified in this example contains the following:

    -- <?xml version="1.0" encoding="ISO-8859-1"?>
    -- <DTE version="1.0" xmlns="http://www.sii.cl/SiiDte">
    -- <Documento ID="F13T34">
    -- ...
    -- </Documento>
    -- <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    -- ....
    -- </Signature>
    -- </DTE>

    -- Load the signed XML into sbXml -- telling Chilkat to interpret the bytes as iso-8859-1 
    DECLARE @sbXml int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbXml OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OAMethod @sbXml, 'LoadFile', @success OUT, 'qa_data/xml_dsig/sii_cl/signed1.xml', 'iso-8859-1'
    IF @success = 0
      BEGIN

        PRINT 'Failed to load input file.'
        EXEC @hr = sp_OADestroy @sbXml
        RETURN
      END

    DECLARE @dsig int
    EXEC @hr = sp_OACreate 'Chilkat.XmlDSig', @dsig OUT

    EXEC sp_OAMethod @dsig, 'LoadSignatureSb', @success OUT, @sbXml
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @dsig, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @sbXml
        EXEC @hr = sp_OADestroy @dsig
        RETURN
      END

    DECLARE @bVerifyReferenceDigests int
    SELECT @bVerifyReferenceDigests = 1
    DECLARE @bVerified int
    EXEC sp_OAMethod @dsig, 'VerifySignature', @bVerified OUT, @bVerifyReferenceDigests
    IF @bVerified = 0
      BEGIN
        EXEC sp_OAGetProperty @dsig, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @sbXml
        EXEC @hr = sp_OADestroy @dsig
        RETURN
      END


    PRINT 'Signature verified = ' + @bVerified

    EXEC @hr = sp_OADestroy @sbXml
    EXEC @hr = sp_OADestroy @dsig


END
GO