uni2u / difs-cxx

DIFS ndn-cxx
Other
1 stars 3 forks source link

HachChain-code_review-210316 #6

Closed uni2u closed 3 years ago

uni2u commented 3 years ago

Overview

+------------------------------------------+
|                   Name                   |
+------------------------------------------+
|                 MetaInfo                 |
|(ContentType,FreshnessPeriod,FinalBlockID)|
+------------------------------------------+
|                  Content                 |
+------------------------------------------+
|                 Signature                |
+------------------------------------------+
|SignatureInfo                             |
|            +----------------------------+|
|            | SignatureType              ||
|            +----------------------------+|
|            | KeyLocator                 ||
|            +----------------------------+|
+------------------------------------------+
|              SignatureValue              |
+------------------------------------------+
DataSignature = SignatureInfo SignatureValue

SignatureInfo = SIGNATURE-INFO-TYPE TLV-LENGTH
                  SignatureType
                  [KeyLocator]

SignatureValue = SIGNATURE-VALUE-TYPE TLV-LENGTH *OCTET
SignatureInfo = SIGNATURE-INFO-TYPE TLV-LENGTH
                  SignatureType  ==>  1번째: SignatureHashChainWithRsa / 2번째: SignatureHashChainWithSHA256
                  [KeyLocator]
                  [NextHash]  ==>  추가되는 부분
justin-labry commented 3 years ago

저는 아래의 부분에 대해서 조금 살펴봤는데요. block.push_back()을 사용할때는 자유도 있게 사용할 수 있는것이 아니라.. 패킷포멧에 정의된 경우만 sub tlv를 심을 수 있는 것 같습니다. 좀 더 자세한 내용은 3/22 월요일 조금 더 확인해 보고 공유하겠습니다.

void
KeyChain::sign(Data& data, const ndn::Block& nextHash, const SigningInfo& params)
{
  Name keyName;
  SignatureInfo sigInfo;
  std::tie(keyName, sigInfo) = prepareSignatureInfo(params);

  if (nextHash.value_size() > 0)
  {
    // Prepend hash to hash content block
    Block block = Block(tlv::Content);
    block.push_back(nextHash);
    block.push_back(data.getContent());
    data.setContent(block);
  }

  data.setSignatureInfo(sigInfo);
justin-labry commented 3 years ago

네, 확인결과 vector로 되어있어도 미리 defined된것이 아닌 block을 추가 할 수 없고... 우리가 hash-chain application에 한 방법과 유사하게 구현해야 할 것 같습니다. ndn-cxx에 구현하지만 next-hash는 bytes형태로 32bytes 넣는것으로요. 코멘트 부탁드립니다.

justin-labry commented 3 years ago

Meta-Info.cpp에 보면 아래와 같이 App에 따라서 메타 인포를 넣어 줄 수 있는 TLV가 있는데 이것을 활용해 보면 어떨까요? 우리가 최초 예상한 형태와 가장 가깝게 구현을 마무리할수 같은데요. MetaInfo& MetaInfo::setAppMetaInfo(const std::list& info)