void athena_EncodeMessage(CCNxMetaMessage *message) { PARCSigner *signer = ccnxValidationCRC32C_CreateSigner(); CCNxCodecNetworkBufferIoVec *iovec = ccnxCodecTlvPacket_DictionaryEncode(message, signer); assertTrue(ccnxWireFormatMessage_PutIoVec(message, iovec), "ccnxWireFormatMessage_PutIoVec failed");; ccnxCodecNetworkBufferIoVec_Release(&iovec); parcSigner_Release(&signer); }
LONGBOW_TEST_CASE(Global, ccnxWireFormatMessage_CreateContentObjectHash) { // >1234< const char string[] = "Hello dev null\n"; PARCBuffer *buffer = parcBuffer_Wrap((void *) string, sizeof(string), 0, sizeof(string)); CCNxWireFormatMessage *message = ccnxWireFormatMessage_FromContentObjectPacketType(CCNxTlvDictionary_SchemaVersion_V1, buffer); PARCCryptoHash *hash = ccnxWireFormatMessage_CreateContentObjectHash(message); ccnxWireFormatMessage_Release(&message); assertNull(hash, "Expect NULL for hash as it hasn't been encoded yet"); // We need to create a content object that is hashable CCNxName *name = ccnxName_CreateFromCString("lci:/test/content"); CCNxContentObject *contentObject = ccnxContentObject_CreateWithNameAndPayload(name, buffer); ccnxName_Release(&name); // This next stuff is to force an encode/decode to setup hash extents CCNxCodecNetworkBufferIoVec *iovec = ccnxCodecTlvPacket_DictionaryEncode(contentObject, NULL); ccnxContentObject_Release(&contentObject); PARCBuffer *encodedMessage = _iovecToParcBuffer(iovec); ccnxCodecNetworkBufferIoVec_Release(&iovec); // Decode message = ccnxWireFormatMessage_Create(encodedMessage); CCNxTlvDictionary *dictionary = ccnxWireFormatMessage_GetDictionary(message); bool success = ccnxCodecTlvPacket_BufferDecode(encodedMessage, dictionary); assertTrue(success, "Failed to decode buffer"); parcBuffer_Release(&encodedMessage); hash = ccnxWireFormatMessage_CreateContentObjectHash(message); // the correctness of the hash is tested in _ccnxWireFormatFacadeV1_ComputeHash assertNotNull(hash, "Got null hash from a good packet"); ccnxWireFormatMessage_Release(&message); parcCryptoHash_Release(&hash); parcBuffer_Release(&buffer); }