Sample code for 30+ languages & platforms
Zig

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 Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    // 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
    const sb_xml = try chilkat.StringBuilder.init();
    defer sb_xml.deinit();
    sb_xml.loadFile("qa_data/xml_dsig/sii_cl/signed1.xml", "iso-8859-1") catch {
        std.debug.print("Failed to load input file.\n", .{});
        return;
    };

    const dsig = try chilkat.XmlDSig.init();
    defer dsig.deinit();

    dsig.loadSignatureSb(sb_xml) catch {
        std.debug.print("{s}\n", .{try dsig.getLastErrorText(alloc)});
        return;
    };

    const b_verify_reference_digests = true;
    const b_verified = if (dsig.verifySignature(b_verify_reference_digests)) true else |_| false;
    if (!b_verified) {
        std.debug.print("{s}\n", .{try dsig.getLastErrorText(alloc)});
        return;
    }

    std.debug.print("Signature verified = {}\n", .{b_verified});
}