project 3 specification
==================

implement the Digital Signature Standard in Java, using a Java development environment (NetBeans, Eclipse or whatever you like)

what is given?
------------------
1. an existing example (created as a NetBeans project), called dsa2, which used to work, with hard coded data
2. an old keystore file, called dsa2.jks
2. the DSS specification - FIPS 186-4
3. a links.txt file

what is your Java application supposed to do?
-----------------------------------------------------------

1. you may keep it as a console application or you may create an user interface
2. the application should implement the 10 steps specified as comments in the file PublicKeyCryptography.java
3. the inputs (messages to be signed) are 2: one, as keyboard input, the second one, a .pdf file (the file specification for the .pdf file can be hardcoded in your program)
4. for each of these two inputs, create the digital signatures using AES as symmetric encryption algorithm and the SHA1withRSA as signature combination
5. for the 2 cases (2 message inputs) display the digital signature in hexadecimal format.
6. for the 2 message inputs, display, at the end, the decrypted message in hexadecimal format.
7. your application should display (at the console or in some log file) the execution progress of the application (those specified as comment in the file PublicKeyCryptography.java)

before you start the implementation
-----------------------------------------------

- the application requires digital certificates for both the sender and the receiver. you can create a (java) keystore file containing both certificates using some tool (like portcle - http://portecle.sourceforge.net/).

- for portecle, here are the steps:

1. download portcle from - https://sourceforge.net/projects/portecle/
2. after unzip, you can run the tool (usually (in windows), make a right click on the file portcle.jar and choose open)
3. create a keystore file: File->New Keystore (of type JKS, let's say), then Save Keystore as:
4. at this point, you must create a password for your keystore file, do it
5. specify the name of the file as (let's say) yourfirstnameYourlastname.jks (for example danPopescu.jks)
6. then, create 2 digital certificates (key pairs) (one for the sender, one for the receiver): Tools->Generate Key pair
7. may use RSA, 2048 bits, keep SHA256withRSA
8. input you data (your name, info, uvt, etc., no need for Subject Alt...)
9. Enter alias - whatever you want, like your first name, but remember it, this is your certificate id in the keystore
10. enter the password for your (sender) certificate, remember it, you will need it
11. repeat the 7-10 steps for the receiver's digital certificate (use you last name as alias, let's say)
12. save the keystore