24.12.2014 Views

Download - Svetlin Nakov

Download - Svetlin Nakov

Download - Svetlin Nakov

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

}<br />

bytesRead += fileStream.read(data, bytesRead, fileSize-bytesRead);<br />

}<br />

return data;<br />

}<br />

finally {<br />

fileStream.close();<br />

}<br />

/**<br />

* Signs given document with a given private key.<br />

*/<br />

private byte[] signDocument(byte[] aDocument, PrivateKey aPrivateKey)<br />

throws GeneralSecurityException {<br />

Signature signatureAlgorithm =<br />

Signature.getInstance(DIGITAL_SIGNATURE_ALGORITHM_NAME);<br />

signatureAlgorithm.initSign(aPrivateKey);<br />

signatureAlgorithm.update(aDocument);<br />

byte[] digitalSignature = signatureAlgorithm.sign();<br />

return digitalSignature;<br />

}<br />

/**<br />

* Data structure that holds a pair of private key and<br />

* certification chain corresponding to this private key.<br />

*/<br />

static class PrivateKeyAndCertChain {<br />

public PrivateKey mPrivateKey;<br />

public Certificate[] mCertificationChain;<br />

}<br />

/**<br />

* Data structure that holds a pair of Base64-encoded<br />

* certification chain and digital signature.<br />

*/<br />

static class CertificationChainAndSignatureBase64 {<br />

public String mCertificationChain = null;<br />

public String mSignature = null;<br />

}<br />

/**<br />

* Exception class used for document signing errors.<br />

*/<br />

static class DocumentSignException extends Exception {<br />

public DocumentSignException(String aMessage) {<br />

super(aMessage);<br />

}<br />

}<br />

public DocumentSignException(String aMessage, Throwable aCause) {<br />

super(aMessage, aCause);<br />

}<br />

}<br />

Основният клас на аплета използва още един допълнителен клас<br />

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

да избере библиотека-имплементация на PKCS#11 и PIN код за достъп<br />

до смарт картата:<br />

PKCS11LibraryFileAndPINCodeDialog.java<br />

101

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

Saved successfully!

Ooh no, something went wrong!