<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;
color:black;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:12.0pt;
font-family:"Times New Roman",serif;
color:black;}
span.EstiloCorreo17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=ES link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hi everybody,<o:p></o:p></p><p class=MsoNormal> I found a bug in CCID library. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>In “src/ifdhandler.c” inside “IFDHSetProtocolParameters” function, the speed in bauds of the serial communication is set. But to set this speed, the maximum speed of the card must be lower than the máximum speed of the reader, or the reader must define an “arrayOfSupportedDataRates”.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So, the problem is that my card is too fast for the reader (card baud rate is 250000) and my reader has no “arrayOfSupportedDataRates”:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-family:"Courier New"'>$ lsusb -v | grep DataRate<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> dwDataRate 9600 bps<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> dwMaxDataRate 230400 bps<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> <b>bNumDataRatesSupp. 0<o:p></o:p></b></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>That means that CCID set the speed in bauds to the default speed. That is simply TOO SLOW.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I pathed this in my Linux by adding the following code:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* TA1 present */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> if (atr.ib[0][ATR_INTERFACE_BYTE_TA].present)<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> unsigned int card_baudrate;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> unsigned int default_baudrate;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> double f, d;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> (void)ATR_GetParameter(&atr, ATR_PARAMETER_D, &d);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> (void)ATR_GetParameter(&atr, ATR_PARAMETER_F, &f);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* may happen with non ISO cards */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> if ((0 == f) || (0 == d))<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* values for TA1=11 */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> f = 372;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> d = 1;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> }<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* Baudrate = f x D/F */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> card_baudrate = (unsigned int) (1000 * ccid_desc->dwDefaultClock<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> * d / f);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> default_baudrate = (unsigned int) (1000 * ccid_desc->dwDefaultClock<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> * ATR_DEFAULT_D / ATR_DEFAULT_F);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:70.8pt;text-indent:35.4pt'><span style='font-family:"Courier New"'>DEBUG_INFO3("card_baudrate = %i default_baudrate = %i", card_baudrate, default_baudrate);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* if the card does not try to lower the default speed */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> if ((card_baudrate > default_baudrate)<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* and the reader is fast enough */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> && (card_baudrate <= ccid_desc->dwMaxDataRate))<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* the reader has no baud rates table */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> if ((NULL == ccid_desc->arrayOfSupportedDataRates)<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* or explicitely support it */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> || find_baud_rate(card_baudrate,<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> ccid_desc->arrayOfSupportedDataRates))<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> pps[1] |= 0x10; /* PTS1 presence */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> pps[2] = atr.ib[0][ATR_INTERFACE_BYTE_TA].value;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> DEBUG_COMM2("Set speed to %d bauds", card_baudrate);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> }<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> else<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> DEBUG_COMM2("Reader does not support %d bauds",<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> card_baudrate);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* TA2 present -> specific mode: the card is supporting<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> * only the baud rate specified in TA1 but reader does not<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> * support this value. Reject the card. */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> if (atr.ib[1][ATR_INTERFACE_BYTE_TA].present)<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> return IFD_COMMUNICATION_ERROR;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> }<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> }<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> else<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* the card is too fast for the reader */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> if ((card_baudrate > ccid_desc->dwMaxDataRate +2)<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* but TA1 <= 97 */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> && (atr.ib[0][ATR_INTERFACE_BYTE_TA].value <= 0x97)<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* and the reader has a baud rate table */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> && ccid_desc->arrayOfSupportedDataRates)<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> unsigned char old_TA1;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> old_TA1 = atr.ib[0][ATR_INTERFACE_BYTE_TA].value;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> while (atr.ib[0][ATR_INTERFACE_BYTE_TA].value > 0x94)<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* use a lower TA1 */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> atr.ib[0][ATR_INTERFACE_BYTE_TA].value--;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> (void)ATR_GetParameter(&atr, ATR_PARAMETER_D, &d);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> (void)ATR_GetParameter(&atr, ATR_PARAMETER_F, &f);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* Baudrate = f x D/F */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> card_baudrate = (unsigned int) (1000 *<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> ccid_desc->dwDefaultClock * d / f);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> if (find_baud_rate(card_baudrate,<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> ccid_desc->arrayOfSupportedDataRates))<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> pps[1] |= 0x10; /* PTS1 presence */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> pps[2] = atr.ib[0][ATR_INTERFACE_BYTE_TA].value;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> DEBUG_COMM2("Set adapted speed to %d bauds",<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> card_baudrate);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> break;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> }<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> }<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> /* restore original TA1 value */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> atr.ib[0][ATR_INTERFACE_BYTE_TA].value = old_TA1;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> }<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> <b>/* ================================ ADDED CODE - BEGIN ================================ */<o:p></o:p></b></span></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> else if ((card_baudrate > ccid_desc->dwMaxDataRate +2)<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> /* but TA1 <= 97 */<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> && (atr.ib[0][ATR_INTERFACE_BYTE_TA].value <= 0x97)<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> /* and the reader hasn't a baud rate table */<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> && !ccid_desc->arrayOfSupportedDataRates)<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> {<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> unsigned char old_TA1;<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> old_TA1 = atr.ib[0][ATR_INTERFACE_BYTE_TA].value;<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> while (atr.ib[0][ATR_INTERFACE_BYTE_TA].value > 0x94)<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> {<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> /* use a lower TA1 */<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> atr.ib[0][ATR_INTERFACE_BYTE_TA].value--;<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> (void)ATR_GetParameter(&atr, ATR_PARAMETER_D, &d);<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> (void)ATR_GetParameter(&atr, ATR_PARAMETER_F, &f);<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> /* Baudrate = f x D/F */<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> card_baudrate = (unsigned int) (1000 *<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> ccid_desc->dwDefaultClock * d / f);<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> /* if the card does not try to lower the default speed */<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> if ((card_baudrate > default_baudrate)<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> /* and the reader is fast enough */<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> && (card_baudrate <= ccid_desc->dwMaxDataRate))<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> {<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> pps[1] |= 0x10; /* PTS1 presence */<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> pps[2] = atr.ib[0][ATR_INTERFACE_BYTE_TA].value;<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> <o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> DEBUG_COMM2("Set speed to %d bauds", card_baudrate);<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> break;<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> }<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> }<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> /* restore original TA1 value */<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> atr.ib[0][ATR_INTERFACE_BYTE_TA].value = old_TA1; <o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> <o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> }<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New"'> /* ================================ ADDED CODE - END ================================ */<o:p></o:p></span></b></p><p class=MsoNormal><span style='font-family:"Courier New"'> }<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> }<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>But this sets the speed to 125000 bauds. How can I set the speed to 230400 bps (the reader maximum data rate)?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you and best regards!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 style='border-collapse:collapse'><tr><td colspan=4 style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><b><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#7F7F7F'>Abraham Macías Paredes<o:p></o:p></span></b></p></td></tr><tr><td colspan=4 style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#7F7F7F'>Analista / Programador<o:p></o:p></span></p></td></tr><tr><td colspan=4 style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#7F7F7F'>Departamento de Desarrollo y Soluciones <o:p></o:p></span></p></td></tr><tr><td colspan=4 style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Arial",sans-serif'><a href="mailto:amacias@solutia-it.es">amacias@solutia-it.es</a></span><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#436581'><o:p></o:p></span></p></td></tr><tr><td colspan=4 style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#436581'> <o:p></o:p></span></p></td></tr><tr><td rowspan=2 valign=top style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#436581'><img border=0 width=20 height=200 style='width:.2083in;height:2.0833in' id="_x0000_i1025" src="cid:image001.gif@01D21EE2.1E5BA390"><o:p></o:p></span></p></td><td width=350 colspan=2 valign=top style='width:262.5pt;padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#436581'><a href="http://solutia-it.es/" title="Ir a la Web de Solutia"><span style='color:blue;text-decoration:none'><img border=0 width=280 height=85 style='width:2.9166in;height:.8854in' id="_x0000_i1026" src="cid:image002.gif@01D21EE2.1E5BA390" alt="Ir a la Web de
Solutia"></span></a><o:p></o:p></span></p></td><td width="100%" rowspan=2 valign=top style='width:100.0%;padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#436581'><img border=0 width=200 height=200 style='width:2.0833in;height:2.0833in' id="_x0000_i1027" src="cid:image003.gif@01D21EE2.1E5BA390"><o:p></o:p></span></p></td></tr><tr><td width=50 style='width:37.5pt;padding:.75pt .75pt .75pt .75pt'></td><td width=310 style='width:232.5pt;padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><strong><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#436581'>Solutia Innovaworld Technologies S.L.</span></strong><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#436581'><br>Parque empresarial Los Llanos<br>C/ Extremadura, 108 - 41909 - Salteras (Sevilla)<br>T: +34 955 11 11 55<br>F: +34 954 37 11 42<br><a href="http://www.solutia-it.es"><span style='color:#F05801'>www.solutia-it.es</span></a></span><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#436581;mso-fareast-language:EN-US'><o:p></o:p></span></p></td></tr><tr><td colspan=2 rowspan=2 style='padding:.75pt .75pt .75pt .75pt'></td><td colspan=2 style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#436581'><a href="http://solutia-it.es/calidad/" title="Ver
Certificaciones de Calidad de Solutia"><span style='color:blue;text-decoration:none'><img border=0 width=300 height=90 style='width:3.125in;height:.9375in' id="_x0000_i1028" src="cid:image004.jpg@01D21EE2.1E5BA390" alt="Ver
Certificaciones de Calidad de Solutia"></span></a></span><span style='font-size:8.5pt;font-family:"Arial",sans-serif;color:#436581;mso-fareast-language:EN-US'><o:p></o:p></span></p></td></tr><tr><td colspan=2 style='padding:.75pt .75pt .75pt .75pt'><p><span style='font-size:7.0pt;font-family:"Arial",sans-serif;color:#7F7F7F'>Sus datos personales contenidos en esta comunicación han sido recogidos de los contactos mantenidos por Vd. o por personas de su entorno, con personal de SOLUTIA INNOVAWORLD TECHNOLOGIES, S.L. y han sido incorporados al fichero de GESTIÓN COMERCIAL con la finalidad de realizar la gestión, seguimiento y mantenimiento de nuestra relación comercial, o a otro fichero correspondiente al tipo de relación que mantiene con nosotros, de lo que Vd. fue convenientemente informado al recibir bien el documento contractual entregado al inicio de los contactos bien en una comunicación inmediatamente posterior en que se daba cumplimiento al derecho de información y se le solicitaba consentimiento para tratar sus datos personales, tratamiento que se efectuará de acuerdo a las finalidades allí expresadas.<o:p></o:p></span></p><p><span style='font-size:7.0pt;font-family:"Arial",sans-serif;color:#7F7F7F'>En el caso en que ésta sea la primera comunicación que recibe por nuestra parte, le solicitamos su consentimiento para proceder al tratamiento de sus datos de acuerdo a las condiciones detalladas al inicio. Entenderemos que nos presta su consentimiento si en el plazo de un mes a contar desde la recepción de esta comunicación no nos expresa su voluntad en contra. Le informamos que puede revocar en cualquier momento su consentimiento respondiendo a este mail indicando que no desea recibir más información acerca de nuestra empresa, supuesto en el que será automáticamente dado de baja de nuestra lista de correo.<o:p></o:p></span></p><p><span style='font-size:7.0pt;font-family:"Arial",sans-serif;color:#7F7F7F'>Podrá ejercer sus derechos de acceso, rectificación, cancelación y oposición ante el Responsable del fichero, SOLUTIA INNOVAWORLD TECHNOLOGIES, S.L. en la dirección C/ Extremadura, 108 Parque empresarial Los Llanos; 41909 Salteras, SEVILLA, indicando en la comunicación la referencia "LOPD"<o:p></o:p></span></p></td></tr><tr><td width=22 style='width:16.5pt;padding:0cm 0cm 0cm 0cm'></td><td width=38 style='width:28.5pt;padding:0cm 0cm 0cm 0cm'></td><td width=244 style='width:183.0pt;padding:0cm 0cm 0cm 0cm'></td><td width=404 style='width:303.0pt;padding:0cm 0cm 0cm 0cm'></td></tr></table><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext;mso-fareast-language:EN-US'><o:p> </o:p></span></p></div></body></html>