24.12.2014 Views

Download - Svetlin Nakov

Download - Svetlin Nakov

Download - Svetlin Nakov

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Skip padding from the end of encoded data<br />

int tail = data.length;<br />

while (data[tail-1] == '=')<br />

tail--;<br />

byte decodedBuf[] = new byte[tail - data.length/4];<br />

// ASCII-printable to 0-63 conversion<br />

for (int i = 0; i < data.length; i++)<br />

data[i] = mBase64DecMap[data[i]];<br />

// 4-byte to 3-byte conversion<br />

int srcIndex, destIndex;<br />

for (srcIndex = 0, destIndex=0; destIndex < decodedBuf.length-2;<br />

srcIndex += 4, destIndex += 3) {<br />

decodedBuf[destIndex] = (byte) ( ((data[srcIndex] >> 4) & 003) );<br />

decodedBuf[destIndex+1] = (byte) ( ((data[srcIndex+1] >> 2) & 017) );<br />

decodedBuf[destIndex+2] = (byte) ( ((data[srcIndex+2] > 4) & 003) );<br />

if (++destIndex < decodedBuf.length)<br />

decodedBuf[destIndex] = (byte) ( ((data[srcIndex+1] >> 2) & 017) );<br />

}<br />

return decodedBuf;<br />

}<br />

Как работи аплетът за подписване на файл<br />

Аплетът използва класа netscape.javascript.JSObject за достъп до полетата<br />

на HTML формата, взима от нея избрания от потребителя файл и го<br />

подписва. При подписването първо се прочита съдържанието на файла, след<br />

което се показва на потребителя диалогът за избор на PFX файл и парола за<br />

достъп до него.<br />

След като потребителят избере PFX файл, този файл се прочита и от него се<br />

извлича личният ключ и съответната му сертификационна верига. Тази<br />

верига винаги започва със сертификата на потребителя, но е възможно да се<br />

състои единствено от него, т. е. да не съдържа други сертификати.<br />

Ако извличането на личния ключ и сертификационната верига от PFX файла<br />

е успешно, сертификационната верига се кодира по подходящ начин в<br />

текстов вид, за да може да бъде пренесена през текстово поле на HTML<br />

формата. Използва се стандартното кодиране PkiPath, което представлява<br />

последователност от ASN.1 DER-кодирани сертификати. Получената кодирана<br />

сертификационна верига се кодира допълнително с Base64 за да добие<br />

текстов вид.<br />

88

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!