Thursday, June 19, 2008

Information Card Size

Nokia 6212 NFC
Having Information Cards stored on limited capability devices (USB Tokens, SIM cards, UICC cards etc) currently is a difficult because many of the more secure devices have very little memory. People who have openend a crd file with an text editor or looked at a card in RoamingInformationCard format might have noticed that most of the space needed is due to the card image.

I suggest that we change the Information Card format and introduce a new element that is a reference to the actual image.

Instead of:

<ic:InformationCard xml:lang="xs:language" ...>
<ic:InformationCardReference> ... </ic:InformationCardReference>
<ic:CardName> xs:string </ic:CardName> ?
<ic:CardImage MimeType=”xs:string”> xs:base64Binary </ic:CardImage> ?
<ic:Issuer> xs:anyURI </ic:Issuer>
<ic:TimeIssued> xs:dateTime </ic:TimeIssued>
<ic:TimeExpires> xs:dateTime </ic:TimeExpires> ?
<ic:TokenServiceList> ... </ic:TokenServiceList>
<ic:SupportedTokenTypeList> ... </ic:SupportedTokenTypeList>
<ic:SupportedClaimTypeList> ... </ic:SupportedClaimTypeList>
<ic:RequireAppliesTo ...> ... </ic:RequireAppliesTo> ?
<ic:PrivacyNotice ...> ... </ic:PrivacyNotice> ? ...
</ic:InformationCard>


I would like to have something like:
<ic:InformationCard xml:lang="xs:language" ...>
<ic:InformationCardReference> ... </ic:InformationCardReference>
<ic:CardName> xs:string </ic:CardName> ?
<ic:CardImageRef MimeType=”xs:string”
hash="xs:base64Binary"
width="xs:unsignedInt"px height="xs:unsignedInt"px filesize="xs:unsignedInt"
href="xs:anyURI"/> ?
<ic:Issuer> xs:anyURI </ic:Issuer>
<ic:TimeIssued> xs:dateTime </ic:TimeIssued>
<ic:TimeExpires> xs:dateTime </ic:TimeExpires> ?
<ic:TokenServiceList> ... </ic:TokenServiceList>
<ic:SupportedTokenTypeList> ... </ic:SupportedTokenTypeList>
<ic:SupportedClaimTypeList> ... </ic:SupportedClaimTypeList>
<ic:RequireAppliesTo ...> ... </ic:RequireAppliesTo> ?
<ic:PrivacyNotice ...> ... </ic:PrivacyNotice> ? ...
</ic:InformationCard>
  • hash="xs:base64Binary"
    The SHA-1 hash of the image data
  • width="xs:unsignedInt"px height="xs:unsignedInt"px filesize="xs:unsignedInt"
    The width and height of the image in pixel and/or filesize in bytes (optional)
  • href="xs:anyURI"
    The URL where the image data can be retrieved

The id selector can now choose the "right" image for the mobile device based on the image size, but more importantly it can now cache images in the case when more then one card has the same image (URL and hash) or the image was downloaded before. The hash is a protection against DNS spoofing. Alternatively we could define that the href must use SSL and use the id selectors certificate based protection mechanisms against attacks.

No comments: