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);
}
Ejemplo n.º 2
0
LONGBOW_TEST_CASE(Global, parcSignature_Acquire)
{
    PARCBuffer *bits = parcBuffer_Allocate(10); // arbitrary buffer size -- not important
    PARCSignature *signature = parcSignature_Create(PARCSigningAlgorithm_DSA, PARC_HASH_SHA256, bits);
    PARCSignature *handle = parcSignature_Acquire(signature);
    parcBuffer_Release(&bits);

    assertNotNull(signature, "Expected non-NULL PARCSignature");
    assertNotNull(handle, "Expected non-NULL PARCSignature after acquisition");
    PARCReferenceCount referenceCount = parcObject_GetReferenceCount(handle);
    assertTrue(referenceCount == 2,
               "Expected reference count to be equal to 2, got %" PRIu64 "",
               referenceCount);

    parcSignature_Release(&signature);
    parcSignature_Release(&handle);
}
Ejemplo n.º 3
0
LONGBOW_TEST_CASE(Global, parcSignature_GetSignature)
{
    PARCBuffer *expected = parcBuffer_Allocate(strlen("Hello"));
    parcBuffer_PutArray(expected, strlen("Hello"), (uint8_t *) "Hello");
    PARCSignature *signature = parcSignature_Create(PARCSigningAlgorithm_DSA, PARC_HASH_SHA256, expected);

    PARCBuffer *actual = parcSignature_GetSignature(signature);

    assertTrue(parcBuffer_Equals(expected, actual), "Expected the original signature bits to be equal to the actual bits");
    parcSignature_Release(&signature);
    parcBuffer_Release(&expected);
}
Ejemplo n.º 4
0
LONGBOW_TEST_CASE(Global, parcSignature_Equals)
{
    PARCBuffer *bits = parcBuffer_Allocate(10); // arbitrary bufer size -- not important
    PARCBuffer *otherBits = parcBuffer_Allocate(strlen("hello"));
    parcBuffer_PutArray(otherBits, strlen("hello"), (uint8_t *) "hello");

    PARCSignature *x = parcSignature_Create(PARCSigningAlgorithm_DSA, PARC_HASH_SHA256, bits);
    PARCSignature *y = parcSignature_Create(PARCSigningAlgorithm_DSA, PARC_HASH_SHA256, bits);
    PARCSignature *z = parcSignature_Create(PARCSigningAlgorithm_DSA, PARC_HASH_SHA256, bits);
    PARCSignature *unequal1 = parcSignature_Create(PARCSigningAlgorithm_HMAC, PARC_HASH_SHA256, bits);
    PARCSignature *unequal2 = parcSignature_Create(PARCSigningAlgorithm_DSA, PARC_HASH_CRC32C, bits);
    PARCSignature *unequal3 = parcSignature_Create(PARCSigningAlgorithm_DSA, PARC_HASH_SHA256, otherBits);

    parcObjectTesting_AssertEqualsFunction(parcSignature_Equals, x, y, z, unequal1, unequal2, unequal3, NULL);

    parcSignature_Release(&x);
    parcSignature_Release(&y);
    parcSignature_Release(&z);
    parcSignature_Release(&unequal1);
    parcSignature_Release(&unequal2);
    parcSignature_Release(&unequal3);

    parcBuffer_Release(&bits);
    parcBuffer_Release(&otherBits);
}
Ejemplo n.º 5
0
LONGBOW_TEST_CASE(Global, parcSignature_GetSigningAlgorithm)
{
    PARCBuffer *signatureBits = parcBuffer_Allocate(strlen("Hello"));
    parcBuffer_PutArray(signatureBits, strlen("Hello"), (uint8_t *) "Hello");
    PARCSigningAlgorithm expected = PARCSigningAlgorithm_DSA;
    PARCSignature *signature = parcSignature_Create(expected, PARC_HASH_SHA256, signatureBits);

    PARCSigningAlgorithm actual = parcSignature_GetSigningAlgorithm(signature);

    assertTrue(expected == actual, "Expected %d, actual %d", expected, actual);
    parcSignature_Release(&signature);
    parcBuffer_Release(&signatureBits);
}
Ejemplo n.º 6
0
LONGBOW_TEST_CASE(Global, parcSignature_GetHashType)
{
    PARCBuffer *bits = parcBuffer_Allocate(strlen("Hello"));
    parcBuffer_PutArray(bits, strlen("Hello"), (uint8_t *) "Hello");
    PARCCryptoHashType expected = PARC_HASH_SHA256;
    PARCSignature *signature = parcSignature_Create(PARCSigningAlgorithm_DSA, expected, bits);
    parcBuffer_Release(&bits);

    PARCCryptoHashType actual = parcSignature_GetHashType(signature);

    assertTrue(expected == actual, "Expected %d, actual %d", expected, actual);
    parcSignature_Release(&signature);
}
Ejemplo n.º 7
0
LONGBOW_TEST_CASE(Global, parcSignature_ToString)
{
    PARCBuffer *signatureBits = parcBuffer_Allocate(strlen("Hello"));
    parcBuffer_PutArray(signatureBits, strlen("Hello"), (uint8_t *) "Hello");
    PARCSigningAlgorithm expected = PARCSigningAlgorithm_DSA;
    PARCSignature *signature = parcSignature_Create(expected, PARC_HASH_SHA256, signatureBits);

    char *string = parcSignature_ToString(signature);

    assertNotNull(string, "Expected non-NULL result from parcSignature_ToString");

    parcMemory_Deallocate((void **) &string);
    parcSignature_Release(&signature);
    parcBuffer_Release(&signatureBits);
}
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;
}
Ejemplo n.º 10
0
LONGBOW_TEST_CASE(Global, parcSigner_SignDigest)
{
    _MockSigner *mock = _createSigner();
    PARCSigner *signer = parcSigner_Create(mock, _MockSignerInterface);
    _mockSigner_Release(&mock);

    PARCBuffer *buffer = parcBuffer_Allocate(10);
    PARCCryptoHash *hash = parcCryptoHash_Create(PARCCryptoHashType_SHA256, buffer);
    PARCSignature *signature = parcSigner_SignDigest(signer, hash);

    assertNotNull(signature, "Expected non-NULL PARCSignature");

    PARCBuffer *bits = parcSignature_GetSignature(signature);
    char *bitstring = parcBuffer_ToString(bits);
    char *expectedString = FAKE_SIGNATURE;
    assertTrue(strcmp(bitstring, expectedString) == 0, "Expected the forced signature as output %s, got %s", expectedString, bitstring);
    parcMemory_Deallocate(&bitstring);

    parcCryptoHash_Release(&hash);
    parcBuffer_Release(&buffer);
    parcSignature_Release(&signature);
    parcSigner_Release(&signer);
}