LONGBOW_TEST_CASE(Global, ccnxKeyLocator_Copy) { CCNxName *keyURIName = ccnxName_CreateFromCString("lci://name"); CCNxLink *keyLink = ccnxLink_Create(keyURIName, NULL, NULL); CCNxKeyLocator *keyLocator = ccnxKeyLocator_CreateFromKeyLink(keyLink); ccnxKeyLocator_AssertValid(keyLocator); CCNxKeyLocator *copy = ccnxKeyLocator_Copy(keyLocator); assertTrue(ccnxKeyLocator_Equals(copy, keyLocator), "Expected orig and copy to be the same"); ccnxKeyLocator_Release(&keyLocator); ccnxKeyLocator_Release(©); ccnxName_Release(&keyURIName); ccnxLink_Release(&keyLink); // Try FromHexString, too, for yucks. PARCBuffer *keyBuffer = parcBuffer_WrapCString("hello world"); PARCKeyId *keyId = parcKeyId_Create(keyBuffer); PARCKey *key = parcKey_CreateFromDerEncodedPublicKey(keyId, PARCSigningAlgorithm_RSA, keyBuffer); parcKeyId_Release(&keyId); parcBuffer_Release(&keyBuffer); CCNxKeyLocator *keyLocator2 = ccnxKeyLocator_CreateFromKey(key); CCNxKeyLocator *copy2 = ccnxKeyLocator_Copy(keyLocator2); assertTrue(ccnxKeyLocator_Equals(copy, keyLocator), "Expected orig and copy to be the same"); parcKey_Release(&key); ccnxKeyLocator_Release(&keyLocator2); ccnxKeyLocator_Release(©2); }
void testValidationSetV1_KeyId_KeyLocator_KeyId_KeyName(TestData *data, bool (*set)(CCNxTlvDictionary *message, const PARCBuffer *keyid, const CCNxKeyLocator *keyLocator), bool (*test)(const CCNxTlvDictionary *message)) { CCNxName *name = ccnxName_CreateFromURI("lci:/parc/validation/test"); CCNxTlvDictionary *packetV1 = ccnxContentObject_CreateWithImplAndPayload(&CCNxContentObjectFacadeV1_Implementation, name, CCNxPayloadType_DATA, NULL); bool success = set(packetV1, data->keyid, data->locatorByName); assertTrue(success, "Failed to set on V1"); bool testResult = test(packetV1); assertTrue(testResult, "Test function failed on V1 packet"); PARCBuffer *testKeyId = ccnxValidationFacadeV1_GetKeyId(packetV1); assertTrue(parcBuffer_Equals(testKeyId, data->keyid), "keyid not equal"); // XXX: TODO: GetKeyName() returns a Link, so it should be GetLink(). // It also creates a new object (the CCNxLink), so... needs thinking about. // See BugzId: 3322 CCNxLink *testLink = ccnxValidationFacadeV1_GetKeyName(packetV1); assertTrue(ccnxName_Equals(ccnxLink_GetName(testLink), data->keyname), "Keynames not equal"); ccnxLink_Release(&testLink); ccnxName_Release(&name); ccnxTlvDictionary_Release(&packetV1); }
LONGBOW_TEST_CASE(Global, ccnxKeyLocator_GetType) { // Try FromKey char *hexString = "ABCDEF1234"; PARCBuffer *keyBuffer = parcBuffer_WrapCString(hexString); PARCKeyId *keyId = parcKeyId_Create(keyBuffer); PARCKey *key = parcKey_CreateFromDerEncodedPublicKey(keyId, PARCSigningAlgorithm_RSA, keyBuffer); CCNxKeyLocator *keyLocator = ccnxKeyLocator_CreateFromKey(key); parcKeyId_Release(&keyId); parcBuffer_Release(&keyBuffer); ccnxKeyLocator_AssertValid(keyLocator); assertTrue(ccnxKeyLocator_GetType(keyLocator) == CCNxKeyLocatorType_Key, "Actual certificate type didn't match expected type"); ccnxKeyLocator_Release(&keyLocator); parcKey_Release(&key); // Try KeyName CCNxName *keyURIName = ccnxName_CreateFromCString("lci://name/test"); CCNxLink *keyLink = ccnxLink_Create(keyURIName, NULL, NULL); keyLocator = ccnxKeyLocator_CreateFromKeyLink(keyLink); ccnxKeyLocator_AssertValid(keyLocator); assertTrue(ccnxKeyLocator_GetType(keyLocator) == CCNxKeyLocatorType_Link, "Actual certificate type didn't match expected type"); assertFalse(ccnxKeyLocator_GetType(keyLocator) == CCNxKeyLocatorType_Key, "Actual certificate type didn't match expected type"); ccnxKeyLocator_Release(&keyLocator); ccnxName_Release(&keyURIName); ccnxLink_Release(&keyLink); }
TestData * testData_Create(void) { char keyidString[] = "the keyid"; char keyString[] = "Memory, all alone in the moonlight"; char certString[] = "The quick brown fox"; TestData *data = parcMemory_AllocateAndClear(sizeof(TestData)); assertNotNull(data, "parcMemory_AllocateAndClear(%zu) returned NULL", sizeof(TestData)); data->keyid = bufferFromString(sizeof(keyidString), keyidString); data->key = bufferFromString(sizeof(keyString), keyString); data->cert = bufferFromString(sizeof(certString), certString); data->keyname = ccnxName_CreateFromURI("lci:/lazy/dog"); PARCBuffer *bb_id = parcBuffer_Wrap("choo choo", 9, 0, 9); PARCKeyId *keyid = parcKeyId_Create(bb_id); parcBuffer_Release(&bb_id); PARCKey *key = parcKey_CreateFromDerEncodedPublicKey(keyid, PARCSigningAlgorithm_RSA, data->key); data->locatorByKey = ccnxKeyLocator_CreateFromKey(key); parcKey_Release(&key); parcKeyId_Release(&keyid); CCNxLink *link = ccnxLink_Create(data->keyname, NULL, NULL); data->locatorByName = ccnxKeyLocator_CreateFromKeyLink(link); ccnxLink_Release(&link); return data; }
LONGBOW_TEST_CASE(Local, ccnxKeyLocator_Create) { CCNxName *keyURIName = ccnxName_CreateFromCString("lci://name"); CCNxLink *keyLink = ccnxLink_Create(keyURIName, NULL, NULL); CCNxKeyLocator *keyLocator = ccnxKeyLocator_CreateFromKeyLink(keyLink); ccnxKeyLocator_AssertValid(keyLocator); ccnxKeyLocator_Release(&keyLocator); ccnxName_Release(&keyURIName); ccnxLink_Release(&keyLink); }
LONGBOW_TEST_CASE(Global, ccnxLink_Create_EmptyBoth) { CCNxName *name = ccnxName_CreateFromCString("lci:/foo/bar/name"); PARCBuffer *keyId = NULL; PARCBuffer *contentObjectHash = NULL; CCNxLink *object = ccnxLink_Create(name, keyId, contentObjectHash); assertNotNull(object, "Expected non-null return value."); ccnxLink_Release(&object); ccnxName_Release(&name); }
LONGBOW_TEST_CASE(Global, ccnxKeyLocator_IsKeyName) { CCNxName *keyURIName = ccnxName_CreateFromCString("lci://name/test"); CCNxLink *keyLink = ccnxLink_Create(keyURIName, NULL, NULL); CCNxKeyLocator *keyLocator = ccnxKeyLocator_CreateFromKeyLink(keyLink); ccnxKeyLocator_AssertValid(keyLocator); assertFalse(ccnxKeyLocator_IsKey(keyLocator), "Expected Iskey to be false"); assertTrue(ccnxKeyLocator_IsKeyLink(keyLocator), "Expected IsKeyLink to be true"); ccnxKeyLocator_Release(&keyLocator); ccnxName_Release(&keyURIName); ccnxLink_Release(&keyLink); }
LONGBOW_TEST_CASE(Global, ccnxKeyLocator_GetKeyName) { CCNxName *keyURIName = ccnxName_CreateFromCString("lci://name/test"); CCNxLink *keyLink = ccnxLink_Create(keyURIName, NULL, NULL); CCNxKeyLocator *keyLocator = ccnxKeyLocator_CreateFromKeyLink(keyLink); ccnxKeyLocator_AssertValid(keyLocator); const CCNxName *actual = ccnxLink_GetName(ccnxKeyLocator_GetKeyLink(keyLocator)); assertTrue(ccnxName_Equals(actual, keyURIName), "Actual keyName did not match the one returned by GetKeyName()"); ccnxKeyLocator_Release(&keyLocator); ccnxName_Release(&keyURIName); ccnxLink_Release(&keyLink); }
LONGBOW_TEST_CASE(Global, ccnxKeyLocator_Destroy) { CCNxName *keyURIName = ccnxName_CreateFromCString("lci://name"); CCNxLink *keyLink = ccnxLink_Create(keyURIName, NULL, NULL); CCNxKeyLocator *keyLocator = ccnxKeyLocator_CreateFromKeyLink(keyLink); ccnxKeyLocator_AssertValid(keyLocator); ccnxKeyLocator_Release(&keyLocator); assertNull(keyLocator, "keyLocator was not nulled out by Release()"); ccnxLink_Release(&keyLink); ccnxName_Release(&keyURIName); }
LONGBOW_TEST_CASE(Global, ccnxLink_Equals) { CCNxName *name = ccnxName_CreateFromCString("lci:/foo/bar/name"); PARCBuffer *keyId = parcBuffer_Allocate(10); PARCBuffer *contentObjectHash = parcBuffer_Allocate(20); CCNxLink *x = ccnxLink_Create(name, keyId, contentObjectHash); ccnxName_Release(&name); parcBuffer_Release(&keyId); parcBuffer_Release(&contentObjectHash); name = ccnxName_CreateFromCString("lci:/foo/bar/name"); keyId = parcBuffer_Allocate(10); contentObjectHash = parcBuffer_Allocate(20); CCNxLink *y = ccnxLink_Create(name, keyId, contentObjectHash); ccnxName_Release(&name); parcBuffer_Release(&keyId); parcBuffer_Release(&contentObjectHash); name = ccnxName_CreateFromCString("lci:/foo/bar/name"); keyId = parcBuffer_Allocate(10); contentObjectHash = parcBuffer_Allocate(20); CCNxLink *z = ccnxLink_Create(name, keyId, contentObjectHash); ccnxName_Release(&name); parcBuffer_Release(&keyId); parcBuffer_Release(&contentObjectHash); name = ccnxName_CreateFromCString("lci:/foo/bar/othername"); keyId = parcBuffer_Allocate(10); contentObjectHash = parcBuffer_Allocate(20); CCNxLink *unequal1 = ccnxLink_Create(name, keyId, contentObjectHash); ccnxName_Release(&name); parcBuffer_Release(&keyId); parcBuffer_Release(&contentObjectHash); name = ccnxName_CreateFromCString("lci:/foo/bar/name"); keyId = NULL; contentObjectHash = parcBuffer_Allocate(20); CCNxLink *unequal2 = ccnxLink_Create(name, keyId, contentObjectHash); ccnxName_Release(&name); parcBuffer_Release(&contentObjectHash); name = ccnxName_CreateFromCString("lci:/foo/bar/name"); keyId = parcBuffer_Allocate(10); contentObjectHash = NULL; CCNxLink *unequal3 = ccnxLink_Create(name, keyId, contentObjectHash); ccnxName_Release(&name); parcBuffer_Release(&keyId); assertEqualsContract(ccnxLink_Equals, x, y, z, unequal1, unequal2, unequal3); ccnxLink_Release(&x); ccnxLink_Release(&y); ccnxLink_Release(&z); ccnxLink_Release(&unequal1); ccnxLink_Release(&unequal2); ccnxLink_Release(&unequal3); }
LONGBOW_TEST_CASE(Global, ccnxLink_AcquireRelease) { CCNxName *name = ccnxName_CreateFromCString("lci:/foo/bar/name"); PARCBuffer *keyId = parcBuffer_Allocate(10); PARCBuffer *contentObjectHash = parcBuffer_Allocate(10); CCNxLink *object = ccnxLink_Create(name, keyId, contentObjectHash); parcObjectTesting_AssertAcquireReleaseContract(ccnxLink_Acquire, object); ccnxLink_Release(&object); ccnxName_Release(&name); parcBuffer_Release(&keyId); parcBuffer_Release(&contentObjectHash); }
LONGBOW_TEST_CASE(Global, ccnxLink_Create_Full) { CCNxName *name = ccnxName_CreateFromCString("lci:/foo/bar/name"); PARCBuffer *keyId = parcBuffer_Allocate(10); PARCBuffer *contentObjectHash = parcBuffer_Allocate(10); CCNxLink *object = ccnxLink_Create(name, keyId, contentObjectHash); assertNotNull(object, "Expected non-null return value."); ccnxLink_Release(&object); ccnxName_Release(&name); parcBuffer_Release(&keyId); parcBuffer_Release(&contentObjectHash); }
LONGBOW_TEST_CASE(Global, ccnxLink_Create_ToString) { CCNxName *name = ccnxName_CreateFromCString("lci:/foo/bar/name"); PARCBuffer *keyId = parcBuffer_Allocate(10); PARCBuffer *contentObjectHash = parcBuffer_Allocate(20); CCNxLink *object = ccnxLink_Create(name, keyId, contentObjectHash); char *string = ccnxLink_ToString(object); assertNotNull(string, "Expected non-null string."); parcMemory_Deallocate((void **) &string); ccnxLink_Release(&object); ccnxName_Release(&name); parcBuffer_Release(&keyId); parcBuffer_Release(&contentObjectHash); }
LONGBOW_TEST_CASE(Global, ccnxKeyLocator_ToString) { CCNxName *keyURIName = ccnxName_CreateFromCString("lci://name/test"); CCNxLink *keyLink = ccnxLink_Create(keyURIName, NULL, NULL); CCNxKeyLocator *keyLocator = ccnxKeyLocator_CreateFromKeyLink(keyLink); ccnxKeyLocator_AssertValid(keyLocator); char *actualString = ccnxKeyLocator_ToString(keyLocator); assertTrue(0 == strncmp("KeyLocator", actualString, strlen("KeyLocator")), "ToString() did not return the expected prefix"); parcMemory_Deallocate((void **) &actualString); ccnxLink_Release(&keyLink); ccnxName_Release(&keyURIName); ccnxKeyLocator_Release(&keyLocator); }
LONGBOW_TEST_CASE(Global, ccnxLink_GetName) { CCNxName *name = ccnxName_CreateFromCString("lci:/foo/bar/name"); PARCBuffer *keyId = parcBuffer_Allocate(10); PARCBuffer *contentObjectHash = parcBuffer_Allocate(10); CCNxLink *object = ccnxLink_Create(name, keyId, contentObjectHash); const CCNxName *actualName = ccnxLink_GetName(object); assertNotNull(actualName, "Expected non-null return value."); assertTrue(ccnxName_Equals(name, actualName), "Expected the same name back"); ccnxLink_Release(&object); ccnxName_Release(&name); parcBuffer_Release(&keyId); parcBuffer_Release(&contentObjectHash); }
LONGBOW_TEST_CASE(Global, ccnxLink_GetContentObjectHash) { CCNxName *name = ccnxName_CreateFromCString("lci:/foo/bar/name"); PARCBuffer *keyId = parcBuffer_Allocate(10); PARCBuffer *contentObjectHash = parcBuffer_Allocate(20); CCNxLink *object = ccnxLink_Create(name, keyId, contentObjectHash); PARCBuffer *buffer = ccnxLink_GetContentObjectHash(object); assertNotNull(buffer, "Expected non-null return value."); assertTrue(parcBuffer_Capacity(buffer) == 20, "Expected the same buffer size back"); ccnxLink_Release(&object); ccnxName_Release(&name); parcBuffer_Release(&keyId); parcBuffer_Release(&contentObjectHash); }
LONGBOW_TEST_CASE(Global, ccnxKeyLocator_Equals) { char *hexString = "ABCDEF1234"; PARCBuffer *keyBuffer = parcBuffer_WrapCString(hexString); PARCKeyId *keyId = parcKeyId_Create(keyBuffer); PARCKey *key1 = parcKey_CreateFromDerEncodedPublicKey(keyId, PARCSigningAlgorithm_RSA, keyBuffer); CCNxKeyLocator *keyLocator1 = ccnxKeyLocator_CreateFromKey(key1); parcKeyId_Release(&keyId); parcBuffer_Release(&keyBuffer); CCNxKeyLocator *keyLocator1Copy = ccnxKeyLocator_Copy(keyLocator1); PARCBuffer *keyBuffer2 = parcBuffer_WrapCString(hexString); PARCKeyId *keyId2 = parcKeyId_Create(keyBuffer2); PARCKey *key2 = parcKey_CreateFromDerEncodedPublicKey(keyId2, PARCSigningAlgorithm_RSA, keyBuffer2); CCNxKeyLocator *keyLocator2 = ccnxKeyLocator_CreateFromKey(key2); parcBuffer_Release(&keyBuffer2); parcKeyId_Release(&keyId2); CCNxName *keyURIName = ccnxName_CreateFromCString("lci://name"); CCNxLink *keyLink = ccnxLink_Create(keyURIName, NULL, NULL); CCNxKeyLocator *keyLocatorDiff = ccnxKeyLocator_CreateFromKeyLink(keyLink); ccnxKeyLocator_AssertValid(keyLocator1); ccnxKeyLocator_AssertValid(keyLocator1Copy); ccnxKeyLocator_AssertValid(keyLocator2); ccnxKeyLocator_AssertValid(keyLocatorDiff); assertEqualsContract(ccnxKeyLocator_Equals, keyLocator1, keyLocator1Copy, keyLocator2, keyLocatorDiff); parcKey_Release(&key1); ccnxKeyLocator_Release(&keyLocator1); ccnxKeyLocator_Release(&keyLocator1Copy); parcKey_Release(&key2); ccnxKeyLocator_Release(&keyLocator2); ccnxName_Release(&keyURIName); ccnxLink_Release(&keyLink); ccnxKeyLocator_Release(&keyLocatorDiff); }