### Question:
SECP256K1 { public static Signature sign(final Bytes32 dataHash, final KeyPair keyPair) { if (useNative) { return signNative(dataHash, keyPair); } else { return signDefault(dataHash, keyPair); } }  static void enableNative(); static Signature sign(final Bytes32 dataHash, final KeyPair keyPair); static boolean verify(final Bytes data, final Signature signature, final PublicKey pub); static Signature normaliseSignature(
      final BigInteger nativeR,
      final BigInteger nativeS,
      final PublicKey publicKey,
      final Bytes32 dataHash); static boolean verify(
      final Bytes data,
      final Signature signature,
      final PublicKey pub,
      final UnaryOperator<Bytes> preprocessor); static Bytes32 calculateECDHKeyAgreement(
      final PrivateKey privKey, final PublicKey theirPubKey); static final String ALGORITHM; static final String CURVE_NAME; static final String PROVIDER; static final ECDomainParameters CURVE; static final BigInteger HALF_CURVE_ORDER; }### Answer:
@Test public void signatureGeneration() { final SECP256K1.PrivateKey privateKey = SECP256K1.PrivateKey.create( new BigInteger("c85ef7d79691fe79573b1a7064c19c1a9819ebdbd1faaab1a8ec92344438aaf4", 16)); final SECP256K1.KeyPair keyPair = SECP256K1.KeyPair.create(privateKey); final Bytes data = Bytes.wrap("This is an example of a signed message.".getBytes(UTF_8)); final Bytes32 dataHash = keccak256(data); final SECP256K1.Signature expectedSignature = SECP256K1.Signature.create( new BigInteger("d2ce488f4da29e68f22cb05cac1b19b75df170a12b4ad1bdd4531b8e9115c6fb", 16), new BigInteger("75c1fe50a95e8ccffcbb5482a1e42fbbdd6324131dfe75c3b3b7f9a7c721eccb", 16), (byte) 1); final SECP256K1.Signature actualSignature = SECP256K1.sign(dataHash, keyPair); assertThat(actualSignature).isEqualTo(expectedSignature); }