Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
JniResponse4Kmip.java
Go to the documentation of this file.
1 package com.p6r.kmipserverlib;
2 
3 import org.junit.*;
4 
5 import java.math.BigInteger;
6 import java.text.DateFormat;
7 import java.text.SimpleDateFormat;
8 import java.util.Date;
9 import java.util.TimeZone;
10 
11 import static org.junit.Assert.assertEquals;
12 
22 public class JniResponse4Kmip {
23 
24  @BeforeClass
25  public static void oneTimeSetUp() {
26  // NOOP
27  System.out.println("@BeforeClass - oneTimeSetUp");
28  }
29 
30  @AfterClass
31  public static void oneTimeTearDown() {
32  // NOOP
33  System.out.println("@AfterClass - oneTimeTearDown");
34  }
35 
36  @Before
37  public void setUp() {
38  // NOOP
39  System.out.println("@Before - setUp");
40  }
41 
42  @After
43  public void tearDown() {
44  // NOOP
45  System.out.println("@After - tearDown");
46  }
47 
53  @Test
54  public void JNICall_Response4KMIP() {
55  System.out.println("@Test - JNICall-Respnse4KMIP");
56 
57  P6KMIPServerLib sl = new P6KMIPServerLib();
58 
59  try {
60  sl.initializeLibrary(P6KMIPServerLib.FLAGS_NONE);
61 
62  // [A] Generate a response message in TTLV
63  sl.startResponseMessage(5, KMIPConstants.FORMAT_TTLV, 2);
64 
65  byte[] batchId1 = {0x01, 0x02, 0x03, 0x04};
66  byte[] batchId2 = {0x01, 0x02, 0x03, (byte) 0xF4};
67  byte[] batchId3 = {0x01, 0x77 };
68  byte[] batchId4 = {0x33, 0x77 };
69  byte[] batchId5 = {0x33, 0x00, 0x02, 0x77 };
70 
71  byte[] fakeKeyMaterial = {0x7F, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
72 
73  byte[] fakeECKeyBytes = { 0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, (byte)0x91, 0x2a, 0x0e, 0x20, (byte)0x8f, 0x5d, (byte)0xd7, 0x34, (byte)0xb1, (byte)0x85, 0x18, 0x47,
74  (byte)0xe4, 0x65, (byte)0x9c, 0x45, (byte)0x88, (byte)0xb1, 0x6d, (byte)0x9f, 0x3b, (byte)0xc1, (byte)0xad, (byte)0xa5, 0x10, (byte)0xea, 0x2c, (byte)0x96, (byte)0x9d, (byte)0xaf, (byte)0x9e,
75  (byte)0xf4, (byte)0xa0, 0x0a, 0x06, 0x08, 0x2a, (byte)0x86, 0x48, (byte)0xce, 0x3d, 0x03, 0x01, 0x07, (byte)0xa1, 0x44, 0x03, 0x42, 0x00, 0x04,
76  (byte)0xb3, 0x44, 0x39, 0x2f, (byte)0xb7, 0x2a, (byte)0xa2, 0x67, (byte)0xf8, 0x6d, 0x7d, (byte)0x83, 0x7d, (byte)0xe1, (byte)0xd9, 0x6c, (byte)0xe9, 0x60, (byte)0xff,
77  (byte)0xc0, 0x5c, (byte)0xee, (byte)0xf3, (byte)0xf1, (byte)0xfa, 0x26, (byte)0xd8, 0x54, 0x6a, 0x64, 0x42, (byte)0xf3, (byte)0xc1, 0x39, 0x7e, (byte)0x92, (byte)0x9a, (byte)0xad,
78  (byte)0x8d, (byte)0xca, (byte)0xb2, 0x5b, 0x28, 0x2c, (byte)0xa8, (byte)0xa1, (byte)0xcf, 0x00, (byte)0xbe, (byte)0xf7, (byte)0xcb, 0x18, (byte)0xa0, (byte)0xf5, (byte)0xea, 0x44, 0x49,
79  0x3a, 0x30, (byte)0xa6, (byte)0xd2, 0x23, (byte)0xb2, 0x5b };
80 
81  byte[] fakeCertBytes = {
82  0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x6b, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, (byte) 0x92, 0x09, 0x00, 0x00, 0x00, 0x08,
83  0x00, 0x00, 0x00, 0x00, 0x5a, 0x19, (byte) 0xac, (byte) 0xcc, 0x42, 0x00, 0x0d, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x03, 0x10,
84  0x42, 0x00, 0x5c, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, (byte) 0x93, 0x08, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
85  };
86 
87  long timeStamp = System.currentTimeMillis();
88  DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss Z");
89  df.setTimeZone(TimeZone.getTimeZone("GMT"));
90 
91  Date today = new Date(timeStamp);
92  System.out.println("Unix Time stamp: " + timeStamp + ", date: " + df.format(today) + "\n");
93 
94  Attribute state = new Attribute(KMIPConstants.ATTRIB_STATE, 0, KMIPConstants.STATE_ACTIVE);
95  Attribute cryptoMask = new Attribute(KMIPConstants.ATTRIB_CRYPTOUSAGEMASK, 0, new Integer((KMIPConstants.USAGE_MASK_ENCRYPT | KMIPConstants.USAGE_MASK_DECRYPT)));
96  Attribute initialDate = new Attribute(KMIPConstants.ATTRIB_INITIALDATE, 0, new Long(timeStamp));
97 
98  CustomAttribute ca2 = new CustomAttribute("x-p6r-clientcomment", "by convention we place company name after x- to avoid collisions");
99  Attribute custom = new Attribute(0, ca2);
100 
101  Attribute[] attributes = new Attribute[4];
102  attributes[0] = state;
103  attributes[1] = initialDate;
104  attributes[2] = cryptoMask;
105  attributes[3] = custom;
106 
107  GetSymmetricKeyResponse sk = new GetSymmetricKeyResponse(batchId1, "1111-2222-3333-4444-5555", fakeKeyMaterial, KMIPConstants.ALG_AES, 128, attributes);
108  sl.addBatchItem(sk);
109 
110  GetRawKeyResponse rk = new GetRawKeyResponse(batchId5, "1111-5555", fakeECKeyBytes, KMIPConstants.OBJECT_PRIVATEKEY, KMIPConstants.KEYFORMAT_ECPRIVKEY, KMIPConstants.ALG_EC, 128, attributes);
111  sl.addBatchItem(rk);
112 
113  GetCertificateResponse cr = new GetCertificateResponse(batchId2, "aaa-bbb-cccc-ddd-eee", fakeCertBytes);
114  sl.addBatchItem(cr);
115 
116 
117  // -> the specification is complicated for wrapped keys, there are many options
118  byte[] fakeWrappedKey = {0x34, 0x01, 0x02, (byte)0xC3, 0x04, 0x05, 0x16, 0x22, 0x08, 0x45, 0x0A, 0x11, 0x0C, 0x0D, 0x0E, 0x0F, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19};
119  byte[] fakeSignature = {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, (byte)0x80, (byte)0x90, (byte)0xA0, (byte)0xB0, (byte)0xC0};
120 
121  // -> ** NOTE **, that setting fields in CryptographicParameters that are not supported by the KMIP protocol version chosen can result in the following
122  // exception: com.p6r.kmipserverlib.P6KMIPLibraryException: p6javakmipserverlib.endResponseMessage failed to generate KMIP message [ eInvalidVersion ],
123  // see comments in CryptographicParameters for details
124  CryptograhicParameters encryptParams = new CryptograhicParameters( KMIPConstants.MODE_ECB, KMIPConstants.PAD_PKCS5, -1, KMIPConstants.ROLE_KEK, -1, KMIPConstants.ALG_AES, false, -1, -1, -1, -1, -1, -1, -1, -1, -1, null, -1 );
125  CryptograhicParameters signParams = new CryptograhicParameters( -1, -1, KMIPConstants.HASH_SHA512, KMIPConstants.ROLE_MAC97974, -1, -1, false, -1, -1, -1, -1, -1, -1, -1, -1, -1, null, -1 );
126  KeyWrappingData wrapInfo = new KeyWrappingData(KMIPConstants.WRAP_ENCRYPTSIGN, "enc-1111", "sign-2222", fakeSignature, null, KMIPConstants.ENCODING_NO, encryptParams, signParams);
127  GetWrappedKeyResponse wr = new GetWrappedKeyResponse(batchId3, KMIPConstants.OBJECT_SYMMETRICKEY, "8383ururu-ododododo", fakeWrappedKey, wrapInfo);
128  sl.addBatchItem(wr);
129 
130  KeyWrappingData wrapInfo2 = new KeyWrappingData(KMIPConstants.WRAP_ENCRYPT, "enc-1111", null, null, null, KMIPConstants.ENCODING_NO, encryptParams, null);
131  GetWrappedKeyResponse wr2 = new GetWrappedKeyResponse(batchId4, KMIPConstants.OBJECT_SYMMETRICKEY, "7777ururu-odododieieiei", fakeWrappedKey, KMIPConstants.KEYFORMAT_RAW, -1, KMIPConstants.ALG_AES, 128, wrapInfo2);
132  sl.addBatchItem(wr2);
133 
134  byte[] responseBuffer = sl.endResponseMessage(0);
135  for (int j = 0; j < responseBuffer.length; j++) {
136  System.out.print(responseBuffer[j]);
137  }
138  System.out.println("\n");
139 
140  // -> try a single get wrapped key response
141  sl.startResponseMessage(1, KMIPConstants.FORMAT_TTLV, 2);
142  CryptograhicParameters c1 = new CryptograhicParameters( KMIPConstants.MODE_NISTKEYWRAP, -1, -1, -1, -1, -1, true, 16, -1, -1, -1, -1, -1, -1, -1, -1, null, -1 );
143  KeyWrappingData k1 = new KeyWrappingData( KMIPConstants.WRAP_SIGN, null, "test2", fakeSignature, null, KMIPConstants.ENCODING_NO, null, c1 );
144  GetWrappedKeyResponse t1 = new GetWrappedKeyResponse(null, KMIPConstants.OBJECT_SYMMETRICKEY, "test", fakeWrappedKey, KMIPConstants.KEYFORMAT_RAW, -1, KMIPConstants.ALG_AES, 128, k1 );
145  sl.addBatchItem(t1);
146 
147  responseBuffer = sl.endResponseMessage(0);
148  for (int j = 0; j < responseBuffer.length; j++) {
149  System.out.print(responseBuffer[j]);
150  }
151  System.out.println("\n");
152 
153 
154  // [B] Do the same thing in XML
155  sl.startResponseMessage(5, KMIPConstants.FORMAT_MSGXML, 2);
156 
157  sl.addBatchItem(sk);
158  sl.addBatchItem(rk);
159  sl.addBatchItem(cr);
160  sl.addBatchItem(wr);
161  sl.addBatchItem(wr2);
162 
163  byte[] responseBuffer2 = sl.endResponseMessage(0);
164  System.out.println(new String(responseBuffer2));
165  System.out.println("\n");
166 
167 
168  // [C] Do the same thing in JSON
169  sl.startResponseMessage(5, KMIPConstants.FORMAT_MSGJSON, 2);
170 
171  sl.addBatchItem(sk);
172  sl.addBatchItem(rk);
173  sl.addBatchItem(cr);
174  sl.addBatchItem(wr);
175  sl.addBatchItem(wr2);
176 
177  byte[] responseBuffer3 = sl.endResponseMessage(0);
178  System.out.println(new String(responseBuffer3));
179  System.out.println("\n");
180 
181  // [D] Show how Secret Data and Opaque Data works
182  byte[] batchId20 = {0x01, 0x02, 0x03, 0x04};
183  byte[] batchId21 = {0x51, 0x52, 0x53, 0x54};
184 
185  byte[] opaqueData = { 0x01, 0x02, 0x03, 0x04, 0x05 };
186  byte[] secretData = { 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F };
187 
188  sl.startResponseMessage(2, KMIPConstants.FORMAT_MSGXML, 2);
189 
190  GetBlobDataResponse db1 = new GetBlobDataResponse(batchId20, "3C3D6DD4-DB57-4AB7-A74E-D6F53F046BB7", KMIPConstants.OBJECT_OPAQUE, 0x80000001, opaqueData );
191  GetBlobDataResponse db2 = new GetBlobDataResponse(batchId21, "3C3D7DD4-DB57-4AC7-A74F-D6F53F146BB7", KMIPConstants.OBJECT_SECRETDATA, KMIPConstants.SECRET_SEED, secretData );
192 
193  sl.addBatchItem(db1);
194  sl.addBatchItem(db2);
195 
196  byte[] responseBuffer4 = sl.endResponseMessage(0);
197  System.out.println(new String(responseBuffer4));
198  System.out.println("\n");
199 
200 
201  // [E] Return a PGP key
202  byte[] pgpBytes = {
203  0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x42, 0x45, 0x47, 0x49, 0x4E, 0x20, 0x50, 0x47, 0x50, 0x20, 0x50, 0x55, 0x42, 0x4C, 0x49, 0x43, 0x20, 0x4B, 0x45, 0x59, 0x20, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0A, 0x0A, 0x6D, 0x51, 0x45, 0x4E, 0x42, 0x46,
204  0x48, 0x41, 0x2F, 0x64, 0x51, 0x42, 0x43, 0x41, 0x44, 0x67, 0x65, 0x64, 0x39, 0x65, 0x36, 0x74, 0x69, 0x62, 0x38, 0x6B, 0x6C, 0x46, 0x68, 0x50, 0x70, 0x77, 0x53, 0x6E, 0x69, 0x31, 0x4A, 0x73, 0x65, 0x63, 0x6B, 0x71, 0x6A, 0x53, 0x4C, 0x35, 0x77, 0x54, 0x31, 0x51,
205  0x4B, 0x4B, 0x6D, 0x4A, 0x4D, 0x4D, 0x52, 0x79, 0x49, 0x31, 0x52, 0x75, 0x35, 0x52, 0x0A, 0x72, 0x4A, 0x53, 0x42, 0x63, 0x52, 0x77, 0x6A, 0x4F, 0x6F, 0x61, 0x61, 0x52, 0x64, 0x61, 0x76, 0x6E, 0x5A, 0x45, 0x4A, 0x31, 0x78, 0x75, 0x6A, 0x55, 0x33, 0x32, 0x5A, 0x6A,
206  0x2B, 0x32, 0x48, 0x32, 0x73, 0x71, 0x73, 0x36, 0x73, 0x53, 0x6E, 0x69, 0x7A, 0x43, 0x4E, 0x6E, 0x6B, 0x46, 0x35, 0x48, 0x43, 0x57, 0x4F, 0x32, 0x4A, 0x33, 0x62, 0x35, 0x4D, 0x35, 0x76, 0x50, 0x6B, 0x64, 0x47, 0x0A, 0x50, 0x59, 0x71, 0x72, 0x6C, 0x63, 0x76, 0x37,
207  0x6C, 0x76, 0x50, 0x38, 0x50, 0x30, 0x77, 0x6A, 0x63, 0x54, 0x4F, 0x75, 0x65, 0x44, 0x78, 0x6E, 0x53, 0x67, 0x78, 0x36, 0x49, 0x6A, 0x6E, 0x34, 0x51, 0x44, 0x6A, 0x64, 0x2B, 0x74, 0x4C, 0x6E, 0x54, 0x78, 0x54, 0x4B, 0x38, 0x55, 0x30, 0x59, 0x68, 0x7A, 0x73, 0x47,
208  0x5A, 0x43, 0x77, 0x75, 0x2B, 0x33, 0x53, 0x36, 0x6B, 0x77, 0x68, 0x67, 0x0A, 0x78, 0x6C, 0x57, 0x53, 0x7A, 0x2B, 0x33, 0x39, 0x6F, 0x50, 0x30, 0x6B, 0x54, 0x35, 0x38, 0x2B, 0x4A, 0x76, 0x6E, 0x6C, 0x78, 0x38, 0x76, 0x6F, 0x77, 0x74, 0x76, 0x71, 0x5A, 0x2B, 0x37,
209  0x6E, 0x70, 0x71, 0x72, 0x4D, 0x4F, 0x6F, 0x6A, 0x49, 0x56, 0x65, 0x64, 0x46, 0x53, 0x66, 0x6B, 0x2B, 0x7A, 0x32, 0x43, 0x6F, 0x31, 0x55, 0x4F, 0x62, 0x6A, 0x36, 0x6C, 0x2B, 0x78, 0x7A, 0x54, 0x74, 0x0A, 0x31, 0x6B, 0x71, 0x51, 0x5A, 0x66, 0x58, 0x43, 0x2F, 0x79,
210  0x79, 0x4D, 0x41, 0x46, 0x77, 0x54, 0x4B, 0x63, 0x50, 0x45, 0x79, 0x2F, 0x4B, 0x43, 0x77, 0x36, 0x75, 0x32, 0x62, 0x7A, 0x76, 0x6F, 0x75, 0x5A, 0x4D, 0x4D, 0x33, 0x64, 0x6B, 0x67, 0x66, 0x55, 0x2F, 0x41, 0x75, 0x71, 0x71, 0x70, 0x4B, 0x53, 0x42, 0x41, 0x42, 0x48,
211  0x30, 0x5A, 0x2F, 0x62, 0x6C, 0x6E, 0x43, 0x32, 0x54, 0x79, 0x0A, 0x51, 0x64, 0x53, 0x75, 0x4F, 0x4B, 0x78, 0x7A, 0x67, 0x63, 0x79, 0x49, 0x42, 0x63, 0x57, 0x35, 0x77, 0x52, 0x6E, 0x4B, 0x74, 0x6A, 0x73, 0x74, 0x57, 0x57, 0x39, 0x59, 0x43, 0x66, 0x2F, 0x6A, 0x49,
212  0x36, 0x45, 0x74, 0x41, 0x42, 0x45, 0x42, 0x41, 0x41, 0x47, 0x30, 0x54, 0x30, 0x74, 0x4E, 0x53, 0x56, 0x41, 0x67, 0x56, 0x56, 0x4E, 0x46, 0x55, 0x69, 0x42, 0x53, 0x55, 0x30, 0x45, 0x67, 0x0A, 0x4B, 0x45, 0x39, 0x42, 0x55, 0x30, 0x6C, 0x54, 0x49, 0x45, 0x74, 0x6C,
213  0x65, 0x53, 0x42, 0x4E, 0x59, 0x57, 0x35, 0x68, 0x5A, 0x32, 0x56, 0x74, 0x5A, 0x57, 0x35, 0x30, 0x49, 0x45, 0x6C, 0x75, 0x64, 0x47, 0x56, 0x79, 0x62, 0x33, 0x42, 0x6C, 0x63, 0x6D, 0x46, 0x69, 0x61, 0x57, 0x78, 0x70, 0x64, 0x48, 0x6B, 0x67, 0x55, 0x48, 0x4A, 0x76,
214  0x64, 0x47, 0x39, 0x6A, 0x62, 0x32, 0x77, 0x70, 0x0A, 0x49, 0x44, 0x78, 0x72, 0x62, 0x57, 0x6C, 0x77, 0x4D, 0x30, 0x42, 0x72, 0x62, 0x57, 0x6C, 0x77, 0x4C, 0x6D, 0x4E, 0x76, 0x62, 0x54, 0x36, 0x4A, 0x41, 0x54, 0x59, 0x45, 0x45, 0x77, 0x45, 0x43, 0x41, 0x43, 0x41,
215  0x46, 0x41, 0x6C, 0x48, 0x41, 0x2F, 0x64, 0x51, 0x43, 0x47, 0x79, 0x38, 0x47, 0x43, 0x77, 0x6B, 0x49, 0x42, 0x77, 0x4D, 0x43, 0x42, 0x42, 0x55, 0x43, 0x43, 0x41, 0x4D, 0x45, 0x0A, 0x46, 0x67, 0x49, 0x44, 0x41, 0x51, 0x49, 0x65, 0x41, 0x51, 0x49, 0x58, 0x67, 0x41,
216  0x41, 0x4B, 0x43, 0x52, 0x41, 0x6B, 0x44, 0x42, 0x65, 0x7A, 0x62, 0x4D, 0x6F, 0x4E, 0x4A, 0x6B, 0x64, 0x31, 0x42, 0x2F, 0x39, 0x50, 0x4C, 0x70, 0x68, 0x47, 0x62, 0x78, 0x50, 0x4F, 0x32, 0x37, 0x79, 0x65, 0x79, 0x58, 0x39, 0x43, 0x6E, 0x5A, 0x2F, 0x5A, 0x73, 0x52,
217  0x50, 0x62, 0x47, 0x56, 0x48, 0x57, 0x0A, 0x58, 0x6D, 0x4D, 0x52, 0x32, 0x72, 0x69, 0x58, 0x6F, 0x42, 0x58, 0x42, 0x31, 0x46, 0x52, 0x34, 0x64, 0x6C, 0x56, 0x2F, 0x58, 0x6E, 0x67, 0x72, 0x65, 0x76, 0x6B, 0x34, 0x53, 0x5A, 0x42, 0x58, 0x46, 0x49, 0x4B, 0x78, 0x32,
218  0x77, 0x30, 0x68, 0x70, 0x70, 0x53, 0x51, 0x56, 0x67, 0x72, 0x42, 0x4B, 0x59, 0x43, 0x6D, 0x73, 0x2F, 0x68, 0x46, 0x43, 0x4B, 0x53, 0x63, 0x56, 0x61, 0x56, 0x62, 0x0A, 0x63, 0x4E, 0x51, 0x79, 0x38, 0x4C, 0x30, 0x51, 0x35, 0x54, 0x4E, 0x6A, 0x46, 0x50, 0x7A, 0x78,
219  0x79, 0x55, 0x41, 0x50, 0x38, 0x4D, 0x4C, 0x55, 0x46, 0x75, 0x2B, 0x52, 0x72, 0x35, 0x4F, 0x49, 0x69, 0x50, 0x49, 0x59, 0x75, 0x47, 0x46, 0x4D, 0x32, 0x36, 0x51, 0x6E, 0x54, 0x42, 0x66, 0x44, 0x46, 0x4F, 0x68, 0x44, 0x68, 0x37, 0x4D, 0x76, 0x6A, 0x6A, 0x32, 0x77,
220  0x57, 0x55, 0x75, 0x5A, 0x0A, 0x62, 0x32, 0x6F, 0x56, 0x36, 0x69, 0x36, 0x67, 0x6A, 0x39, 0x37, 0x6D, 0x66, 0x79, 0x4E, 0x4A, 0x31, 0x6D, 0x4A, 0x48, 0x66, 0x72, 0x2B, 0x4D, 0x62, 0x4F, 0x36, 0x68, 0x42, 0x65, 0x62, 0x41, 0x50, 0x76, 0x6E, 0x73, 0x36, 0x6B, 0x59,
221  0x69, 0x76, 0x53, 0x44, 0x79, 0x72, 0x47, 0x72, 0x30, 0x36, 0x63, 0x70, 0x55, 0x61, 0x74, 0x6F, 0x65, 0x68, 0x30, 0x2B, 0x32, 0x59, 0x4E, 0x32, 0x35, 0x0A, 0x58, 0x64, 0x45, 0x6D, 0x44, 0x6B, 0x30, 0x62, 0x71, 0x79, 0x39, 0x6B, 0x70, 0x4A, 0x4D, 0x77, 0x48, 0x6A,
222  0x6A, 0x55, 0x4C, 0x6B, 0x77, 0x6E, 0x73, 0x46, 0x6A, 0x62, 0x76, 0x2B, 0x4B, 0x68, 0x58, 0x78, 0x6C, 0x32, 0x6A, 0x47, 0x36, 0x6D, 0x6C, 0x45, 0x71, 0x4E, 0x69, 0x41, 0x69, 0x55, 0x56, 0x50, 0x66, 0x74, 0x58, 0x59, 0x34, 0x79, 0x4B, 0x6D, 0x54, 0x66, 0x69, 0x42,
223  0x5A, 0x61, 0x0A, 0x34, 0x4A, 0x30, 0x6A, 0x30, 0x34, 0x6F, 0x6D, 0x6B, 0x55, 0x38, 0x4A, 0x6A, 0x34, 0x66, 0x76, 0x6C, 0x6B, 0x4F, 0x6F, 0x32, 0x6F, 0x36, 0x6B, 0x62, 0x73, 0x2B, 0x68, 0x74, 0x71, 0x44, 0x2B, 0x4A, 0x35, 0x57, 0x48, 0x78, 0x6D, 0x58, 0x31, 0x54,
224  0x6F, 0x73, 0x67, 0x72, 0x66, 0x7A, 0x75, 0x56, 0x38, 0x7A, 0x35, 0x4D, 0x74, 0x37, 0x55, 0x0A, 0x3D, 0x6E, 0x56, 0x4F, 0x79, 0x0A, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x45, 0x4E, 0x44, 0x20, 0x50, 0x47, 0x50, 0x20, 0x50, 0x55, 0x42, 0x4C, 0x49, 0x43, 0x20, 0x4B, 0x45,
225  0x59, 0x20, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0A
226  };
227  sl.startResponseMessage(1, KMIPConstants.FORMAT_MSGXML, 4);
228 
229  GetPGPKeyResponse pgpKey = new GetPGPKeyResponse(null, "3C3DD4-DB57-4AC7-A74F-D6F5146BB7", pgpBytes, 4, KMIPConstants.ALG_RSA, 2048);
230  sl.addBatchItem(pgpKey);
231 
232  byte[] responseBuffer5 = sl.endResponseMessage(0);
233  System.out.println(new String(responseBuffer5));
234  System.out.println("\n");
235 
236 
237  // [F] Return a PKCS12 encoded private key, PKCS12 encoding taken from test case TC-PKCS12-1-14 the last step
238  byte[] pkcs12Bytes = {
239  (byte)0x30, (byte)0x82, (byte)0x0A, (byte)0xE9, (byte)0x02, (byte)0x01, (byte)0x03, (byte)0x30, (byte)0x82, (byte)0x0A, (byte)0xAF, (byte)0x06, (byte)0x09, (byte)0x2A, (byte)0x86, (byte)0x48, (byte)0x86, (byte)0xF7, (byte)0x0D, (byte)0x01, (byte)0x07, (byte)0x01, (byte)0xA0, (byte)0x82, (byte)0x0A, (byte)0xA0, (byte)0x04, (byte)0x82, (byte)0x0A, (byte)0x9C, (byte)0x30, (byte)0x82, (byte)0x0A, (byte)0x98, (byte)0x30, (byte)0x82, (byte)0x07, (byte)0x97, (byte)0x06, (byte)0x09, (byte)0x2A, (byte)0x86, (byte)0x48, (byte)0x86, (byte)0xF7, (byte)0x0D,
240  (byte)0x01, (byte)0x07, (byte)0x06, (byte)0xA0, (byte)0x82, (byte)0x07, (byte)0x88, (byte)0x30, (byte)0x82, (byte)0x07, (byte)0x84, (byte)0x02, (byte)0x01, (byte)0x00, (byte)0x30, (byte)0x82, (byte)0x07, (byte)0x7D, (byte)0x06, (byte)0x09, (byte)0x2A, (byte)0x86, (byte)0x48, (byte)0x86, (byte)0xF7, (byte)0x0D, (byte)0x01, (byte)0x07, (byte)0x01, (byte)0x30, (byte)0x1C, (byte)0x06, (byte)0x0A, (byte)0x2A, (byte)0x86, (byte)0x48, (byte)0x86, (byte)0xF7, (byte)0x0D, (byte)0x01, (byte)0x0C, (byte)0x01, (byte)0x03, (byte)0x30, (byte)0x0E, (byte)0x04,
241  (byte)0x08, (byte)0xA2, (byte)0x30, (byte)0x40, (byte)0x70, (byte)0x73, (byte)0x2C, (byte)0xD3, (byte)0x05, (byte)0x02, (byte)0x02, (byte)0x08, (byte)0x00, (byte)0x80, (byte)0x82, (byte)0x07, (byte)0x50, (byte)0xDA, (byte)0x87, (byte)0x01, (byte)0xBF, (byte)0x41, (byte)0xC8, (byte)0x0C, (byte)0xD6, (byte)0xF0, (byte)0xF5, (byte)0x19, (byte)0x77, (byte)0xE7, (byte)0x9F, (byte)0xDB, (byte)0x04, (byte)0x35, (byte)0xF9, (byte)0xAA, (byte)0x8E, (byte)0xCE, (byte)0x0E, (byte)0xAE, (byte)0x09, (byte)0xAE, (byte)0x08, (byte)0x3B, (byte)0x51, (byte)0xC9,
242  (byte)0x29, (byte)0x87, (byte)0x1B, (byte)0x3E, (byte)0x78, (byte)0x10, (byte)0xDA, (byte)0x04, (byte)0x30, (byte)0x88, (byte)0x3A, (byte)0xD8, (byte)0xFF, (byte)0xEE, (byte)0x4D, (byte)0x01, (byte)0x5B, (byte)0x8B, (byte)0xB5, (byte)0x30, (byte)0xC3, (byte)0xFC, (byte)0xD9, (byte)0x58, (byte)0x83, (byte)0xA4, (byte)0xA9, (byte)0x38, (byte)0xB2, (byte)0xD5, (byte)0x7C, (byte)0x81, (byte)0xB4, (byte)0x79, (byte)0x2C, (byte)0x9B, (byte)0x05, (byte)0xAF, (byte)0x5C, (byte)0xDB, (byte)0xD3, (byte)0x7A, (byte)0x66, (byte)0x22, (byte)0x33, (byte)0x9E,
243  (byte)0xF2, (byte)0x0B, (byte)0xBD, (byte)0xEA, (byte)0xC3, (byte)0xBC, (byte)0x38, (byte)0x29, (byte)0xE2, (byte)0x6A, (byte)0xCA, (byte)0xF1, (byte)0x24, (byte)0x55, (byte)0xF0, (byte)0x2C, (byte)0x2A, (byte)0x1D, (byte)0x8E, (byte)0x6F, (byte)0x1D, (byte)0x3E, (byte)0xE0, (byte)0x1F, (byte)0xB4, (byte)0xC4, (byte)0xFF, (byte)0x85, (byte)0x0E, (byte)0xE5, (byte)0x28, (byte)0x5D, (byte)0xE4, (byte)0x52, (byte)0xCE, (byte)0x33, (byte)0xDA, (byte)0x48, (byte)0x9B, (byte)0x50, (byte)0x55, (byte)0x69, (byte)0xC5, (byte)0x34, (byte)0x43, (byte)0x9E,
244  (byte)0x21, (byte)0x08, (byte)0x03, (byte)0x8B, (byte)0xA1, (byte)0x62, (byte)0x95, (byte)0xC1, (byte)0xBE, (byte)0x36, (byte)0x7A, (byte)0x93, (byte)0x07, (byte)0x94, (byte)0xAC, (byte)0x18, (byte)0x27, (byte)0x86, (byte)0x0D, (byte)0xE2, (byte)0x28, (byte)0x79, (byte)0x5D, (byte)0x96, (byte)0xF1, (byte)0x9D, (byte)0x2E, (byte)0xE6, (byte)0x0D, (byte)0xD3, (byte)0xA9, (byte)0x26, (byte)0x68, (byte)0xEE, (byte)0x57, (byte)0x17, (byte)0xE4, (byte)0x3A, (byte)0xE4, (byte)0x95, (byte)0x8A, (byte)0x9E, (byte)0xC9, (byte)0xAC, (byte)0x4D, (byte)0x23,
245  (byte)0xD0, (byte)0xF4, (byte)0x0D, (byte)0x8D, (byte)0x61, (byte)0xE8, (byte)0xCA, (byte)0xDD, (byte)0x5E, (byte)0x8D, (byte)0x02, (byte)0xBD, (byte)0x5F, (byte)0x35, (byte)0xF2, (byte)0x45, (byte)0xE4, (byte)0xDB, (byte)0x09, (byte)0xA1, (byte)0x8C, (byte)0x3F, (byte)0x9A, (byte)0x21, (byte)0x62, (byte)0x1A, (byte)0x95, (byte)0x62, (byte)0xE6, (byte)0xCA, (byte)0xBC, (byte)0x9E, (byte)0x1A, (byte)0xDF, (byte)0x47, (byte)0x5D, (byte)0xDC, (byte)0xFA, (byte)0xE9, (byte)0x6E, (byte)0xD7, (byte)0x12, (byte)0x5A, (byte)0xAC, (byte)0xFE, (byte)0xD6,
246  (byte)0xE5, (byte)0x9B, (byte)0x39, (byte)0x7E, (byte)0x1A, (byte)0x6E, (byte)0xC5, (byte)0x7B, (byte)0x74, (byte)0x9B, (byte)0xBA, (byte)0xFA, (byte)0x23, (byte)0xE8, (byte)0x18, (byte)0x7B, (byte)0x0A, (byte)0xD1, (byte)0x78, (byte)0xC5, (byte)0xF4, (byte)0x0B, (byte)0xC7, (byte)0xD2, (byte)0x12, (byte)0xFE, (byte)0x21, (byte)0x56, (byte)0xCD, (byte)0xEE, (byte)0x64, (byte)0xFE, (byte)0x21, (byte)0x05, (byte)0x29, (byte)0x22, (byte)0x7C, (byte)0x9A, (byte)0x50, (byte)0x5B, (byte)0xB7, (byte)0xCE, (byte)0xFC, (byte)0x1D, (byte)0xD8, (byte)0xE2,
247  (byte)0x85, (byte)0x07, (byte)0xAB, (byte)0x5B, (byte)0xE7, (byte)0xBC, (byte)0x5D, (byte)0xB1, (byte)0xB7, (byte)0xD1, (byte)0x44, (byte)0xFA, (byte)0x05, (byte)0x32, (byte)0x63, (byte)0x08, (byte)0x8E, (byte)0x09, (byte)0x76, (byte)0x5E, (byte)0x38, (byte)0x1F, (byte)0x16, (byte)0x9E, (byte)0x90, (byte)0xFD, (byte)0x5F, (byte)0x99, (byte)0x64, (byte)0x58, (byte)0xE9, (byte)0x9E, (byte)0xCD, (byte)0xDC, (byte)0x30, (byte)0x8F, (byte)0x28, (byte)0x58, (byte)0x2F, (byte)0xF0, (byte)0x04, (byte)0x77, (byte)0x45, (byte)0x95, (byte)0xE9, (byte)0x47,
248  (byte)0x4A, (byte)0x5A, (byte)0x75, (byte)0x00, (byte)0xE2, (byte)0xFF, (byte)0x7F, (byte)0xDE, (byte)0x04, (byte)0x9B, (byte)0x25, (byte)0xCE, (byte)0x96, (byte)0xE4, (byte)0x5D, (byte)0x04, (byte)0xF7, (byte)0xB2, (byte)0x2B, (byte)0xD5, (byte)0xBC, (byte)0xEC, (byte)0x5A, (byte)0x0E, (byte)0x6D, (byte)0x9E, (byte)0x87, (byte)0x2E, (byte)0x4A, (byte)0x82, (byte)0xF2, (byte)0x8C, (byte)0x48, (byte)0x90, (byte)0x59, (byte)0x0B, (byte)0xE7, (byte)0xB2, (byte)0x7F, (byte)0x2A, (byte)0xF2, (byte)0xC1, (byte)0x7E, (byte)0xC3, (byte)0x71, (byte)0x31,
249  (byte)0xBE, (byte)0x93, (byte)0xE5, (byte)0xFA, (byte)0x60, (byte)0xDB, (byte)0x77, (byte)0xCD, (byte)0xE9, (byte)0x65, (byte)0xB5, (byte)0xA3, (byte)0xBE, (byte)0xB7, (byte)0x65, (byte)0xAC, (byte)0xC6, (byte)0xF0, (byte)0x22, (byte)0x59, (byte)0x83, (byte)0x63, (byte)0x5D, (byte)0xEE, (byte)0x6C, (byte)0xD4, (byte)0x6D, (byte)0x26, (byte)0x0F, (byte)0x7F, (byte)0x35, (byte)0xF5, (byte)0x52, (byte)0x01, (byte)0xC4, (byte)0x73, (byte)0x4A, (byte)0x84, (byte)0x38, (byte)0x2F, (byte)0xBF, (byte)0x92, (byte)0x5E, (byte)0xA4, (byte)0x21, (byte)0x76,
250  (byte)0x00, (byte)0xA5, (byte)0x6A, (byte)0xA6, (byte)0x67, (byte)0x2B, (byte)0xA7, (byte)0xEF, (byte)0x29, (byte)0x60, (byte)0xF5, (byte)0x41, (byte)0x7A, (byte)0x1B, (byte)0x46, (byte)0xD5, (byte)0x63, (byte)0x9D, (byte)0xA2, (byte)0x03, (byte)0x36, (byte)0x83, (byte)0xA1, (byte)0x4D, (byte)0x94, (byte)0xFC, (byte)0xFD, (byte)0x4E, (byte)0x80, (byte)0x85, (byte)0x4E, (byte)0x18, (byte)0x0D, (byte)0x36, (byte)0x07, (byte)0x75, (byte)0x77, (byte)0xE6, (byte)0x8E, (byte)0xE5, (byte)0x23, (byte)0x31, (byte)0xE0, (byte)0xC7, (byte)0xDD, (byte)0x49,
251  (byte)0xB2, (byte)0x16, (byte)0xD8, (byte)0x67, (byte)0x72, (byte)0xB5, (byte)0xCF, (byte)0x63, (byte)0x37, (byte)0xA1, (byte)0x76, (byte)0xF4, (byte)0x24, (byte)0x9B, (byte)0xC4, (byte)0x22, (byte)0x2D, (byte)0x20, (byte)0x7B, (byte)0x09, (byte)0xB2, (byte)0xCF, (byte)0x92, (byte)0x0C, (byte)0xC2, (byte)0x5C, (byte)0xEC, (byte)0x6F, (byte)0x47, (byte)0x8D, (byte)0x7E, (byte)0x13, (byte)0x7A, (byte)0x0A, (byte)0x4C, (byte)0x4B, (byte)0x70, (byte)0x6E, (byte)0xB7, (byte)0x6D, (byte)0xFE, (byte)0xAC, (byte)0xEC, (byte)0xF4, (byte)0xE5, (byte)0x41,
252  (byte)0x78, (byte)0x35, (byte)0xB3, (byte)0xF8, (byte)0x05, (byte)0x60, (byte)0x4D, (byte)0x89, (byte)0xC7, (byte)0x3D, (byte)0x99, (byte)0x4A, (byte)0x77, (byte)0xD4, (byte)0x2C, (byte)0x57, (byte)0xFD, (byte)0x03, (byte)0x56, (byte)0x18, (byte)0x17, (byte)0x03, (byte)0x67, (byte)0x83, (byte)0x95, (byte)0x3F, (byte)0x16, (byte)0x79, (byte)0x07, (byte)0x62, (byte)0x3E, (byte)0xF4, (byte)0x8E, (byte)0x13, (byte)0xA8, (byte)0xBE, (byte)0xAF, (byte)0xB0, (byte)0x3D, (byte)0x36, (byte)0x67, (byte)0x04, (byte)0xD0, (byte)0xAA, (byte)0x33, (byte)0x73,
253  (byte)0x74, (byte)0x29, (byte)0xE2, (byte)0xC2, (byte)0x7D, (byte)0xCA, (byte)0xF9, (byte)0x89, (byte)0x24, (byte)0x3A, (byte)0xE0, (byte)0x68, (byte)0xEC, (byte)0x27, (byte)0xFA, (byte)0xF3, (byte)0xCF, (byte)0x80, (byte)0xC0, (byte)0xE3, (byte)0xB2, (byte)0x24, (byte)0x8B, (byte)0x97, (byte)0x9D, (byte)0x83, (byte)0xBC, (byte)0x32, (byte)0x43, (byte)0xD5, (byte)0x26, (byte)0x45, (byte)0x5E, (byte)0x0C, (byte)0x24, (byte)0x16, (byte)0xE0, (byte)0xA3, (byte)0xDA, (byte)0x60, (byte)0x46, (byte)0x3C, (byte)0xDB, (byte)0x52, (byte)0x86, (byte)0x8B,
254  (byte)0x64, (byte)0xAE, (byte)0x8F, (byte)0x80, (byte)0x79, (byte)0x6D, (byte)0x96, (byte)0xE0, (byte)0xB2, (byte)0x9A, (byte)0xF8, (byte)0xAA, (byte)0x3B, (byte)0xB8, (byte)0x45, (byte)0x28, (byte)0x27, (byte)0xBA, (byte)0x0B, (byte)0x63, (byte)0x70, (byte)0x8B, (byte)0x28, (byte)0x90, (byte)0xC0, (byte)0x0A, (byte)0x31, (byte)0x8F, (byte)0xE4, (byte)0x4B, (byte)0xC5, (byte)0x84, (byte)0x9A, (byte)0x3D, (byte)0x6A, (byte)0x5D, (byte)0x51, (byte)0x90, (byte)0x32, (byte)0xE9, (byte)0x92, (byte)0x26, (byte)0x41, (byte)0x19, (byte)0x55, (byte)0x9C,
255  (byte)0x05, (byte)0x55, (byte)0xC5, (byte)0x69, (byte)0xFA, (byte)0x69, (byte)0x84, (byte)0x64, (byte)0x93, (byte)0x93, (byte)0xB9, (byte)0xF8, (byte)0xE1, (byte)0x90, (byte)0xC6, (byte)0xA5, (byte)0xE2, (byte)0xC8, (byte)0xD3, (byte)0xA8, (byte)0xEB, (byte)0x2D, (byte)0x3F, (byte)0xFE, (byte)0x23, (byte)0xF1, (byte)0x48, (byte)0xC0, (byte)0xCA, (byte)0xA9, (byte)0x54, (byte)0xFF, (byte)0xEC, (byte)0x58, (byte)0x54, (byte)0xC9, (byte)0x8E, (byte)0xD5, (byte)0x02, (byte)0x21, (byte)0xA7, (byte)0x11, (byte)0xD5, (byte)0x93, (byte)0x7C, (byte)0x6F,
256  (byte)0x5D, (byte)0x05, (byte)0x02, (byte)0xC7, (byte)0xDA, (byte)0x1E, (byte)0xDB, (byte)0x13, (byte)0x99, (byte)0x8C, (byte)0xCD, (byte)0x51, (byte)0x69, (byte)0x4A, (byte)0x0F, (byte)0xD8, (byte)0x34, (byte)0x0C, (byte)0xF6, (byte)0xC3, (byte)0x9B, (byte)0x1E, (byte)0xDC, (byte)0x31, (byte)0xA6, (byte)0xAE, (byte)0xF2, (byte)0xD5, (byte)0x01, (byte)0xF1, (byte)0x1D, (byte)0x07, (byte)0x91, (byte)0x32, (byte)0x43, (byte)0x01, (byte)0x4D, (byte)0x56, (byte)0x8E, (byte)0x37, (byte)0x1B, (byte)0x5D, (byte)0x2F, (byte)0xFB, (byte)0x1D, (byte)0x43,
257  (byte)0x74, (byte)0xD3, (byte)0xE1, (byte)0x10, (byte)0x30, (byte)0x53, (byte)0x47, (byte)0xF3, (byte)0xBC, (byte)0x34, (byte)0x0A, (byte)0x4B, (byte)0x4D, (byte)0x8E, (byte)0xE5, (byte)0xF9, (byte)0x04, (byte)0x8D, (byte)0xDA, (byte)0x2C, (byte)0x36, (byte)0xB3, (byte)0xDF, (byte)0x8C, (byte)0x0A, (byte)0x69, (byte)0xD7, (byte)0x73, (byte)0xC2, (byte)0xE3, (byte)0x89, (byte)0x11, (byte)0xA3, (byte)0xCC, (byte)0x76, (byte)0x60, (byte)0x06, (byte)0x9D, (byte)0xE6, (byte)0x18, (byte)0xE3, (byte)0x8C, (byte)0x7C, (byte)0xC7, (byte)0x4E, (byte)0x56,
258  (byte)0x74, (byte)0x12, (byte)0xC2, (byte)0x72, (byte)0x6E, (byte)0xEB, (byte)0xA6, (byte)0xF8, (byte)0x2B, (byte)0xD9, (byte)0x73, (byte)0x14, (byte)0x7D, (byte)0x4B, (byte)0x47, (byte)0x0F, (byte)0xDA, (byte)0xC7, (byte)0xA3, (byte)0xA1, (byte)0x60, (byte)0x6C, (byte)0x82, (byte)0xD2, (byte)0x0F, (byte)0x1E, (byte)0xE0, (byte)0x43, (byte)0x0A, (byte)0x28, (byte)0x96, (byte)0x86, (byte)0xD8, (byte)0x9D, (byte)0xF8, (byte)0x0B, (byte)0x62, (byte)0xDC, (byte)0xBD, (byte)0x2A, (byte)0xC6, (byte)0x86, (byte)0x75, (byte)0x07, (byte)0xE8, (byte)0x6D,
259  (byte)0xBB, (byte)0xEF, (byte)0xDE, (byte)0x23, (byte)0x11, (byte)0x35, (byte)0x53, (byte)0x25, (byte)0x11, (byte)0x65, (byte)0xDA, (byte)0x10, (byte)0x5F, (byte)0xE6, (byte)0x7E, (byte)0x64, (byte)0xF0, (byte)0xA4, (byte)0xA5, (byte)0x49, (byte)0xDD, (byte)0x01, (byte)0xF9, (byte)0xD7, (byte)0x1C, (byte)0x2F, (byte)0xFA, (byte)0x89, (byte)0x5A, (byte)0x69, (byte)0xFB, (byte)0xBE, (byte)0xED, (byte)0xA3, (byte)0x4B, (byte)0x00, (byte)0xD1, (byte)0xDA, (byte)0xAD, (byte)0x76, (byte)0x00, (byte)0xC6, (byte)0xB3, (byte)0x2E, (byte)0x52, (byte)0x93,
260  (byte)0xEC, (byte)0xB2, (byte)0xBB, (byte)0x44, (byte)0x02, (byte)0x20, (byte)0x63, (byte)0x34, (byte)0x24, (byte)0x23, (byte)0xC4, (byte)0x0E, (byte)0x46, (byte)0x1C, (byte)0x22, (byte)0x97, (byte)0xF9, (byte)0xB0, (byte)0xB3, (byte)0xDE, (byte)0xC7, (byte)0xF1, (byte)0xFE, (byte)0xB8, (byte)0x7A, (byte)0x5F, (byte)0xCD, (byte)0x2D, (byte)0x49, (byte)0x38, (byte)0xB5, (byte)0x3F, (byte)0x5C, (byte)0x02, (byte)0x22, (byte)0x72, (byte)0x54, (byte)0x78, (byte)0x8F, (byte)0xAB, (byte)0xDE, (byte)0x0D, (byte)0xC7, (byte)0xF0, (byte)0x08, (byte)0xA1,
261  (byte)0x39, (byte)0x54, (byte)0xA9, (byte)0x9D, (byte)0x8F, (byte)0x70, (byte)0x81, (byte)0x35, (byte)0x8C, (byte)0xCA, (byte)0xF7, (byte)0x88, (byte)0x5C, (byte)0xBD, (byte)0x76, (byte)0x25, (byte)0xA7, (byte)0x6D, (byte)0x7B, (byte)0xB6, (byte)0xAE, (byte)0x8B, (byte)0xB1, (byte)0x25, (byte)0x69, (byte)0x28, (byte)0xA0, (byte)0xDB, (byte)0xF9, (byte)0x29, (byte)0x34, (byte)0x15, (byte)0xC8, (byte)0x72, (byte)0xD9, (byte)0x8B, (byte)0x94, (byte)0xFF, (byte)0xF2, (byte)0xBE, (byte)0xAA, (byte)0x98, (byte)0x5B, (byte)0xF7, (byte)0x14, (byte)0x52
262  };
263  sl.startResponseMessage(1, KMIPConstants.FORMAT_MSGXML, 4);
264 
265  GetRawKeyResponse pkcs12Key = new GetRawKeyResponse(null, "af310121-0ce4-4779-9a02-bacd5b1ac9f4", pkcs12Bytes, KMIPConstants.OBJECT_PRIVATEKEY, KMIPConstants.KEYFORMAT_PKCS12, -1, -1, null );
266  sl.addBatchItem(pkcs12Key);
267 
268  byte[] responseBuffer6 = sl.endResponseMessage(0);
269  System.out.println(new String(responseBuffer6));
270  System.out.println("\n");
271 
272  // [G] Return Split Key response
273  sl.startResponseMessage(1, KMIPConstants.FORMAT_MSGXML, 4);
274 
275  GetSplitKeyResponse split = new GetSplitKeyResponse(null, "af310121-0ce4-4779-9a02-bacd5b1AAAAAA", opaqueData, KMIPConstants.KEYFORMAT_RAW, 10, 2, 5, KMIPConstants.SPLITKEY_PRIME, secretData, KMIPConstants.ALG_AES, 256 );
276  sl.addBatchItem(split);
277 
278  byte[] responseBuffer7 = sl.endResponseMessage(0);
279  System.out.println(new String(responseBuffer7));
280  System.out.println("\n");
281 
282  sl.freeLibrary();
283 
284  } catch (Exception e) {
285  // -> we should not get here
286  System.out.println(e.toString());
287  assertEquals(0, 1);
288  }
289  }
290 }
A JUNIT test demonstrating how to parse an incoming KMIP request from a client.
void JNICall_Response4KMIP()
Test: Generate a message with multiple different GET response batch items.