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.

Read all X.509 certificate files one by one into an array<br />

int index = 0;<br />

Iterator trustedCertsResourceNamesIter = trustedCertsResNames.iterator();<br />

while (trustedCertsResourceNamesIter.hasNext()) {<br />

String certResName = (String) trustedCertsResourceNamesIter.next();<br />

InputStream certStream =<br />

aServletContext.getResourceAsStream(certResName);<br />

try {<br />

X509Certificate trustedCertificate =<br />

DigitalSignatureUtils.loadX509CertificateFromStream(certStream);<br />

trustedCertificates[index] = trustedCertificate;<br />

index++;<br />

} finally {<br />

certStream.close();<br />

}<br />

}<br />

}<br />

return trustedCertificates;<br />

%><br />

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

Първоначално се проверява дали в сесията е записан action form обектът,<br />

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

това означава, че данни не са получени и потребителят се съобщава, че<br />

трябва да зареди страницата за подписване и изпращане на файл. Ако action<br />

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

се отпечатват.<br />

След това се декодира получената от клиента сертификационна верига.<br />

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

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

Base64 декодиране. След това от този бинарен вид се възстановява<br />

оригиналната последователност от X.509 сертификати като се има предвид,<br />

че кодирането е било извършено във формат PkiPath. От декодираната<br />

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

при подписването. Този сертификат е винаги първият сертификат от<br />

тази верига.<br />

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

оригиналният й бинарен вид, след което се проверява дали тя е валидна. От<br />

сертификата на клиента се извлича публичният му ключ и с него се<br />

проверява дали получената сигнатура съответства на получения документ.<br />

На потребителя се отпечатва сигнатурата, в текстов вид, както е получена,<br />

заедно с резултата от нейната проверка.<br />

След като се установи, че получената сигнатура е истинска, се преминава<br />

към проверка на получения сертификат. Първоначално се отпечатва<br />

информация за сертификата – кой е негов собственик и за какво е предназначен<br />

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

валиден. Проверката се извършва директно, без да се използва сертифи-<br />

124

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

Saved successfully!

Ooh no, something went wrong!