• Pieter Wuille's avatar
    Refactor keytime/metadata and wallet encryption bugfix · 14f3fed0
    Pieter Wuille authored
    Refactor keytime:
    * Key metadata is kept in a CWallet::mapKeyMetadata (std::map<CKeyId,CKeyMetadata>).
    * When generating a new key, time is put in that map, and new key is written.
    * AddKeyPubKey and AddCryptedKey do not take a creation time argument, but instead
      pull it from that map, if it exists there.
    
    Bugfix:
    * AddKeyPubKey and AddCryptedKey in CWallet didn't override the CKeyStore
      definition anymore. This is fixed, as they no longed need the nCreationTime
      argument now.
    
    Also a few related other changes:
    * Metadata can be overwritten.
    * Only GenerateNewKey calls GetTime(), as it's the only place where we know for
      sure a key was not constructed earlier.
    * When the nTimeFirstKey is known to be inaccurate, it is set to the value 1
      (instead of 0, which would mean unknown).
    * Use CPubKey instead of std::vector<unsigned char> where possible.
    14f3fed0
wallet.cpp 61.9 KB