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.

}<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 CertificationChainAndSignatureInBase64 {<br />

public String mCertChain = 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 />

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

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

достъп до него. Ето неговият сорс код:<br />

import java.awt.*;<br />

CertificateFileAndPasswordDialog.java<br />

81

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

Saved successfully!

Ooh no, something went wrong!