forked from kasundezoysa/javacrypto
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathECCSignature.java
56 lines (39 loc) · 1.44 KB
/
ECCSignature.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
Kasun De Zoysa @ UCSC
Compile:
javac -cp ../BC/bcprov-jdk16-146.jar ECCSignature.java
Execute:
java -cp ../BC/bcprov-jdk16-146.jar:. ECCSignature
*/
import java.security.Security;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;
import java.security.Signature;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
public class ECCSignature{
public static void main(String[] args)throws Exception {
Security.addProvider(new BouncyCastleProvider());
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("ECDSA");
keyGen.initialize(256,new SecureRandom());
KeyPair keyPair = keyGen.generateKeyPair();
Signature signature = Signature.getInstance("SHA256withECDSA");
// generate a signature
signature.initSign(keyPair.getPrivate());
String msg1="Hello Kasun How are you?";
signature.update(msg1.getBytes());
byte[] sigBytes = signature.sign();
System.out.println("Signature: ");
for(byte b:sigBytes) System.out.format("%02x",b);
System.out.println("");
// verify a signature
signature.initVerify(keyPair.getPublic());
String msg2="Hello Kasun How are you?";
signature.update(msg2.getBytes());
if (signature.verify(sigBytes)){
System.out.println("Signature verification succeeded.");
} else {
System.out.println("Signature verification failed.");
}
}
}