Signaturformat
Från FriBID
Hoppa till navigeringHoppa till sökIntroduktion[redigera]
Signaturformatet i BankID är baserat på xmldsig. I BankID verkar signaturerna aldrig innehålla några blanktecken (utom i själva datan som signeras), och ser ut att vara i s.k. "kanonisk form".
Uppbyggnad[redigera]
All data som signeras läggs i bankIdSignedData-elementet. Vidare lagras certifikatkedjan till användarens certifikat så att det går att kontrollera att certifikatet godkänt. Detta element hashas sedan, tillsammans med certifikatkedjan, och hashen signeras.
Exempel[redigera]
XML-koden är indenterad för att öka läsbarheten. Normalt står allt på en enda rad.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"> </CanonicalizationMethod> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"> </SignatureMethod> <Reference Type="http://www.bankid.com/signature/v1.0.0/types" URI="#bidSignedData"> <Transforms> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"> </Transform> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"> </DigestMethod> <DigestValue> (Base64-kodad SHA256-hash av hela bankIdSignedData-elementet) </DigestValue> </Reference> <Reference URI="#bidKeyInfo"> <Transforms> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"> </Transform> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"> </DigestMethod> <DigestValue> (Base64-kodad SHA256-hash av hela KeyInfo-elementet) </DigestValue> </Reference> </SignedInfo> <SignatureValue> (Base64-kodad ISO-SHA1-RSA-signatur av hela SignedInfo-elementet) </SignatureValue> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#" Id="bidKeyInfo"> <X509Data> <X509Certificate> (användarens certifikat i DER-format, lagrat Base64-kodat) </X509Certificate> <X509Certificate> (CAn:s (utgivarens) certifikat. Normalt sett en bank) </X509Certificate> <X509Certificate> (CA:ns CA:s certifikat, osv... Till slut kommer vi till rotcertifikatet från Finansiell ID-teknik) </X509Certificate> </X509Data> </KeyInfo> <Object> <bankIdSignedData xmlns="http://www.bankid.com/signature/v1.0.0/types" Id="bidSignedData"> <usrVisibleData charset="UTF-8" visible="wysiwys"> (Meddelande som användaren ska signera (visas för användaren). Förekommer endast vid underskrift, inte vid inloggning. Informationen här kommer från parametern TextToBeSigned, som även här är Base64-kodad) </usrVisibleData> <usrNonVisibleData> (Samma som usrVisibleData, men visas inte för användaren. Kommer från parametern NonVisibleData om den angetts.) </usrNonVisibleData> <srvInfo> <nonce> ("nonce"-värdet från servern. Kommer från Challenge eller Nonce parametern, och är även här Base64-kodat) </nonce> <serverTime> (Ett 10-siffrigt heltal som är ett tidsvärde från servern. Kommer från parametern ServerTime, om den angetts) </serverTime> </srvInfo> <clientInfo> <funcId>(Här står det "Identification" vid inloggning och "Signing" vid underskrift)</funcId> <host> <fqdn>(webbserverns domännamn, t.ex. localhost)</fqdn> <ip>(webbserverns IP-adress, t.ex. 127.0.0.1)</ip> </host> <version> (Base64-kodad versionssträng) </version> </clientInfo> </bankIdSignedData> </Object> </Signature>