std::string CStealthAddress::Encoded() const { // https://wiki.unsystem.net/index.php/DarkWallet/Stealth#Address_format // [version] [options] [scan_key] [N] ... [Nsigs] [prefix_length] ... data_chunk raw; if (!AppendColorBytes(this->nColor, raw)) { printf("Could not append color bytes\n"); } raw.push_back(stealth_version_byte); raw.push_back(options); raw.insert(raw.end(), scan_pubkey.begin(), scan_pubkey.end()); raw.push_back(1); // number of spend pubkeys raw.insert(raw.end(), spend_pubkey.begin(), spend_pubkey.end()); raw.push_back(0); // number of signatures raw.push_back(0); // ? AppendChecksum(raw); return EncodeBase58(raw); };
bool OTPayload::SetMessage(const OTMessage & theMessage) { uint32_t lSize = theMessage.m_strRawFile.GetLength()+1; //+1 for the null terminater if (theMessage.m_strRawFile.GetLength()) { SetPayloadSize(lSize + 1); // +1 for the checksum byte. memcpy((void *)GetPointer(), theMessage.m_strRawFile.Get(), lSize); // Add the checksum AppendChecksum( (OT_BYTE*)GetPointer(), lSize ); return true; } return false; }
// Envelope copied into payload to prepare for sending. bool OTPayload::SetEnvelope(const OTEnvelope & theEnvelope) { OTASCIIArmor theArmor; if (theEnvelope.GetAsciiArmoredData(theArmor)) { uint32_t lSize = theArmor.GetLength()+1; //+1 for the null terminater if (theArmor.GetLength()) { SetPayloadSize(lSize + 1); // +1 for the checksum byte. // Copy it in. memcpy((void *)GetPointer(), theArmor.Get(), lSize); // Add the checksum, success. AppendChecksum( (OT_BYTE*)GetPointer(), lSize ); return true; } } return false; }