if (payload->securityData)
{
err |= cbor_encode_text_string(&map, payload->securityData,
- strlen(payload->securityData));
- VERIFY_CBOR_SUCCESS(TAG, err, "Retrieving security data");
+ (size_t)(strlen(payload->securityData)));
+ VERIFY_CBOR_SUCCESS(TAG, err, "Encoding security data");
+ }
+ else
+ {
+ err |= cbor_encode_null(&map);
+ VERIFY_CBOR_SUCCESS(TAG, err, "Encoding security data");
}
err |= cbor_encoder_close_container(&encoder, &map);
- VERIFY_CBOR_SUCCESS(TAG, err, "closing security map");
+ VERIFY_CBOR_SUCCESS(TAG, err, "Closing security map");
exit:
return checkError(err, &encoder, outPayload, size);
}
static OCStackResult OCParseSecurityPayload(OCPayload** outPayload, CborValue* rootValue)
{
- OCStackResult ret = OC_STACK_MALFORMED_RESPONSE;
+ OCStackResult ret = OC_STACK_ERROR;
CborError err;
char *securityData = NULL;
-
- VERIFY_PARAM_NON_NULL(TAG, outPayload, "Invalid parameter");
- VERIFY_PARAM_NON_NULL(TAG, outPayload, "Invalid cbor");
-
CborValue strVal;
+ VERIFY_PARAM_NON_NULL(TAG, outPayload, "Invalid parameter outPayload");
+ VERIFY_PARAM_NON_NULL(TAG, rootValue, "Invalid parameter rootValue");
+ *outPayload = NULL;
+
err = cbor_value_enter_container(rootValue, &strVal);
VERIFY_CBOR_SUCCESS(TAG, err, "Failed entering container");
+
if (cbor_value_is_text_string(&strVal))
{
size_t len = 0;
VERIFY_PARAM_NON_NULL(TAG, *outPayload, "Invalid cbor");
ret = OC_STACK_OK;
}
+ else if(cbor_value_is_valid(&strVal))
+ {
+ ret = OC_STACK_OK;
+ }
+ else
+ {
+ ret = OC_STACK_MALFORMED_RESPONSE;
+ }
exit:
OICFree(securityData);