示例#1
0
ndn_Error
ndn_Tlv0_2WireFormat_decodeLpPacket
(struct ndn_LpPacket *lpPacket, const uint8_t *input, size_t inputLength)
{
    struct ndn_TlvDecoder decoder;
    ndn_TlvDecoder_initialize(&decoder, input, inputLength);
    return ndn_decodeTlvLpPacket(lpPacket, &decoder);
}
示例#2
0
ndn_Error
ndn_Tlv0_2WireFormat_decodeSignatureInfoAndValue
(struct ndn_Signature *signature, const uint8_t *signatureInfo,
 size_t signatureInfoLength, const uint8_t *signatureValue,
 size_t signatureValueLength)
{
    ndn_Error error;
    struct ndn_TlvDecoder decoder;

    ndn_TlvDecoder_initialize(&decoder, signatureInfo, signatureInfoLength);
    if ((error = ndn_decodeTlvSignatureInfo(signature, &decoder)))
        return error;

    ndn_TlvDecoder_initialize(&decoder, signatureValue, signatureValueLength);
    return ndn_TlvDecoder_readBlobTlv
           (&decoder, ndn_Tlv_SignatureValue, &signature->signature);
}
示例#3
0
ndn_Error
ndn_Tlv0_2WireFormat_decodeEncryptedContent
(struct ndn_EncryptedContent *encryptedContent, const uint8_t *input,
 size_t inputLength)
{
    struct ndn_TlvDecoder decoder;
    ndn_TlvDecoder_initialize(&decoder, input, inputLength);
    return ndn_decodeTlvEncryptedContent(encryptedContent, &decoder);
}
示例#4
0
ndn_Error
ndn_Tlv0_2WireFormat_decodeControlResponse
(struct ndn_ControlResponse *controlResponse, const uint8_t *input,
 size_t inputLength)
{
    struct ndn_TlvDecoder decoder;
    ndn_TlvDecoder_initialize(&decoder, input, inputLength);
    return ndn_decodeTlvControlResponse(controlResponse, &decoder);
}
示例#5
0
ndn_Error
ndn_Tlv0_2WireFormat_decodeControlParameters
(struct ndn_ControlParameters *controlParameters, const uint8_t *input,
 size_t inputLength)
{
    struct ndn_TlvDecoder decoder;
    ndn_TlvDecoder_initialize(&decoder, input, inputLength);
    return ndn_decodeTlvControlParameters(controlParameters, &decoder);
}
示例#6
0
ndn_Error
ndn_Tlv0_2WireFormat_decodeInterest
(struct ndn_Interest *interest, const uint8_t *input, size_t inputLength,
 size_t *signedPortionBeginOffset, size_t *signedPortionEndOffset)
{
    struct ndn_TlvDecoder decoder;
    ndn_TlvDecoder_initialize(&decoder, input, inputLength);
    return ndn_decodeTlvInterest
           (interest, signedPortionBeginOffset, signedPortionEndOffset, &decoder);
}
示例#7
0
ndn_Error
ndn_Tlv0_2WireFormat_decodeDelegationSet_Delegation
(struct ndn_DelegationSet_Delegation *delegation, const uint8_t *input,
 size_t inputLength, size_t *encodingLength)
{
    struct ndn_TlvDecoder decoder;
    ndn_Error error;

    ndn_TlvDecoder_initialize(&decoder, input, inputLength);
    error = ndn_decodeTlvDelegationSet_Delegation(delegation, &decoder);
    *encodingLength = decoder.offset;

    return error;
}
示例#8
0
文件: node.cpp 项目: susmit85/ndn-cpp
void
Node::RegisterResponse::operator()(const ptr_lib::shared_ptr<const Interest>& interest, const ptr_lib::shared_ptr<Data>& responseData)
{
  // Decode responseData->getContent() and check for a success code.
  // TODO: Move this into the TLV code.
  struct ndn_TlvDecoder decoder;
  ndn_TlvDecoder_initialize
    (&decoder, responseData->getContent().buf(),
     responseData->getContent().size());
  ndn_Error error;
  size_t endOffset;
  if ((error = ndn_TlvDecoder_readNestedTlvsStart
      (&decoder, ndn_Tlv_NfdCommand_ControlResponse, &endOffset))) {
    _LOG_DEBUG
      ("Register prefix failed: Error decoding the NFD response: " <<
       ndn_getErrorString(error));
    info_->onRegisterFailed_(info_->prefix_);
    return;
  }
  uint64_t statusCode;
  if ((error = ndn_TlvDecoder_readNonNegativeIntegerTlv
       (&decoder, ndn_Tlv_NfdCommand_StatusCode, &statusCode))) {
    _LOG_DEBUG
      ("Register prefix failed: Error decoding the NFD response: " <<
       ndn_getErrorString(error));
    info_->onRegisterFailed_(info_->prefix_);
    return;
  }

  // Status code 200 is "OK".
  if (statusCode != 200) {
    _LOG_DEBUG
      ("Register prefix failed: Expected NFD status code 200, got: " <<
       statusCode);
    info_->onRegisterFailed_(info_->prefix_);
    return;
  }

  _LOG_DEBUG("Register prefix succeeded with the NFD forwarder for prefix " <<
             info_->prefix_->toUri());
}
示例#9
0
ndn_Error
ndn_encodeTlvSignatureInfo
(const struct ndn_Signature *signatureInfo, struct ndn_TlvEncoder *encoder)
{
    if (signatureInfo->type == ndn_SignatureType_Generic) {
        // Handle a Generic signature separately since it has the entire encoding.
        const struct ndn_Blob *encoding = &signatureInfo->signatureInfoEncoding;
        ndn_Error error;
        size_t endOffset;
        uint64_t signatureType;

        // Do a test decoding to sanity check that it is valid TLV.
        struct ndn_TlvDecoder decoder;
        ndn_TlvDecoder_initialize(&decoder, encoding->value, encoding->length);
        error = ndn_TlvDecoder_readNestedTlvsStart
                (&decoder, ndn_Tlv_SignatureInfo, &endOffset);
        if (!error)
            error = ndn_TlvDecoder_readNonNegativeIntegerTlv
                    (&decoder, ndn_Tlv_SignatureType, &signatureType);
        if (!error)
            error = ndn_TlvDecoder_finishNestedTlvs(&decoder, endOffset);
        if (error)
            return NDN_ERROR_The_Generic_signature_encoding_is_not_a_valid_NDN_TLV_SignatureInfo;

        return ndn_TlvEncoder_writeArray(encoder, encoding->value, encoding->length);
    }

    if (signatureInfo->type == ndn_SignatureType_Sha256WithRsaSignature ||
            signatureInfo->type == ndn_SignatureType_Sha256WithEcdsaSignature ||
            signatureInfo->type == ndn_SignatureType_HmacWithSha256Signature)
        return ndn_TlvEncoder_writeNestedTlv
               (encoder, ndn_Tlv_SignatureInfo,
                encodeSignatureWithKeyLocatorAndValidityPeriodValue, signatureInfo, 0);
    else if (signatureInfo->type == ndn_SignatureType_DigestSha256Signature)
        return ndn_TlvEncoder_writeNestedTlv
               (encoder, ndn_Tlv_SignatureInfo, encodeDigestSha256Value,
                signatureInfo, 0);
    else
        return NDN_ERROR_encodeSignatureInfo_unrecognized_SignatureType;
}