RawByteString THierarchicalStorage::ReadBinaryData(const UnicodeString & Name) const { size_t Size = BinaryDataSize(Name); RawByteString Value; Value.SetLength(Size); ReadBinaryData(Name, static_cast<void *>(const_cast<char *>(Value.c_str())), Size); return Value; }
UnicodeString TConfiguration::BannerHash(const UnicodeString & Banner) const { RawByteString Result; Result.SetLength(16); md5checksum( reinterpret_cast<const char *>(Banner.c_str()), static_cast<int>(Banner.Length() * sizeof(wchar_t)), reinterpret_cast<uint8_t *>(const_cast<char *>(Result.c_str()))); return BytesToHex(Result); }
//--------------------------------------------------------------------------- UnicodeString __fastcall TConfiguration::BannerHash(const UnicodeString & Banner) { RawByteString Result; Result.SetLength(16); md5checksum( reinterpret_cast<const char*>(Banner.c_str()), Banner.Length() * sizeof(wchar_t), (unsigned char*)Result.c_str()); return BytesToHex(Result); }
UnicodeString UnMungeStr(const UnicodeString & Str) { // Str should contain ASCII characters only RawByteString Source = Str; RawByteString Dest; char * Buffer = Dest.SetLength(Source.GetLength()); putty_unmungestr(Source.c_str(), Buffer, static_cast<int>(Source.GetLength())); // Cut the string at null character PackStr(Dest); UnicodeString Result; const std::string Bom(CONST_BOM); if (Dest.Pos(Bom.c_str()) == 1) { Dest.Delete(1, Bom.size()); Result = UTF8ToString(Dest); } else { Result = AnsiToString(Dest); } return Result; }
UnicodeString MungeStr(const UnicodeString & Str, bool ForceAnsi) { RawByteString Source; if (ForceAnsi) { Source = RawByteString(AnsiString(Str)); } else { Source = RawByteString(UTF8String(Str)); if (Source.Length() > Str.Length()) { Source.Insert(CONST_BOM, 1); } } // should contain ASCII characters only RawByteString Dest; char * Buffer = Dest.SetLength(Source.Length() * 3 + 1); putty_mungestr(Source.c_str(), Buffer); PackStr(Dest); return UnicodeString(Dest.c_str(), Dest.Length()); }