verifyMessage
Verify a DHT message against a schema and extract its keys. This is a faithful port of verify_message_impl (src/kademlia/msg.cpp).
Walks desc in order against message (which must be a dict). For each descriptor it does a dict_find, drops the result on a type mismatch (unless the descriptor type is BdecodeNode.Type.NONE, the wildcard), fails on a missing non-optional key, enforces the string-length / divisibility constraint, and descends into / pops out of child dictionaries via the KeyDesc.PARSE_CHILDREN/KeyDesc.LAST_CHILD flags (libtorrent keeps an explicit stack of up to 5 frames; we do the same).
Return
a VerifyResult whose VerifyResult.values line up index-for-index with desc. This is the ret[] array libtorrent fills in.