test_class.file: java_src/src/test/java/com/google/crypto/tink/subtle/Ed25519SignTest.java
test_class.identifier: Ed25519SignTest
test_case.body: @Test
    public void testSigningWithMultipleRandomKeysAndMessages() throws Exception {
      for (int i = 0; i < 100; i++) {
        Ed25519Sign.KeyPair keyPair = Ed25519Sign.KeyPair.newKeyPair();
        Ed25519Sign signer = new Ed25519Sign(keyPair.getPrivateKey());
        Ed25519Verify verifier = new Ed25519Verify(keyPair.getPublicKey());
        byte[] msg = Random.randBytes(20);
        byte[] sig = signer.sign(msg);
        try {
          verifier.verify(sig, msg);
        } catch (GeneralSecurityException ex) {
          fail(
              String.format(
                  "\n\nMessage: %s\nSignature: %s\nPrivateKey: %s\nPublicKey: %s\n",
                  TestUtil.hexEncode(msg),
                  TestUtil.hexEncode(sig),
                  TestUtil.hexEncode(keyPair.getPrivateKey()),
                  TestUtil.hexEncode(keyPair.getPublicKey())));
        }
      }
    }
test_case.class_method_signature: Ed25519SignTest.testSigningWithMultipleRandomKeysAndMessages()
test_case.full_signature: @Test public void testSigningWithMultipleRandomKeysAndMessages()
test_case.identifier: testSigningWithMultipleRandomKeysAndMessages
test_case.invocations: newKeyPair getPrivateKey getPublicKey randBytes sign verify fail format hexEncode hexEncode hexEncode getPrivateKey hexEncode getPublicKey
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testSigningWithMultipleRandomKeysAndMessages()
focal_class.declarator: SECRET_KEY_LEN = Field25519.FIELD_LEN
focal_class.modifier: public static final
focal_class.original_string: public static final int SECRET_KEY_LEN = Field25519.FIELD_LEN;
focal_class.type: int
focal_class.var_name: SECRET_KEY_LEN
focal_class.declarator: hashedPrivateKey
focal_class.modifier: private final
focal_class.original_string: private final byte[] hashedPrivateKey;
focal_class.type: byte[]
focal_class.var_name: hashedPrivateKey
focal_class.declarator: publicKey
focal_class.modifier: private final
focal_class.original_string: private final byte[] publicKey;
focal_class.type: byte[]
focal_class.var_name: publicKey
focal_class.file: java_src/src/main/java/com/google/crypto/tink/subtle/Ed25519Sign.java
focal_class.identifier: Ed25519Sign
focal_class.interfaces: implements PublicKeySign
focal_class.class_method_signature: Ed25519Sign.Ed25519Sign(final byte[] privateKey)
focal_class.full_signature: public  Ed25519Sign(final byte[] privateKey)
focal_class.identifier: Ed25519Sign
focal_class.modifiers: public
focal_class.parameters: (final byte[] privateKey)
focal_class.signature:  Ed25519Sign(final byte[] privateKey)
focal_class.class_method_signature: Ed25519Sign.sign(final byte[] data)
focal_class.full_signature: @Override public byte[] sign(final byte[] data)
focal_class.identifier: sign
focal_class.modifiers: @Override public
focal_class.parameters: (final byte[] data)
focal_class.return: byte[]
focal_class.signature: byte[] sign(final byte[] data)
focal_method.body: @Override
    public byte[] sign(final byte[] data) throws GeneralSecurityException {
      return Ed25519.sign(data, publicKey, hashedPrivateKey);
    }
focal_method.class_method_signature: Ed25519Sign.sign(final byte[] data)
focal_method.full_signature: @Override public byte[] sign(final byte[] data)
focal_method.identifier: sign
focal_method.invocations: sign
focal_method.modifiers: @Override public
focal_method.parameters: (final byte[] data)
focal_method.return: byte[]
focal_method.signature: byte[] sign(final byte[] data)