Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
JniStreaming3Kmip.java
package com.p6r.kmip;
import org.junit.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
public class JniStreaming3Kmip {
private static final String _hostName = "kmiptest01.p6r.com";
@BeforeClass
public static void oneTimeSetUp() {
// NOOP
System.out.println("@BeforeClass - oneTimeSetUp");
}
@AfterClass
public static void oneTimeTearDown() {
// NOOP
System.out.println("@AfterClass - oneTimeTearDown");
}
@Before
public void setUp() {
// NOOP
System.out.println("@Before - setUp");
}
@After
public void tearDown() {
// NOOP
System.out.println("@After - tearDown");
}
@Test
public void JNICall_streaming3KMIP() {
System.out.println("@Test - JNICall-streaming3KMIP");
CryptoParams params = null;
byte[] sampleData1 = new byte[100];
byte[] sampleData2 = new byte[50];
byte[] sampleData3 = new byte[75];
byte[] correlation = null;
P6KMIPClient kc = new P6KMIPClient();
try {
// [A] Show how to stream sign
for (int i = 0; i < sampleData1.length; i++) sampleData1[i] = (byte) (i + 22);
for (int i = 0; i < sampleData2.length; i++) sampleData2[i] = (byte) (i + 19);
for (int i = 0; i < sampleData3.length; i++) sampleData3[i] = (byte) (i + 7);
kc.initializeLibrary(P6KMIPClient.FLAGS_NONE);
kc.open(_hostName, null);
// -> sign with the private key and verify with the public key
KeyPairIds pi = kc.createKeyPair(KMIPConstants.ALG_RSA, 2048, KMIPConstants.USAGE_MASK_VERIFY, KMIPConstants.USAGE_MASK_SIGN);
System.out.println("\nUID of new public key: " + pi.getPublicKeyUID());
System.out.println("UID of new private key: " + pi.getPrivateKeyUID());
kc.activate(pi.getPublicKeyUID());
kc.activate(pi.getPrivateKeyUID());
SignData rawData = new SignData();
rawData.setData(sampleData1);
params = new CryptoParams();
params.setCryptoAlgorithm(KMIPConstants.ALG_RSA);
params.setPaddingMethod(KMIPConstants.PAD_PSS);
params.setHashAlgorithm(KMIPConstants.HASH_SHA256);
// -> perform the sign operation in 3 or more steps
StreamHandle sh1 = kc.signInit(pi.getPrivateKeyUID(), params, rawData);
correlation = sh1.getHandle();
assertNotEquals(null, correlation);
System.out.println("\nThe signInit correlation value bytes [" + correlation.length + "]");
for (int i = 0; i < correlation.length; i++) {
System.out.print(correlation[i] + ", ");
}
System.out.print("\n");
// -> signUpdate can be called multiple times if needed
rawData.setData(sampleData2);
kc.signUpdate(pi.getPrivateKeyUID(), rawData, correlation);
System.out.println("signUpdate successful");
rawData.setData(sampleData3);
byte[] signature = kc.signFinal(pi.getPrivateKeyUID(), rawData, correlation);
assertNotEquals(signature, null);
System.out.println("The signature bytes returned from signFinal [" + signature.length + "]");
for (int i = 0; i < signature.length; i++) {
System.out.print(signature[i] + ", ");
}
System.out.print("\n");
// [B] Show how to stream signatureVerify
rawData.setData(sampleData1);
StreamHandle sh2 = kc.signatureVerifyInit(pi.getPublicKeyUID(), params, rawData, signature);
correlation = sh2.getHandle();
assertNotEquals(null, correlation);
System.out.println("\nThe signatureVerifyInit correlation value bytes [" + correlation.length + "]");
for (int i = 0; i < correlation.length; i++) {
System.out.print(correlation[i] + ", ");
}
System.out.print("\n");
// -> signatureVerifyUpdate can be called multiple times if needed (does not have to match signUpdate() number of calls)
rawData.setData(sampleData2);
kc.signatureVerifyUpdate(pi.getPublicKeyUID(), rawData, correlation);
System.out.println("signatureVerifyUpdate successful");
rawData.setData(sampleData3);
boolean isVerified = kc.signatureVerifyFinal(pi.getPublicKeyUID(), rawData, correlation);
assertEquals(isVerified, true);
System.out.println("Signature was verified");
// [C] An active key cannot be destroyed
kc.revoke(pi.getPublicKeyUID(), KMIPConstants.REVOCATION_CESSATION_OF_OPERATION, "Done with Sign streaming Test");
kc.revoke(pi.getPrivateKeyUID(), KMIPConstants.REVOCATION_CESSATION_OF_OPERATION, "Done with Sign streaming Test");
kc.destroy(pi.getPublicKeyUID());
kc.destroy(pi.getPrivateKeyUID());
kc.close();
kc.freeLibrary();
} catch (Exception e) {
System.out.println(e.toString());
assertEquals(0, 1);
}
}
}