1 package com.p6r.kmipserverlib;
5 import java.math.BigInteger;
6 import java.nio.charset.Charset;
8 import static org.junit.Assert.assertEquals;
9 import static org.junit.Assert.assertNotEquals;
25 System.out.println(
"@BeforeClass - oneTimeSetUp");
31 System.out.println(
"@AfterClass - oneTimeTearDown");
37 System.out.println(
"@Before - setUp");
43 System.out.println(
"@After - tearDown");
53 System.out.println(
"@Test - JNICall-RegisterPGPKeyKMIP");
55 byte[] expectedBytes = {
56 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,
57 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,
58 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,
59 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,
60 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,
61 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,
62 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,
63 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,
64 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,
65 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,
66 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,
67 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,
68 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,
69 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,
70 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,
71 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,
72 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,
73 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,
74 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,
75 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,
76 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,
77 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,
78 0x59, 0x20, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0A
83 P6KMIPServerLib sl =
new P6KMIPServerLib();
87 "<RequestMessage>\n" +
88 " <RequestHeader>\n" +
89 " <ProtocolVersion>\n" +
90 " <ProtocolVersionMajor type=\"Integer\" value=\"1\"/>\n" +
91 " <ProtocolVersionMinor type=\"Integer\" value=\"4\"/>\n" +
92 " </ProtocolVersion>\n" +
93 " <BatchCount type=\"Integer\" value=\"1\"/>\n" +
94 " </RequestHeader>\n" +
96 " <Operation type=\"Enumeration\" value=\"Register\"/>\n" +
97 " <RequestPayload>\n" +
98 " <ObjectType type=\"Enumeration\" value=\"PGPKey\"/>\n" +
99 " <TemplateAttribute>\n" +
101 " <AttributeName type=\"TextString\" value=\"x-ID\"/>\n" +
102 " <AttributeValue type=\"TextString\" value=\"TC-PGP-1-14-pubkey1\"/>\n" +
105 " <AttributeName type=\"TextString\" value=\"Alternative Name\"/>\n" +
106 " <AttributeValue>\n" +
107 " <AlternativeNameValue type=\"TextString\" value=\"KMIP USER RSA (OASIS Key Management Interoperability Protocol) <kmip3@kmip.com>\"/>\n" +
108 " <AlternativeNameType type=\"Enumeration\" value=\"UninterpretedTextString\"/>\n" +
109 " </AttributeValue>\n" +
112 " <AttributeName type=\"TextString\" value=\"Alternative Name\"/>\n" +
113 " <AttributeValue>\n" +
114 " <AlternativeNameValue type=\"TextString\" value=\"6CCA0D26\"/>\n" +
115 " <AlternativeNameType type=\"Enumeration\" value=\"ObjectSerialNumber\"/>\n" +
116 " </AttributeValue>\n" +
118 " </TemplateAttribute>\n" +
120 " <PGPKeyVersion type=\"Integer\" value=\"4\"/>\n" +
122 " <KeyFormatType type=\"Enumeration\" value=\"Raw\"/>\n" +
124 " <KeyMaterial type=\"ByteString\" value=\"2D2D2D2D2D424547494E20504750205055424C4943204B455920424C4F434B2D2D2D2D2D0A0A6D51454E424648412F645142434144676564396536746962386B6C4668507077536E69314A7365636B716A534C35775431514B4B6D4A4D4D52794931527535520A724A53426352776A4F6F6161526461766E5A454A3178756A5533325A6A2B3248327371733673536E697A434E6E6B46354843574F324A3362354D3576506B64470A505971726C6376376C7650385030776A63544F756544786E53677836496A6E3451446A642B744C6E5478544B38553059687A73475A4377752B3353366B7768670A786C57537A2B33396F50306B5435382B4A766E6C7838766F777476715A2B376E7071724D4F6F6A495665644653666B2B7A32436F31554F626A366C2B787A54740A316B71515A6658432F79794D414677544B635045792F4B4377367532627A766F755A4D4D33646B6766552F41757171704B5342414248305A2F626C6E433254790A516453754F4B787A676379494263573577526E4B746A73745757395943662F6A4936457441424542414147305430744E5356416756564E4655694253553045670A4B45394255306C544945746C6553424E595735685A3256745A57353049456C75644756796233426C636D46696157787064486B6755484A766447396A623277700A4944787262576C774D30427262576C774C6D4E766254364A415459454577454341434146416C48412F6451434779384743776B4942774D434242554343414D450A4667494441514965415149586741414B4352416B4442657A624D6F4E4A6B6431422F39504C7068476278504F32377965795839436E5A2F5A73525062475648570A586D4D52327269586F42584231465234646C562F586E677265766B34535A425846494B783277306870705351566772424B59436D732F6846434B5363566156620A634E5179384C305135544E6A46507A7879554150384D4C5546752B5272354F49695049597547464D3236516E54426644464F684468374D766A6A32775755755A0A62326F56366936676A39376D66794E4A316D4A4866722B4D624F36684265624150766E73366B596976534479724772303663705561746F6568302B32594E32350A5864456D446B30627179396B704A4D77486A6A554C6B776E73466A62762B4B6858786C326A47366D6C45714E6941695556506674585934794B6D546669425A610A344A306A30346F6D6B55384A6A3466766C6B4F6F326F366B62732B687471442B4A355748786D5831546F736772667A7556387A354D7437550A3D6E564F790A2D2D2D2D2D454E4420504750205055424C4943204B455920424C4F434B2D2D2D2D2D0A\"/>\n" +
126 " <CryptographicAlgorithm type=\"Enumeration\" value=\"RSA\"/>\n" +
127 " <CryptographicLength type=\"Integer\" value=\"2048\"/>\n" +
130 "</RequestPayload>\n" +
135 sl.initializeLibrary(P6KMIPServerLib.FLAGS_NONE);
137 String libVersion = sl.getLibraryVersion();
138 System.out.println(libVersion);
140 sl.setMessageBuffer(testMessage.getBytes(Charset.forName(
"UTF-8")), KMIPConstants.FORMAT_MSGXML);
142 RequestHeader rh = sl.getRequestHeader();
143 assertEquals(
"1.4", rh.getProtocolVersion());
146 for (
int i = 0; i < rh.getBatchCount(); i++) {
148 BatchItem bi = sl.getBatchItem(i + 1);
149 if (bi instanceof RegisterPGPKeyBatchItem) {
150 RegisterPGPKeyBatchItem ck = (RegisterPGPKeyBatchItem) bi;
152 byte[] batchId = ck.getUniqueBatchId();
153 assertEquals(null, batchId);
155 int keyVersion = ck.getKeyVersion();
156 assertEquals(4, keyVersion);
158 byte[] keyMaterial = ck.getKeyMaterial();
159 assertEquals(expectedBytes.length, keyMaterial.length);
160 for(
int j=0; j < expectedBytes.length; j++ ) {
161 assertEquals(expectedBytes[j], keyMaterial[j]);
164 String[] attributes = ck.getTemplateAttributes();
165 assertEquals(3, attributes.length);
166 assertEquals(
"x-ID: TC-PGP-1-14-pubkey1", attributes[0]);
167 assertEquals(
"Alternative Name: KMIP USER RSA (OASIS Key Management Interoperability Protocol) <kmip3@kmip.com> - text_string", attributes[1]);
168 assertEquals(
"Alternative Name: 6CCA0D26 - serial_number", attributes[2]);
173 }
catch (Exception e) {
175 System.out.println(e.toString());
void JNICall_RegisterPGPKeyKMIP()
Test: Verify parser can handle an XML formated Register PGP Key operation.
A JUNIT test demonstrating how to parse an incoming KMIP request from a client.
static void oneTimeSetUp()
static void oneTimeTearDown()