FriBID forum

FriBID är ett fritt program för e-legitimation med BankID.

You are not logged in.

#1 2012-09-19 16:51:05

Svinto
Member
Registered: 2011-09-20

www.volvokort.com returnerar 8004 vid ansökan

Försökte ansöka om ett volvokort. Men får 8004 när jag ska signera.
Såg i wikin att felkoden står för "InvalidParameter".

http://www.volvokort.com/privat/om/ansokan/info.html

Något jag lade märke till som kanske är relaterat är att namnet i webbformuläret är förifyllt och innehåller bara mitt efternamn.
Antar att den läste av namnet från mitt bankID.
Gick kanske något snett när förnamnet skulle läsas av.

Några idéer?
Kan man få fribid att logga till en fil kanske? Så man kunde se exakt vad den felar på.

FriBID: version 1.0.1a
OS: Arch Linux
Webbläsare: Firefox 15.0.1

Kör med BankID på kort.
Har handelsbankens dosa.

config:
[expiry]
best-before=1350613825
still-valid=true
version-to-emulate=4.15.0.14
checked-with-version=2

Last edited by Svinto (2012-09-19 16:52:39)

Offline

#2 2012-09-19 19:55:36

samuellb
Administratör
Registered: 2010-02-15
Website

Re: www.volvokort.com returnerar 8004 vid ansökan

Det där med efternamnet är nog inget fel i FriBID eftersom banken bestämmer hur certifikatet ska se ut. FriBID ska inte kunna påverka det.

Om du kollar vilka anropen till "SetParam" är i källkoden när du signerar (alltså när dialogrutan är uppe), så kan jag kolla om det faktiskt är någon parameter som inte stöds av FriBID eller om det är något annat knas.

Offline

#3 2012-09-20 07:49:28

Svinto
Member
Registered: 2011-09-20

Re: www.volvokort.com returnerar 8004 vid ansökan

Problemet är att dialogrutan för signeringen aldrig kommer upp.
När den borde komma upp så får jag i stället ett felmeddelande från hemsidan som säger att den fick felkoden 8004 från bankID-programvaran.

Offline

#4 2012-09-20 08:17:48

samuellb
Administratör
Registered: 2010-02-15
Website

Re: www.volvokort.com returnerar 8004 vid ansökan

Försök att snabbt avbryta laddningen av felsidan (tryck escape snabbt t.ex.) och se om du kan få fram källkoden för sidan innan (den som ska visa dialogrutan). Annars finns det lite olika verktyg du kan använda för att logga vad som skickas:

https://wiki.fribid.se/sidor/Hjälpmedel

Offline

#5 2012-09-26 14:50:38

Svinto
Member
Registered: 2011-09-20

Re: www.volvokort.com returnerar 8004 vid ansökan

Sidan laddas aldrig om. Jag klickar på en "bekräfta"-knapp i formuläret på webbsidan och direkt dyker en ruta ut med ett felmeddelande.

Jag undersökte med Firebug och fick all data som skickades.

Efter att jag klickat på knappen "bekräfta" på webbsidan så skickas en HTTP GET till https://www.volvokort.com/signature/request.html?data=... . Som svar får jag en stor javascript-klump, vilket jag antar körs och pratar med Fribid på något sätt.
Utdrag från svaret från servern:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Signera</title>
    </head>
    <body>
        
            
                
<form name="signform" action="https://www.volvokort.com/signature/submit.html" method="POST">
  <input type="hidden" name="signature" value="" />
  <input type="hidden" name="error" value="" />
  <input type="hidden" name="installed" value="" />
</form>

<script language="JavaScript">
    // Script for EID Signature creation using the BankID BISP Client.
    // Copyright Nordic Edge AB 2010
...massa javascript...

Därefter skickas en HTTP POST från min webbläsare till https://www.volvokort.com/signature/submit.html med följande data:

Content-Type: application/x-www-form-urlencoded
signature=&error=8004&installed=true

Då den intressanta datan verkar skickas mellan javascript-koden och fribid så vet jag inte om jag kan se den.
Några fler idéer?

Offline

#6 2012-09-26 14:54:13

samuellb
Administratör
Registered: 2010-02-15
Website

Re: www.volvokort.com returnerar 8004 vid ansökan

Javascript-koden vore bra att ha också. Fast ta bort personlig information och base64-kodad data (den kan se ut t.ex så här: "aGVqc2FuCgo=")

Offline

#7 2012-09-26 15:09:32

Svinto
Member
Registered: 2011-09-20

Re: www.volvokort.com returnerar 8004 vid ansökan

Här är javascript-koden. Jag har ersatt texten i variablen tbs (den innehöll base64-kodad text med bl.a. mitt personnummer).

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Signera</title>
    </head>
    <body>
        
            
                
<form name="signform" action="https://www.volvokort.com/signature/submit.html" method="POST">
  <input type="hidden" name="signature" value="" />
  <input type="hidden" name="error" value="" />
  <input type="hidden" name="installed" value="" />
</form>

