@ -163,12 +163,20 @@ namespace llarp
return false ;
return false ;
if ( ! enckey . BEncode ( buf ) )
if ( ! enckey . BEncode ( buf ) )
return false ;
return false ;
// write router version if present
// write router version if present
if ( routerVersion )
if ( routerVersion )
{
{
if ( not BEncodeWriteDictEntry ( " r " , * routerVersion , buf ) )
if ( not BEncodeWriteDictEntry ( " r " , * routerVersion , buf ) )
return false ;
return false ;
}
}
if ( version > 0 )
{
// srv records if present
if ( not BEncodeWriteDictList ( " s " , srvRecords , buf ) )
return false ;
}
/* write last updated */
/* write last updated */
if ( ! bencode_write_bytestring ( buf , " u " , 1 ) )
if ( ! bencode_write_bytestring ( buf , " u " , 1 ) )
return false ;
return false ;
@ -212,6 +220,8 @@ namespace llarp
pubkey . Zero ( ) ;
pubkey . Zero ( ) ;
routerVersion = std : : optional < RouterVersion > { } ;
routerVersion = std : : optional < RouterVersion > { } ;
last_updated = 0 s ;
last_updated = 0 s ;
srvRecords . clear ( ) ;
version = LLARP_PROTO_VERSION ;
}
}
util : : StatusObject
util : : StatusObject
@ -231,6 +241,12 @@ namespace llarp
{
{
obj [ " routerVersion " ] = routerVersion - > ToString ( ) ;
obj [ " routerVersion " ] = routerVersion - > ToString ( ) ;
}
}
std : : vector < util : : StatusObject > srv ;
for ( const auto & record : srvRecords )
{
srv . emplace_back ( record . ExtractStatus ( ) ) ;
}
obj [ " srvRecords " ] = srv ;
return obj ;
return obj ;
}
}
@ -345,6 +361,9 @@ namespace llarp
return true ;
return true ;
}
}
if ( not BEncodeMaybeReadDictList ( " s " , srvRecords , read , key , buf ) )
return false ;
if ( ! BEncodeMaybeReadDictEntry ( " p " , enckey , read , key , buf ) )
if ( ! BEncodeMaybeReadDictEntry ( " p " , enckey , read , key , buf ) )
return false ;
return false ;
@ -362,7 +381,7 @@ namespace llarp
if ( ! BEncodeMaybeReadDictEntry ( " z " , signature , read , key , buf ) )
if ( ! BEncodeMaybeReadDictEntry ( " z " , signature , read , key , buf ) )
return false ;
return false ;
return read ;
return read or bencode_discard ( buf ) ;
}
}
bool
bool
@ -503,7 +522,7 @@ namespace llarp
/* else */
/* else */
if ( version = = 1 )
if ( version = = 1 )
{
{
llarp_buffer_t buf ( signed_bt_dict ) ;
llarp_buffer_t buf { signed_bt_dict } ;
return CryptoManager : : instance ( ) - > verify ( pubkey , buf , signature ) ;
return CryptoManager : : instance ( ) - > verify ( pubkey , buf , signature ) ;
}
}