@AccessesPartialKey
  static com.google.crypto.tink.signature.Ed25519PrivateKey createEd25519KeyFromRandomness(
      Ed25519Parameters parameters,
      InputStream stream,
      @Nullable Integer idRequirement,
      SecretKeyAccess access)
      throws GeneralSecurityException {
    SecretBytes pseudorandomness =
        Util.readIntoSecretBytes(stream, Ed25519Sign.SECRET_KEY_LEN, access);
    Ed25519Sign.KeyPair keyPair =
        Ed25519Sign.KeyPair.newKeyPairFromSeed(pseudorandomness.toByteArray(access));
    com.google.crypto.tink.signature.Ed25519PublicKey publicKey =
        com.google.crypto.tink.signature.Ed25519PublicKey.create(
            parameters.getVariant(), Bytes.copyFrom(keyPair.getPublicKey()), idRequirement);
    return com.google.crypto.tink.signature.Ed25519PrivateKey.create(
        publicKey, SecretBytes.copyFrom(keyPair.getPrivateKey(), access));
  }
This instance of {@code KeyManager} generates new {@code Ed25519PrivateKey} keys and produces new
instances of {@code Ed25519Sign}.
java_src/src/main/java/com/google/crypto/tink/signature/Ed25519PrivateKeyManager.java