defaultUBLExtensionsSignedPropertiesForSigning static method

XmlDocument defaultUBLExtensionsSignedPropertiesForSigning({
  1. required String signingTime,
  2. required String certificateHash,
  3. required String certificateIssuer,
  4. required String certificateSerialNumber,
})

Generates the default xades:SignedProperties XML template.

Implementation

static XmlDocument defaultUBLExtensionsSignedPropertiesForSigning({
  required String signingTime,
  required String certificateHash,
  required String certificateIssuer,
  required String certificateSerialNumber,
}) {
  final builder = XmlBuilder();
  builder.element(
    'xades:SignedProperties',
    nest: () {
      builder.attribute('xmlns:xades', 'http://uri.etsi.org/01903/v1.3.2#');
      builder.attribute('Id', 'xadesSignedProperties');

      builder.element(
        'xades:SignedSignatureProperties',
        nest: () {
          builder.element('xades:SigningTime', nest: signingTime);

          builder.element(
            'xades:SigningCertificate',
            nest: () {
              builder.element(
                'xades:Cert',
                nest: () {
                  builder.element(
                    'xades:CertDigest',
                    nest: () {
                      builder.element(
                        'ds:DigestMethod',
                        nest: () {
                          builder.attribute(
                            'xmlns:ds',
                            'http://www.w3.org/2000/09/xmldsig#',
                          );
                          builder.attribute(
                            'Algorithm',
                            'http://www.w3.org/2001/04/xmlenc#sha256',
                          );
                        },
                      );
                      builder.element(
                        'ds:DigestValue',
                        nest: () {
                          builder.attribute(
                            'xmlns:ds',
                            'http://www.w3.org/2000/09/xmldsig#',
                          );
                          builder.text(certificateHash);
                        },
                      );
                    },
                  );

                  builder.element(
                    'xades:IssuerSerial',
                    nest: () {
                      builder.element(
                        'ds:X509IssuerName',
                        nest: () {
                          builder.attribute(
                            'xmlns:ds',
                            'http://www.w3.org/2000/09/xmldsig#',
                          );
                          builder.text(certificateIssuer);
                        },
                      );
                      builder.element(
                        'ds:X509SerialNumber',
                        nest: () {
                          builder.attribute(
                            'xmlns:ds',
                            'http://www.w3.org/2000/09/xmldsig#',
                          );
                          builder.text(certificateSerialNumber);
                        },
                      );
                    },
                  );
                },
              );
            },
          );
        },
      );
    },
  );
  return builder.buildDocument();
}