|
|
@ -264,6 +264,8 @@ namespace data |
|
|
|
introducer.iTag = boost::lexical_cast<uint32_t>(value); |
|
|
|
introducer.iTag = boost::lexical_cast<uint32_t>(value); |
|
|
|
else if (!strcmp (key, "ikey")) |
|
|
|
else if (!strcmp (key, "ikey")) |
|
|
|
Base64ToByteStream (value, strlen (value), introducer.iKey, 32); |
|
|
|
Base64ToByteStream (value, strlen (value), introducer.iKey, 32); |
|
|
|
|
|
|
|
else if (!strcmp (key, "iexp")) |
|
|
|
|
|
|
|
introducer.iExp = boost::lexical_cast<uint32_t>(value); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!s) return; |
|
|
|
if (!s) return; |
|
|
|
} |
|
|
|
} |
|
|
@ -478,6 +480,18 @@ namespace data |
|
|
|
properties << ';'; |
|
|
|
properties << ';'; |
|
|
|
i++; |
|
|
|
i++; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
i = 0; |
|
|
|
|
|
|
|
for (const auto& introducer: address.ssu->introducers) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (introducer.iExp) // expiration is specified
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
WriteString ("iexp" + boost::lexical_cast<std::string>(i), properties); |
|
|
|
|
|
|
|
properties << '='; |
|
|
|
|
|
|
|
WriteString (boost::lexical_cast<std::string>(introducer.iExp), properties); |
|
|
|
|
|
|
|
properties << ';'; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
i++; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// write intro key
|
|
|
|
// write intro key
|
|
|
|
WriteString ("key", properties); |
|
|
|
WriteString ("key", properties); |
|
|
|