privatekey must be hex