1 package com.p6r.kmipserverlib;
5 import java.nio.charset.Charset;
8 import static org.junit.Assert.assertEquals;
24 System.out.println(
"@BeforeClass - oneTimeSetUp");
30 System.out.println(
"@AfterClass - oneTimeTearDown");
36 System.out.println(
"@Before - setUp");
42 System.out.println(
"@After - tearDown");
52 System.out.println(
"@Test - JNICall-GetAttributesKMIP");
56 P6KMIPServerLib sl =
new P6KMIPServerLib();
59 String testMessage1 =
"<RequestMessage><RequestHeader><ProtocolVersion><ProtocolVersionMajor type=\"Integer\" value=\"1\"/><ProtocolVersionMinor type=\"Integer\" value=\"4\"/></ProtocolVersion><BatchCount type=\"Integer\" value=\"1\"/></RequestHeader><BatchItem><Operation type=\"Enumeration\" value=\"GetAttributes\"/><RequestPayload><UniqueIdentifier type=\"TextString\" value=\"941e4340-c60b-4aea-99e9-3a10de99ccc8\"/><AttributeName type=\"TextString\" value=\"State\"/><AttributeName type=\"TextString\" value=\"Cryptographic Usage Mask\"/><AttributeName type=\"TextString\" value=\"Unique Identifier\"/><AttributeName type=\"TextString\" value=\"Object Type\"/><AttributeName type=\"TextString\" value=\"Cryptographic Algorithm\"/><AttributeName type=\"TextString\" value=\"Cryptographic Length\"/><AttributeName type=\"TextString\" value=\"Digest\"/><AttributeName type=\"TextString\" value=\"Initial Date\"/><AttributeName type=\"TextString\" value=\"Last Change Date\"/><AttributeName type=\"TextString\" value=\"Original Creation Date\"/><AttributeName type=\"TextString\" value=\"Random Number Generator\"/></RequestPayload></BatchItem></RequestMessage>";
60 String testMessage2 =
"<RequestMessage><RequestHeader><ProtocolVersion><ProtocolVersionMajor type=\"Integer\" value=\"1\"/><ProtocolVersionMinor type=\"Integer\" value=\"4\"/></ProtocolVersion><BatchCount type=\"Integer\" value=\"1\"/></RequestHeader><BatchItem><Operation type=\"Enumeration\" value=\"Activate\"/><RequestPayload><UniqueIdentifier type=\"TextString\" value=\"941e4340-c60b-4aea-99e9-3a10de99ccc8\"/></RequestPayload></BatchItem></RequestMessage>";
61 String testMessage3 =
"<RequestMessage><RequestHeader><ProtocolVersion><ProtocolVersionMajor type=\"Integer\" value=\"1\"/><ProtocolVersionMinor type=\"Integer\" value=\"4\"/></ProtocolVersion><BatchCount type=\"Integer\" value=\"1\"/></RequestHeader><BatchItem><Operation type=\"Enumeration\" value=\"Revoke\"/><RequestPayload><UniqueIdentifier type=\"TextString\" value=\"941e4340-c60b-4aea-99e9-3a10de99ccc8\"/><RevocationReason><RevocationReasonCode type=\"Enumeration\" value=\"KeyCompromise\"/></RevocationReason><CompromiseOccurrenceDate type=\"DateTime\" value=\"2018-03-19T14:28:07Z\"/></RequestPayload></BatchItem></RequestMessage>";
62 String testMessage4 =
"<RequestMessage><RequestHeader><ProtocolVersion><ProtocolVersionMajor type=\"Integer\" value=\"1\"/><ProtocolVersionMinor type=\"Integer\" value=\"4\"/></ProtocolVersion><BatchCount type=\"Integer\" value=\"1\"/></RequestHeader><BatchItem><Operation type=\"Enumeration\" value=\"Destroy\"/><RequestPayload><UniqueIdentifier type=\"TextString\" value=\"941e4340-c60b-4aea-99e9-3a10de99ccc8\"/></RequestPayload></BatchItem></RequestMessage>";
63 String testMessage5 =
"<RequestMessage><RequestHeader><ProtocolVersion><ProtocolVersionMajor type=\"Integer\" value=\"2\"/><ProtocolVersionMinor type=\"Integer\" value=\"0\"/></ProtocolVersion><BatchCount type=\"Integer\" value=\"1\"/></RequestHeader><BatchItem><Operation type=\"Enumeration\" value=\"GetAttributes\"/><RequestPayload><UniqueIdentifier type=\"TextString\" value=\"941e4340-c60b-4aea-99e9-3a10de99ccc8\"/>\n" +
64 "<AttributeReference type=\"Enumeration\" value=\"State\"/><AttributeReference type=\"Enumeration\" value=\"CryptographicUsageMask\"/>\n" +
65 "<AttributeReference type=\"Enumeration\" value=\"UniqueIdentifier\"/><AttributeReference type=\"Enumeration\" value=\"ObjectType\"/>\n" +
66 "<AttributeReference type=\"Enumeration\" value=\"CryptographicAlgorithm\"/><AttributeReference type=\"Enumeration\" value=\"CryptographicLength\"/>\n" +
67 "<AttributeReference type=\"Enumeration\" value=\"Digest\"/><AttributeReference type=\"Enumeration\" value=\"InitialDate\"/>\n" +
68 "<AttributeReference><VendorIdentification type=\"TextString\" value=\"P6R\"/><AttributeName type=\"TextString\" value=\"SKC-client\" /></AttributeReference>\n" +
69 "<AttributeReference type=\"Enumeration\" value=\"LastChangeDate\"/><AttributeReference type=\"Enumeration\" value=\"OriginalCreationDate\"/>\n" +
70 "<AttributeReference type=\"Enumeration\" value=\"RandomNumberGenerator\"/>" +
71 "</RequestPayload></BatchItem></RequestMessage>";
74 sl.initializeLibrary(P6KMIPServerLib.FLAGS_NONE);
76 String libVersion = sl.getLibraryVersion();
77 System.out.println(libVersion);
80 sl.setMessageBuffer(testMessage1.getBytes(Charset.forName(
"UTF-8")), KMIPConstants.FORMAT_MSGXML);
82 RequestHeader rh = sl.getRequestHeader();
83 assertEquals(
"1.4", rh.getProtocolVersion());
86 for (
int i = 0; i < rh.getBatchCount(); i++) {
88 BatchItem bi = sl.getBatchItem(i + 1);
89 if (bi instanceof GetAttributesBatchItem) {
90 GetAttributesBatchItem ck = (GetAttributesBatchItem) bi;
92 String uniqueId = ck.getUniqueId();
93 assertEquals(
"941e4340-c60b-4aea-99e9-3a10de99ccc8", uniqueId);
95 String[] attributes = ck.getAttributes();
96 assertEquals(11, attributes.length);
97 assertEquals(
"State", attributes[0]);
98 assertEquals(
"Cryptographic Usage Mask", attributes[1]);
99 assertEquals(
"Unique Identifier", attributes[2]);
100 assertEquals(
"Object Type", attributes[3]);
101 assertEquals(
"Cryptographic Algorithm", attributes[4]);
102 assertEquals(
"Cryptographic Length", attributes[5]);
103 assertEquals(
"Digest", attributes[6]);
104 assertEquals(
"Initial Date", attributes[7]);
105 assertEquals(
"Last Change Date", attributes[8]);
106 assertEquals(
"Original Creation Date", attributes[9]);
107 assertEquals(
"Random Number Generator", attributes[10]);
109 MessageExtension me = ck.getExtension();
110 assertEquals(null, me);
114 sl.setMessageBuffer(testMessage2.getBytes(Charset.forName(
"UTF-8")), KMIPConstants.FORMAT_MSGXML);
115 for (
int i = 0; i < rh.getBatchCount(); i++) {
117 BatchItem bi = sl.getBatchItem(i + 1);
118 if (bi instanceof ActivateBatchItem) {
119 ActivateBatchItem ck = (ActivateBatchItem) bi;
121 String uniqueId = ck.getUniqueId();
122 assertEquals(
"941e4340-c60b-4aea-99e9-3a10de99ccc8", uniqueId);
124 MessageExtension me = ck.getExtension();
125 assertEquals(null, me);
129 sl.setMessageBuffer(testMessage3.getBytes(Charset.forName(
"UTF-8")), KMIPConstants.FORMAT_MSGXML);
130 for (
int i = 0; i < rh.getBatchCount(); i++) {
132 BatchItem bi = sl.getBatchItem(i + 1);
133 if (bi instanceof RevokeBatchItem) {
134 RevokeBatchItem ck = (RevokeBatchItem) bi;
136 String uniqueId = ck.getUniqueId();
137 assertEquals(
"941e4340-c60b-4aea-99e9-3a10de99ccc8", uniqueId);
139 int reasonCode = ck.getReasonCode();
140 assertEquals(KMIPConstants.REVOCATION_KEYCOMPROMISE, reasonCode);
142 String message = ck.getMessage();
143 assertEquals(null, message);
145 Date compromisedOn = ck.getCompromiseOccurrence();
146 System.out.println(
"Revoked date:" + compromisedOn);
148 MessageExtension me = ck.getExtension();
149 assertEquals(null, me);
153 sl.setMessageBuffer(testMessage4.getBytes(Charset.forName(
"UTF-8")), KMIPConstants.FORMAT_MSGXML);
154 for (
int i = 0; i < rh.getBatchCount(); i++) {
156 BatchItem bi = sl.getBatchItem(i + 1);
157 if (bi instanceof DestroyBatchItem) {
158 DestroyBatchItem ck = (DestroyBatchItem) bi;
160 String uniqueId = ck.getUniqueId();
161 assertEquals(
"941e4340-c60b-4aea-99e9-3a10de99ccc8", uniqueId);
163 MessageExtension me = ck.getExtension();
164 assertEquals(null, me);
169 sl.setMessageBuffer(testMessage5.getBytes(Charset.forName(
"UTF-8")), KMIPConstants.FORMAT_MSGXML);
170 rh = sl.getRequestHeader();
171 assertEquals(
"2.0", rh.getProtocolVersion());
173 for (
int i = 0; i < rh.getBatchCount(); i++) {
175 BatchItem bi = sl.getBatchItem(i + 1);
176 if (bi instanceof GetAttributesBatchItem) {
177 GetAttributesBatchItem ck = (GetAttributesBatchItem) bi;
179 String uniqueId = ck.getUniqueId();
180 assertEquals(
"941e4340-c60b-4aea-99e9-3a10de99ccc8", uniqueId);
182 String[] attributes = ck.getAttributes();
183 assertEquals(12, attributes.length);
184 assertEquals(
"State", attributes[0]);
185 assertEquals(
"Cryptographic Usage Mask", attributes[1]);
186 assertEquals(
"Unique Identifier", attributes[2]);
187 assertEquals(
"Object Type", attributes[3]);
188 assertEquals(
"Cryptographic Algorithm", attributes[4]);
189 assertEquals(
"Cryptographic Length", attributes[5]);
190 assertEquals(
"Digest", attributes[6]);
191 assertEquals(
"Initial Date", attributes[7]);
192 assertEquals(
"P6R-SKC-client", attributes[8]);
193 assertEquals(
"Last Change Date", attributes[9]);
194 assertEquals(
"Original Creation Date", attributes[10]);
195 assertEquals(
"Random Number Generator", attributes[11]);
197 MessageExtension me = ck.getExtension();
198 assertEquals(null, me);
204 }
catch (Exception e) {
206 System.out.println(e.toString());
static void oneTimeTearDown()
void JNICall_GetAttributesKMIP()
Test: Verify parser can handle an XML formated Get Attributes operation.
static void oneTimeSetUp()
A JUNIT test demonstrating how to parse an incoming KMIP request from a client.