code: public boolean detached_verify(byte [] message, byte [] signature) {
              if (signature.length != signatureLength)
                  return false;
              if (theirPublicKey.length != publicKeyLength)
                  return false;
              byte [] sm = new byte[signatureLength + message.length];
              byte [] m = new byte[signatureLength + message.length];
              for (int i = 0; i < signatureLength; i++)
                  sm[i] = signature[i];
              for (int i = 0; i < message.length; i++)
                  sm[i + signatureLength] = message[i];
              return (crypto_sign_open(m, -1, sm, 0, sm.length, theirPublicKey) >= 0);
          }
docs: /*
  @description
  Verifies the signature for the message and
  returns true if verification succeeded or false if it failed.