Sample code for 30+ languages & platforms
Zig

Examine the Contents of a .p7m by Converting to XML

Examines the contents of a .p7m signature by converting it to XML.

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.

    const asn = try chilkat.Asn.init();
    defer asn.deinit();

    asn.loadBinaryFile("qa_data/p7m/a.p7m") catch {
        std.debug.print("{s}\n", .{try asn.getLastErrorText(alloc)});
        return;
    };

    // Convert to XML.
    const str_xml = try asn.asnToXml(alloc);

    // The XML returned by AsnToXml will be compact.
    // To get the XML indented in human-readable form, load
    // into the Chilkat XML object and emit..
    const xml = try chilkat.Xml.init();
    defer xml.deinit();
    xml.loadXml(str_xml) catch {};

    std.debug.print("{s}\n", .{try xml.getXml(alloc)});
    xml.saveXml("qa_output/a.xml") catch {};

    // -----------------------------------------------------------------------------------------
    // Also see Chilkat's online tool to examine a .p7m and generate code to duplicate the .p7m
    // -----------------------------------------------------------------------------------------
}