LONGBOW_TEST_CASE(Global, ccnxContentObject_GetKeyId) { CCNxName *name = ccnxName_CreateFromCString("lci:/hello/dolly"); PARCBuffer *payload = parcBuffer_WrapCString("hello"); CCNxContentObject *contentObject = ccnxContentObject_CreateWithDataPayload(name, payload); assertNull(ccnxContentObject_GetKeyId(contentObject), "Expect NULL for KeyId here"); PARCBuffer *testKeyId = parcBuffer_WrapCString("keyhash"); PARCBuffer *sigbits = parcBuffer_WrapCString("siggybits"); PARCSignature *signature = parcSignature_Create(PARCSigningAlgorithm_RSA, PARC_HASH_SHA256, parcBuffer_Flip(sigbits)); ccnxContentObject_SetSignature(contentObject, testKeyId, signature, NULL); PARCBuffer *keyId = ccnxContentObject_GetKeyId(contentObject); assertTrue(parcBuffer_Equals(keyId, testKeyId), "Expect key ids to match"); parcBuffer_Release(&payload); parcBuffer_Release(&sigbits); parcBuffer_Release(&keyId); parcSignature_Release(&signature); ccnxName_Release(&name); ccnxContentObject_Release(&contentObject); }
LONGBOW_TEST_CASE(Global, ccnxContentObject_SetSignature) { CCNxName *name = ccnxName_CreateFromCString("lci:/hello/dolly"); PARCBuffer *payload = parcBuffer_WrapCString("hello"); CCNxContentObject *contentObject = ccnxContentObject_CreateWithDataPayload(name, payload); PARCBuffer *keyId = parcBuffer_WrapCString("keyhash"); PARCBuffer *sigbits = parcBuffer_WrapCString("siggybits"); PARCSignature *signature = parcSignature_Create(PARCSigningAlgorithm_RSA, PARC_HASH_SHA256, parcBuffer_Flip(sigbits)); ccnxContentObject_SetSignature(contentObject, keyId, signature, NULL); parcBuffer_Release(&payload); parcBuffer_Release(&sigbits); parcBuffer_Release(&keyId); parcSignature_Release(&signature); ccnxName_Release(&name); ccnxContentObject_Release(&contentObject); }
static CCNxTlvDictionary * createSignedContentObject(void) { CCNxName *name = ccnxName_CreateFromURI("lci:/some/name"); PARCBuffer *payload = parcBuffer_Flip(parcBuffer_PutArray(parcBuffer_Allocate(20), 11, (uint8_t *) "the payload")); CCNxTlvDictionary *contentObject = ccnxContentObject_CreateWithDataPayload(name, payload); parcBuffer_Release(&payload); ccnxName_Release(&name); PARCBuffer *keyid = parcBuffer_Flip(parcBuffer_PutArray(parcBuffer_Allocate(20), 5, (uint8_t *) "keyid")); ccnxValidationRsaSha256_Set(contentObject, keyid, NULL); parcBuffer_Release(&keyid); PARCBuffer *sigbits = parcBuffer_WrapCString("the signature"); PARCSignature *signature = parcSignature_Create(PARCSigningAlgorithm_RSA, PARC_HASH_SHA256, parcBuffer_Flip(sigbits)); ccnxContentObject_SetSignature(contentObject, keyid, signature, NULL); parcSignature_Release(&signature); parcBuffer_Release(&sigbits); return contentObject; }