Download - Svetlin Nakov
Download - Svetlin Nakov
Download - Svetlin Nakov
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