Loading…
Tilbage

Profilbillede

PDF Signering

Christian Karleby

Hej

Vi har en signeringsløsning, som indtil nu har været brugt til TEXT og HTML signering med NemId, men nu vil vi gerne have PDF-signering til at fungere også.

Jeg har rodet med det og kan ikke forstå hvorfor jeg ikke kan få Javascript-delen til at klare PDF, men min codefile-funktion viser fint nok PDF'en.

Jeg har valideret PDF'en i PDF-valideringen, og den blev godkendt.

 

Jeg anvender følgende kode til at sætte parametrene:

 

public static string GetJavascriptHtml(JavascriptSettings settings)
{
// Validate that the required settings are specified. If not an exception is thrown.
ValidateSettings(settings);

string signtext = "";
string signTextFormat = "";

switch (settings.SigningFormat)
{
case SigningFormat.Text:
signtext = Tools.Util.Base64Encode(settings.TextToSign);
signTextFormat = "text";
break;
case SigningFormat.Html:
signtext = Tools.Util.Base64Encode(settings.TextToSign);
signTextFormat = "html";
break;
case SigningFormat.Pdf:
signtext = Tools.Util.Base64Encode(settings.DataToSign);
signTextFormat = "PDF";
break;
}

var generator = new JavascriptParameterGenerator(settings);

string props = "challenge=" + settings.Challenge + ";";

generator.AddParameter("SP_CERT", CertUtil.GetCertificateAsBase64(settings.Certificate));
generator.AddParameter("TIMESTAMP", Tools.Util.Base64Encode(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss+0000")));
generator.AddParameter("SIGN_PROPERTIES", props);
generator.AddParameter("ORIGIN", settings.Origin);
generator.AddParameter("CLIENTFLOW", "OCESSIGN2");
generator.AddParameter("SIGNTEXT_FORMAT", signTextFormat);
generator.AddParameter("SIGNTEXT", signtext);
generator.AddParameter("LANGUAGE", settings.DisplayLanguage.ToString());

//generator.AddParameter("clientflow", "ocessign2");

string parameters = generator.GenerateParameters();

return string.Format(Constants.JavascriptHtml, settings.IframeBaseUrl + "/launcher/" + DateTime.Now.Ticks, parameters, settings.IframeBaseUrl, settings.ResultFormAction);
}

 

Når NemID vinduet indlæses, springer den hurtigt videre til fejl-siden og følgende fejl returneres:

"ErrorCode":"APP002",
"Error":"The sign text was illegal, e.g. the HTML document contained illegal tags or the PDF document did not match its hash."

 

Jeg håber nogle kan hjælpe - og som sagt, så er det kun javascript-vinduet som fejler, codefile-vinduet gør ikke.

 

På forhånd tak :)

Christian Karleby

Jeg ved det her er et gammelt spørgsmål, men jeg svarer alligevel hvis der er andre der har samme problem :)

For at validere PDF'er til Javascript klienten skal du bruge Signtext validatoren og ikke PDF validatoren fra https://www.nets.eu/dk-da/kundeservice/nemid-tjenesteudbyder/NemID-tjenesteudbyderpakken/Pages/vaerktoejer.aspx

Jeg har bemærket at PDF'er der godkendes af PDF validatoren ikke nødvendigvis kan godkendes at Signtext validatoren. Tilsyneladende har Javascript klienten strammere krav af en eller anden grund.