I need to verify emails when users signup

I don’t know if it’s any worth, but perhaps you can use the multisite specific activation function, wpmu_activate_signup, as a reference point to get an idea how to handle verification in WordPress. Multisite uses the special wp_signups table to store users waiting for activation. So you might need to create a custom database table, if you want to do something similar.

Another option could be that you assign new users to a custom role, e.g. user_pending, and store the activation key to the user meta. Then use wp_mail() to send an email with a verification link to the user. And after verification assign the user to proper role. Some kind of cleanup function might be also needed to delete unverified user accounts.