コード例 #1
0
ファイル: tlv-data.c プロジェクト: yoursunny/esp8266ndn
/**
 * This private function is called by ndn_TlvEncoder_writeNestedTlv to write the TLVs in the body of the Data value.
 * @param context This is the DataValueContext struct pointer which was passed to writeTlv.
 * @param encoder the ndn_TlvEncoder which is calling this.
 * @return 0 for success, else an error code.
 */
static ndn_Error
encodeDataValue(const void *context, struct ndn_TlvEncoder *encoder)
{
  const struct DataValueContext *dataValueContext = (const struct DataValueContext *)context;
  const struct ndn_Data *data = dataValueContext->data;
  ndn_Error error;
  size_t dummyBeginOffset, dummyEndOffset;

  *dataValueContext->signedPortionBeginOffset = encoder->offset;

  if ((error = ndn_encodeTlvName
       (&data->name, &dummyBeginOffset, &dummyEndOffset, encoder)))
    return error;
  if ((error = ndn_TlvEncoder_writeNestedTlv(encoder, ndn_Tlv_MetaInfo, encodeMetaInfoValue, &data->metaInfo, 0)))
    return error;
  if ((error = ndn_TlvEncoder_writeBlobTlv(encoder, ndn_Tlv_Content, &data->content)))
    return error;
  if ((error = ndn_encodeTlvSignatureInfo(&data->signature, encoder)))
    return error;

  *dataValueContext->signedPortionEndOffset = encoder->offset;

  if ((error = ndn_TlvEncoder_writeBlobTlv(encoder, ndn_Tlv_SignatureValue, &data->signature.signature)))
    return error;

  return NDN_ERROR_success;
}
コード例 #2
0
ndn_Error
ndn_Tlv0_2WireFormat_encodeSignatureInfo
(const struct ndn_Signature *signature, struct ndn_DynamicUInt8Array *output,
 size_t *encodingLength)
{
    ndn_Error error;
    struct ndn_TlvEncoder encoder;
    ndn_TlvEncoder_initialize(&encoder, output);
    error = ndn_encodeTlvSignatureInfo(signature, &encoder);
    *encodingLength = encoder.offset;

    return error;
}