<script language="JavaScript">
    // Script for EID Signature creation using the BankID BISP Client.
    // Copyright Nordic Edge AB 2010

    // Activates signing for B.
    // Will post signature to server, or error code upon client error.
    // Script for EID Signature creation using the BankID BISP Client.
    // Copyright Nordic Edge AB 2010

    // Activates signing.
    // Will post signature to server, or error code upon client error.

    // Define global NEAS object
    if (typeof NEAS == "undefined" || !NEAS) {
        var NEAS = {};
    }
    // Define NEAS BISP module
    NEAS.BISP = {};

    // Define NEAS Signature module
    NEAS.BISP.Signature = (function() {

        // Private variables
        var postOnCancel = true;
        var pluginId     = "BispPluginId";
        var onlyMru      = "true";
        var nonce        = "Qj33VlFO7iy6dnQPznjRnw==";
        var tbs          = "en lång base64-kodad sträng som jag tror innehåller den texten som ska visas i bankID-dialogen.";
        var policys      = "$$POLICYS$$";
        var hiddenTbs    = "$$HIDDENDATA$$";

        // Private methods

        // Gets the plugin type.
        // Returns "Plugin", "ActiveX" or "Not installed".
        function getPluginType () {
            var pluginName = "Nexus Personal";
            var activeXName = "Nexus.SignerV2Ctl";
            try {
                if (new ActiveXObject(activeXName)) return "ActiveX";
            } catch(e) {
                if (navigator.plugins[pluginName]) return "Plugin";
            }
            return "Not installed";
        }

        // Loads the plugin depending on type.
        function loadPlugin (pluginType) {
            var mimeType = "application/x-personal-signer2";
            var activeXId = "CLSID:FB25B6FD-2119-4CEF-A915-A056184C565E";

            var objHldr = document.createElement("object");
            if (pluginType == "Plugin") {
              objHldr.setAttribute("type", mimeType);
            } else {
              objHldr.setAttribute("classid", activeXId);
            }

            objHldr.setAttribute("id", pluginId);
            objHldr.setAttribute("width", "0");
            objHldr.setAttribute("height", "0");
            document.body.appendChild(objHldr);
        }

        // Sets a parameter if it is defined.
        // If the parameter value contains '$$', it won't be set.
        function setParam (plugin, name, value) {
            var isParamDefined = (value != null && value.indexOf("$$") < 0);
            return isParamDefined ? plugin.SetParam(name, value) : 0;
        }

        // Misc error code checking functions.
        function isOk (code) {return code == 0;}
        function isError (code) {return !isOk(code);}
        function isCancel (code) {return (code == -1 || code == 8002);}

        // Posts form declaring "Client not installed".
        function postNotInstalled () {
            document.signform.installed.value = false;
            document.signform.error.value = -1;
            document.signform.submit();
        }

        // Posts from including client error code;
        function postError (code) {
            document.signform.installed.value = true;
            document.signform.error.value = code;
            document.signform.submit();
        }

        // Posts from with cancel error code;
        function postCancel (code) {
            if (postOnCancel) {
                document.signform.installed.value = true;
                document.signform.error.value = "cancel";
                document.signform.submit();
            }
        }

        // Posts form with the signature.
        function postSignature (signature) {
            document.signform.installed.value = true;
            document.signform.error.value = 0;
            document.signform.signature.value = signature;
            document.signform.submit();
        }

        // Public methods
        return {
            // Display sign dialog
            sign : function () {

                // Load the plugin
                var pluginType = getPluginType();
                if (pluginType == "Not installed") {
                  postNotInstalled();
                  return;
                } else {
                  loadPlugin(pluginType);
                }

                var plugin = document.getElementById(pluginId);
                var retVal = 0;

                // Set parameters
                retVal = isOk(retVal) ? setParam(plugin, "OnlyAcceptMRU", onlyMru) : retVal;
                retVal = isOk(retVal) ? setParam(plugin, "Nonce", nonce) : retVal;
                retVal = isOk(retVal) ? setParam(plugin, "TextToBeSigned", tbs) : retVal;
                retVal = isOk(retVal) ? setParam(plugin, "Policys", policys) : retVal;
                retVal = isOk(retVal) ? setParam(plugin, "NonVisibleData", hiddenTbs) : retVal;

                // Sign and fetch the signature
                var signature = "";
                if (isOk(retVal)) {
                  retVal = plugin.PerformAction("Sign");
                }
                if (isOk(retVal)) {
                  signature = plugin.GetParam("Signature");
                }

                // Post the result
                if (isCancel(retVal)) {
                    postCancel();
                } else if (isError(retVal)) {
                  postError(retVal);
                } else {
                  postSignature(signature);
                }
            }


        };
    }());

    NEAS.BISP.Signature.sign();

</script>

            
            
            
        
    </body>
</html>

Offline

#8 2012-09-26 15:15:22

samuellb
Administratör
Registered: 2010-02-15
Website

Re: www.volvokort.com returnerar 8004 vid ansökan

Tack! Det är parametern "OnlyAcceptMRU" som inte är implementerad i FriBID. Jag kan lägga till den senare i veckan (så att det inte returnerar en felkod i alla fall)...

Offline

#9 2012-09-26 15:20:09

Svinto
Member
Registered: 2011-09-20

Re: www.volvokort.com returnerar 8004 vid ansökan

Alright. Väntar med spänning.
Tack för hjälpen så långt. Det är underbart att kunna köra BankID med hjälp av Fribid.

EDIT: Enligt följande dokument så verkar parametern frivillig.
http://www.bankid.com/Global/wwwbankidc … %202.1.pdf

Parameter: OnlyAcceptMRU
Beskrivning: Om den här är satt visas endast senast använt BankID i signeringsdialogen.
Av BankID föreskrivet värde: Endast pluginen för underskrift. Frivillig

Last edited by Svinto (2012-09-26 15:27:10)

Offline

Board footer

Powered by FluxBB