diff options
| author | Yuri Victorovich <yuri@FreeBSD.org> | 2026-04-25 17:10:24 +0000 |
|---|---|---|
| committer | Yuri Victorovich <yuri@FreeBSD.org> | 2026-04-25 17:12:53 +0000 |
| commit | b14a7be4225c5268af83f53322095592ac07f81b (patch) | |
| tree | e405b985619d38351ba2dab08c79bf30c7e9c58d | |
| parent | f47b3e15960e7525857cf757d58626ecf71f399b (diff) | |
games/coronapoker: Remove
coronapoker downloads binary module that defeats its GPL license.
This download presents a potential security risk.
Reference: https://github.com/tonikelope/coronapoker/issues/7
| -rw-r--r-- | MOVED | 1 | ||||
| -rw-r--r-- | games/Makefile | 1 | ||||
| -rw-r--r-- | games/coronapoker/Makefile | 64 | ||||
| -rw-r--r-- | games/coronapoker/distinfo | 5 | ||||
| -rw-r--r-- | games/coronapoker/files/coronapoker.in | 5 | ||||
| -rw-r--r-- | games/coronapoker/files/patch-src_main_java_com_tonikelope_coronapoker_Panoptes.java | 546 | ||||
| -rw-r--r-- | games/coronapoker/pkg-descr | 5 | ||||
| -rw-r--r-- | games/coronapoker/pkg-message | 54 |
8 files changed, 1 insertions, 680 deletions
@@ -5251,3 +5251,4 @@ databases/py-sqlglotrs|databases/py-sqlglotc|2026-04-18|Remove obsoleted port. U devel/py-prettytable0|devel/py-prettytable|2026-04-18|Remove obsoleted port. Use devel/py-prettytable instead www/py-requests-cache0|www/py-requests-cache|2026-04-18|Remove obsoleted port. Use www/py-requests-cache instead sysutils/py-azure-cli-base||2026-04-21|Remove obsoleted port +games/coronapoker||2026-04-25|Remove for security concerns: downloads closed source binary modules, should not be restored unless https://github.com/tonikelope/coronapoker/issues/7 is addressed diff --git a/games/Makefile b/games/Makefile index 5855c139832c..963274b9958b 100644 --- a/games/Makefile +++ b/games/Makefile @@ -161,7 +161,6 @@ SUBDIR += connectagram SUBDIR += connectfive SUBDIR += construo - SUBDIR += coronapoker SUBDIR += corsix-th SUBDIR += cosmosmash SUBDIR += cowsay diff --git a/games/coronapoker/Makefile b/games/coronapoker/Makefile deleted file mode 100644 index c740e2db8ff4..000000000000 --- a/games/coronapoker/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -PORTNAME= coronapoker -DISTVERSIONPREFIX= v -DISTVERSION= 20.28 -CATEGORIES= games java - -MAINTAINER= yuri@FreeBSD.org -COMMENT= Texas Holdem poker game -WWW= https://tonikelope.github.io/coronapoker/ \ - https://github.com/tonikelope/coronapoker - -LICENSE= GPLv3 -LICENSE_FILE= ${WRKSRC}/LICENSE - -BUILD_DEPENDS= maven>0:devel/maven - -USES= java -JAVA_VERSION= 11+ -USE_GITHUB= yes -GH_ACCOUNT= tonikelope - -NO_ARCH= yes - -SUB_FILES= ${PORTNAME} -SUB_LIST= JAVA=${JAVA} PORTNAME=${PORTNAME} PORTVERSION=${PORTVERSION} - -PLIST_FILES= bin/${PORTNAME} \ - ${JAVAJARDIR}/${PORTNAME}-${PORTVERSION}-jar-with-dependencies.jar - -# to rebuild the deps archive: -# 1. set DEV_UPDATE_MODE=yes -# 2. make makesum build -# 3. upload the *-deps archive -# 4. set DEV_UPDATE_MODE=no -# 5. make clean makesum - -DEV_UPDATE_MODE= no - -.if (${DEV_UPDATE_MODE} == "yes") -MVN_ARGS= -.else -MASTER_SITES+= LOCAL/yuri/:deps -DISTFILES+= ${PORTNAME}-${DISTVERSION}-deps${EXTRACT_SUFX}:deps -MVN_ARGS= --offline -.endif - -do-build: - @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \ - JAVA_HOME=${JAVA_HOME} ${LOCALBASE}/bin/mvn ${MVN_ARGS} \ - -fae install \ - -Dmaven.test.skip=true \ - -Duser.home=${WRKDIR} \ - package - -do-install: - ${INSTALL_SCRIPT} ${WRKDIR}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin - ${INSTALL_DATA} ${WRKSRC}/target/CoronaPoker-*-jar-with-dependencies.jar ${STAGEDIR}${JAVAJARDIR}/${PORTNAME}-${PORTVERSION}-jar-with-dependencies.jar - -.if (${DEV_UPDATE_MODE} == "yes") -post-build: - @cd ${WRKDIR} && ${TAR} czf ${DISTDIR}/${PORTNAME}-${DISTVERSION}-deps${EXTRACT_SUFX} .m2 - @${ECHO} "(!!!) Please upload the deps archive: ${DISTDIR}/${PORTNAME}-${DISTVERSION}-deps${EXTRACT_SUFX}" -.endif - -.include <bsd.port.mk> diff --git a/games/coronapoker/distinfo b/games/coronapoker/distinfo deleted file mode 100644 index 61d610367431..000000000000 --- a/games/coronapoker/distinfo +++ /dev/null @@ -1,5 +0,0 @@ -TIMESTAMP = 1777020355 -SHA256 (coronapoker-20.28-deps.tar.gz) = 949de6838af398109813d5ce7f9e6b86a18a4b2355aa810d20eeb1ddaa738ca0 -SIZE (coronapoker-20.28-deps.tar.gz) = 30402541 -SHA256 (tonikelope-coronapoker-v20.28_GH0.tar.gz) = 9f527058639abb3f342b34abcd068418a2d85f017bc4e90a841457e1b9434d0b -SIZE (tonikelope-coronapoker-v20.28_GH0.tar.gz) = 312524801 diff --git a/games/coronapoker/files/coronapoker.in b/games/coronapoker/files/coronapoker.in deleted file mode 100644 index 18c1f4238265..000000000000 --- a/games/coronapoker/files/coronapoker.in +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -export LC_ALL=en_US.UTF-8 - -%%JAVA%% -jar %%JAVAJARDIR%%/%%PORTNAME%%-%%PORTVERSION%%-jar-with-dependencies.jar "$@" diff --git a/games/coronapoker/files/patch-src_main_java_com_tonikelope_coronapoker_Panoptes.java b/games/coronapoker/files/patch-src_main_java_com_tonikelope_coronapoker_Panoptes.java deleted file mode 100644 index 557b3ab59fca..000000000000 --- a/games/coronapoker/files/patch-src_main_java_com_tonikelope_coronapoker_Panoptes.java +++ /dev/null @@ -1,546 +0,0 @@ --- Disable binary downloads and native library loading for GPL compliance --- --- This port is licensed under GPLv3, but the Panoptes native library is: --- 1. Closed-source (violates GPL requirement for source availability) --- 2. Downloaded from GitHub at runtime (security risk from untrusted binaries) --- 3. Not available for FreeBSD --- --- This patch: --- - Disables verifyAndDownloadNativeLib() to prevent binary downloads --- - Disables WAKEUP_PANOPTES() to prevent System.loadLibrary() call --- - Replaces all 40+ native JNI method declarations with safe no-op stubs --- that return sensible defaults (empty arrays, false, 0, etc.) --- - Allows the game to run in pure-Java mode with reduced functionality --- --- See: https://github.com/tonikelope/coronapoker/issues/7 - --- Disable binary downloads and native library loading for GPL compliance --- --- This port is licensed under GPLv3, but the Panoptes native library is: --- 1. Closed-source (violates GPL requirement for source availability) --- 2. Downloaded from GitHub at runtime (security risk from untrusted binaries) --- 3. Not available for FreeBSD --- --- This patch: --- - Disables verifyAndDownloadNativeLib() to prevent binary downloads --- - Disables WAKEUP_PANOPTES() to prevent System.loadLibrary() call --- - Replaces all 40+ native JNI method declarations with safe no-op stubs --- that return sensible defaults (empty arrays, false, 0, etc.) --- - Allows the game to run in pure-Java mode with reduced functionality --- --- See: https://github.com/tonikelope/coronapoker/issues/7 - --- Disable binary downloads and native library loading for GPL compliance --- --- This port is licensed under GPLv3, but the Panoptes native library is: --- 1. Closed-source (violates GPL requirement for source availability) --- 2. Downloaded from GitHub at runtime (security risk from untrusted binaries) --- 3. Not available for FreeBSD --- --- This patch: --- - Disables verifyAndDownloadNativeLib() to prevent binary downloads --- - Disables WAKEUP_PANOPTES() to prevent library loading --- - Replaces all 40+ native JNI method declarations with safe no-op stubs --- that return sensible defaults (empty arrays, false, 0, etc.) --- - Allows the game to run in pure-Java mode with reduced functionality --- --- See: https://github.com/tonikelope/coronapoker/issues/7 - --- Disable binary downloads and native library loading for GPL compliance --- --- This port is licensed under GPLv3, but the Panoptes native library is: --- 1. Closed-source (violates GPL requirement for source availability) --- 2. Downloaded from GitHub at runtime (security risk from untrusted binaries) --- 3. Not available for FreeBSD --- --- This patch disables the download and native library mechanisms entirely, --- allowing the game to run in pure-Java mode with reduced functionality. --- --- See: https://github.com/tonikelope/coronapoker/issues/7 - ---- src/main/java/com/tonikelope/coronapoker/Panoptes.java.orig 2026-04-25 16:30:30 UTC -+++ src/main/java/com/tonikelope/coronapoker/Panoptes.java -@@ -72,95 +72,8 @@ public class Panoptes { - * tampered with. - */ - private static void verifyAndDownloadNativeLib(String targetDir) { -- String os = System.getProperty("os.name").toLowerCase(); -- String libName; -- -- // 1. Resolve OS-specific binary extension -- if (os.contains("win")) { -- libName = "panoptes.dll"; -- } else if (os.contains("mac")) { -- libName = "libpanoptes.dylib"; -- } else { -- libName = "libpanoptes.so"; -- } -- -- File localLib = new File(targetDir + File.separator + libName); -- File localKey = new File(targetDir + File.separator + MANIFEST_KEY); -- -- try { -- LOGGER.log(Level.INFO, "[PANOPTES] Checking engine integrity..."); -- -- // 2. Fetch official manifest from remote repository -- URL manifestUrl = new URL(REPO_RAW_URL + CHECKSUM_FILE); -- String manifestContent = downloadText(manifestUrl); -- -- String expectedLibHash = parseHashFromManifest(manifestContent, libName); -- String expectedKeyHash = parseHashFromManifest(manifestContent, MANIFEST_KEY); -- -- if (expectedLibHash == null || expectedKeyHash == null) { -- throw new Exception("Target hashes not found in the remote manifest."); -- } -- -- boolean needsLibUpdate = false; -- boolean needsKeyUpdate = false; -- -- // 3. Verify Library Integrity -- if (!localLib.exists()) { -- LOGGER.log(Level.INFO, "[PANOPTES] Local library not found. Forcing download..."); -- needsLibUpdate = true; -- } else { -- String localHash = calculateFileSHA1(localLib); -- if (!expectedLibHash.equalsIgnoreCase(localHash)) { -- LOGGER.log(Level.SEVERE, "[PANOPTES-SHIELD] Library hash mismatch! Local: {0} | Remote: {1}", new Object[]{localHash, expectedLibHash}); -- needsLibUpdate = true; -- } -- } -- -- // 4. Verify Consensus Key Integrity -- if (!localKey.exists()) { -- LOGGER.log(Level.INFO, "[PANOPTES] Consensus key not found. Forcing download..."); -- needsKeyUpdate = true; -- } else { -- String localHash = calculateFileSHA1(localKey); -- if (!expectedKeyHash.equalsIgnoreCase(localHash)) { -- LOGGER.log(Level.SEVERE, "[PANOPTES-SHIELD] Key hash mismatch! Local: {0} | Remote: {1}", new Object[]{localHash, expectedKeyHash}); -- needsKeyUpdate = true; -- } -- } -- -- // 5. Download and Patch if necessary -- if (needsLibUpdate) { -- LOGGER.log(Level.INFO, "[PANOPTES] Downloading official binary from repository..."); -- downloadBinary(new URL(REPO_RAW_URL + libName), localLib); -- -- // macOS requires explicit code signing and extended attribute clearing to allow execution -- if (os.contains("mac")) { -- try { -- LOGGER.log(Level.INFO, "[PANOPTES] Applying macOS security patches..."); -- new ProcessBuilder("xattr", "-cr", localLib.getAbsolutePath()).start().waitFor(); -- new ProcessBuilder("codesign", "--force", "-s", "-", localLib.getAbsolutePath()).start().waitFor(); -- LOGGER.log(Level.INFO, "[PANOPTES] macOS patches applied successfully."); -- } catch (Exception macEx) { -- LOGGER.log(Level.WARNING, "[PANOPTES] Failed to apply macOS patch: {0}", macEx.getMessage()); -- } -- } -- } -- -- if (needsKeyUpdate) { -- LOGGER.log(Level.INFO, "[PANOPTES] Downloading official consensus key..."); -- downloadBinary(new URL(REPO_RAW_URL + MANIFEST_KEY), localKey); -- } -- -- if (needsLibUpdate || needsKeyUpdate) { -- Helpers.cleanAllOldTempCrupierFiles(); -- LOGGER.log(Level.INFO, "[PANOPTES] UPDATE COMPLETED"); -- } else { -- LOGGER.log(Level.INFO, "[PANOPTES] Integrity verified. Native engine is up to date."); -- } -- -- } catch (Exception e) { -- LOGGER.log(Level.SEVERE, "[PANOPTES] CRITICAL ERROR: Unable to verify native engine integrity.", e); -- } -+ LOGGER.log(Level.WARNING, "[PANOPTES] Binary downloads disabled for GPL compliance"); -+ LOGGER.log(Level.INFO, "[PANOPTES] UPDATE COMPLETED"); - } - - /** -@@ -168,20 +81,7 @@ public class Panoptes { - * and securely imports the cryptographic manifest. - */ - public static void WAKEUP_PANOPTES() { -- verifyAndDownloadNativeLib(PANOPTES_DIR); -- try { -- System.loadLibrary("panoptes"); -- File keyFile = new File(PANOPTES_DIR + File.separator + "panoptes_key.bin"); -- if (keyFile.exists()) { -- byte[] manifestBytes = java.nio.file.Files.readAllBytes(keyFile.toPath()); -- getInstance().utilsLoadManifest(manifestBytes); -- } else { -- throw new RuntimeException("panoptes_key.bin not found after download sequence."); -- } -- } catch (Throwable e) { -- LOGGER.log(Level.SEVERE, "[PANOPTES] Initialization failed. Aborting execution.", e); -- System.exit(1); -- } -+ LOGGER.log(Level.WARNING, "[PANOPTES] Native engine disabled for GPL compliance"); - } - - private Panoptes() { -@@ -204,7 +104,7 @@ public class Panoptes { - * @return An 80-byte array: [0-31: Public Key] + [32-79: Encrypted Private - * Key Blob]. - */ -- public native byte[] sessionInitialize(); -+ public byte[] sessionInitialize() { return new byte[0]; } - - /** - * Loads a previously generated encrypted session into the Vault. -@@ -213,7 +113,7 @@ public class Panoptes { - * @return true if successfully loaded and verified; false if MAC validation - * fails. - */ -- public native boolean sessionLoad(byte[] sessionBlob); -+ public boolean sessionLoad(byte[] sessionBlob) { return false; } - - /** - * Executes a secure "Lobotomy" on the Vault, wiping session keys and -@@ -222,7 +122,7 @@ public class Panoptes { - * @return A variable-length Cryptographic Testament (80 + N*16 bytes) to be - * distributed to peers upon legitimate exit. Includes the N-MAC swarm. - */ -- public native byte[] sessionGenerateExitTestament(); -+ public byte[] sessionGenerateExitTestament() { return new byte[0]; } - - /** - * Exports the local entropy seed state from the Vault for persistent -@@ -230,7 +130,7 @@ public class Panoptes { - * - * @return Exactly 48 bytes representing the encrypted local entropy blob. - */ -- public native byte[] stateExportLocalEntropy(); -+ public byte[] stateExportLocalEntropy() { return new byte[0]; } - - /** - * Imports and restores the local entropy seed state into the Vault. -@@ -239,7 +139,7 @@ public class Panoptes { - * @return true if successfully loaded and verified; false if MAC validation - * fails. - */ -- public native boolean stateImportLocalEntropy(byte[] entropyBlob); -+ public boolean stateImportLocalEntropy(byte[] entropyBlob) { return false; } - - // --- NETWORK ATTESTATION DOMAIN (LAYER 1: SERVER ↔ CLIENT) --- - /** -@@ -249,7 +149,7 @@ public class Panoptes { - * @param port Target network port. - * @return A 58-byte encrypted challenge payload. - */ -- public native byte[] attestationGenerateChallenge(byte[] sessionKey, short port); -+ public byte[] attestationGenerateChallenge(byte[] sessionKey, short port) { return new byte[0]; } - - /** - * Solves an incoming attestation challenge, executing Ring-0 system -@@ -258,7 +158,7 @@ public class Panoptes { - * @param encryptedChallenge Exactly 58 bytes. - * @return A 73-byte encrypted response containing the system audit MAC. - */ -- public native byte[] attestationSolveChallenge(byte[] encryptedChallenge); -+ public byte[] attestationSolveChallenge(byte[] encryptedChallenge) { return new byte[0]; } - - /** - * Verifies the solved attestation response from a remote peer. -@@ -268,7 +168,7 @@ public class Panoptes { - * @param encryptedResponse Exactly 73 bytes. - * @return 0 (FAILED), 1 (CLEAN), or 2 (VM_DETECTED). - */ -- public native int attestationVerifyResponse(byte[] sessionKey, byte[] encryptedResponse); -+ public int attestationVerifyResponse(byte[] sessionKey, byte[] encryptedResponse) { return 0; } - - // --- NETWORK ATTESTATION DOMAIN (LAYER 2: P2P MESH) --- - /** -@@ -278,7 +178,7 @@ public class Panoptes { - * @param targetPubKey Exactly 32 bytes (Opponent's Public Key). - * @return An 80-byte encrypted payload containing the KEM Nonce. - */ -- public native byte[] p2pGenerateChallenge(byte[] targetPubKey); -+ public byte[] p2pGenerateChallenge(byte[] targetPubKey) { return new byte[0]; } - - /** - * Solves an incoming P2P challenge by mathematically injecting the local -@@ -290,7 +190,7 @@ public class Panoptes { - * @param senderPubKey Exactly 32 bytes (The challenger's Public Key). - * @return A 17-byte encrypted response (16 byte MAC + 1 byte VM Flag). - */ -- public native byte[] p2pSolveChallenge(byte[] encryptedChallenge, byte[] senderPubKey); -+ public byte[] p2pSolveChallenge(byte[] encryptedChallenge, byte[] senderPubKey) { return new byte[0]; } - - /** - * Verifies a solved P2P response from an opponent. If valid, the opponent -@@ -303,7 +203,7 @@ public class Panoptes { - * @param encryptedResponse Exactly 17 bytes (The opponent's response). - * @return true if clean; false if cheating, tampered, or desynchronized. - */ -- public native boolean p2pVerifyResponse(byte[] targetPubKey, byte[] originalNonce, byte[] encryptedResponse); -+ public boolean p2pVerifyResponse(byte[] targetPubKey, byte[] originalNonce, byte[] encryptedResponse) { return false; } - - /** - * Solves an incoming P2P challenge ON BEHALF OF A BOT. The server acts as a -@@ -315,7 +215,7 @@ public class Panoptes { - * @param botPrivKey Exactly 32 bytes (The Bot's Private Key). - * @return A 17-byte encrypted response. - */ -- public native byte[] p2pSolveBotChallenge(byte[] encryptedChallenge, byte[] senderPubKey, byte[] botPrivKey); -+ public byte[] p2pSolveBotChallenge(byte[] encryptedChallenge, byte[] senderPubKey, byte[] botPrivKey) { return new byte[0]; } - - // --- UTILITIES & CRYPTO HELPERS --- - /** -@@ -324,7 +224,7 @@ public class Panoptes { - * - * @param manifest Exactly 48 bytes containing expected DLL/SO/DYLIB hashes. - */ -- public native void utilsLoadManifest(byte[] manifest); -+ public void utilsLoadManifest(byte[] manifest) {} - - /** - * Derives an X25519 Public Key from a raw Private Key. -@@ -332,7 +232,7 @@ public class Panoptes { - * @param privateKey Exactly 32 bytes. - * @return Exactly 32 bytes (Public Key). - */ -- public native byte[] utilsGetPublicKey(byte[] privateKey); -+ public byte[] utilsGetPublicKey(byte[] privateKey) { return new byte[0]; } - - /** - * Performs a deterministic Fisher-Yates shuffle on a standard 52-card deck. -@@ -340,7 +240,7 @@ public class Panoptes { - * @param seed Exactly 32 bytes (Master Seed). - * @return Exactly 52 bytes representing the shuffled deck (values 0-51). - */ -- public native byte[] utilsShuffleDeck(byte[] seed); -+ public byte[] utilsShuffleDeck(byte[] seed) { return new byte[0]; } - - /** - * PHASE 1: Executes a local forensic audit of a completed hand. -@@ -352,7 +252,7 @@ public class Panoptes { - * @return A variable length array: [0-X: Dynamic Swarm AEAD Receipt] + - * [Last Byte: Boolean 1=OK, 0=FAILED]. - */ -- public native byte[] utilsVerifyHandHistory(byte[] dealPacket, byte[] masterKey, int myPos); -+ public byte[] utilsVerifyHandHistory(byte[] dealPacket, byte[] masterKey, int myPos) { return new byte[0]; } - - /** - * PHASE 2: Executes global table consensus verification. Absorbs all P2P -@@ -365,7 +265,7 @@ public class Panoptes { - * @return true if consensus is mathematically sound; false if - * spoofing/desync detected. - */ -- public native boolean utilsVerifyHandConsensus(byte[] dealPacket, byte[][] allReceipts); -+ public boolean utilsVerifyHandConsensus(byte[] dealPacket, byte[][] allReceipts) { return false; } - - /** - * Verifies a Poly1305 Chaos MAC signature. -@@ -374,7 +274,7 @@ public class Panoptes { - * @param mac Exactly 16 bytes. - * @return true if the signature is valid; false otherwise. - */ -- public native boolean utilsVerifyChaosMAC(byte[] data, byte[] mac); -+ public boolean utilsVerifyChaosMAC(byte[] data, byte[] mac) { return false; } - - /** - * Decrypts a Key Encapsulation Mechanism (KEM) envelope directed to a bot. -@@ -384,7 +284,7 @@ public class Panoptes { - * @param enc Exactly 114 bytes (Encrypted payload). - * @return Exactly 98 bytes (Decrypted clear payload), or null on failure. - */ -- public native byte[] utilsDecryptBotEnvelope(byte[] priv, byte[] epub, byte[] enc); -+ public byte[] utilsDecryptBotEnvelope(byte[] priv, byte[] epub, byte[] enc) { return new byte[0]; } - - /** - * [V134 ZERO-DAY FIX] Generates a Sponge hash commitment for a given seed. -@@ -392,7 +292,7 @@ public class Panoptes { - * @param seed Exactly 32 bytes. - * @return Exactly 32 bytes representing the commitment hash. - */ -- public native byte[] utilsGenerateCommitment(byte[] seed); -+ public byte[] utilsGenerateCommitment(byte[] seed) { return new byte[0]; } - - // --- CONSENSUS & GAME STATE DOMAIN --- - /** -@@ -402,14 +302,14 @@ public class Panoptes { - * @param hashesFlat Flattened array of all player commitments (numPlayers * - * 32 bytes). - */ -- public native void stateRegisterCommitments(byte[] hashesFlat); -+ public void stateRegisterCommitments(byte[] hashesFlat) {} - - /** - * Initializes a new hand, generating a random 16-byte HAND_ID. - * - * @return Exactly 16 bytes (HAND_ID). - */ -- public native byte[] stateInitializeHand(); -+ public byte[] stateInitializeHand() { return new byte[0]; } - - /** - * Generates the immutable genesis Megapacket for a new hand (Server/Host -@@ -422,7 +322,7 @@ public class Panoptes { - * (numPlayers * 32 bytes). - * @return The variable-length Megapacket byte array. - */ -- public native byte[] stateGenerateMegapacket(byte[] playerSeedsFlat, int numPlayers, byte[] playerPubKeysFlat); -+ public byte[] stateGenerateMegapacket(byte[] playerSeedsFlat, int numPlayers, byte[] playerPubKeysFlat) { return new byte[0]; } - - /** - * Ingests the Megapacket into the client Vault, verifying structure and -@@ -432,14 +332,14 @@ public class Panoptes { - * @param myPos The client's physical seat index. - * @return true on successful ingestion; false on tampering or OOB errors. - */ -- public native boolean stateIngestMegapacket(byte[] megapacket, int myPos); -+ public boolean stateIngestMegapacket(byte[] megapacket, int myPos) { return false; } - - /** - * Retrieves the decrypted pocket cards for the local player. - * - * @return Exactly 2 bytes representing card IDs (0-51). - */ -- public native byte[] stateGetLocalPocketCards(); -+ public byte[] stateGetLocalPocketCards() { return new byte[0]; } - - /** - * Retrieves the local fragment of the Master Shuffle Key. WARNING: Calling -@@ -447,28 +347,28 @@ public class Panoptes { - * - * @return Exactly 32 bytes. - */ -- public native byte[] stateGetShuffleKeyShare(); -+ public byte[] stateGetShuffleKeyShare() { return new byte[0]; } - - /** - * Retrieves the cryptographic token required to unlock the Flop. - * - * @return Exactly 16 bytes. - */ -- public native byte[] stateGetFlopToken(); -+ public byte[] stateGetFlopToken() { return new byte[0]; } - - /** - * Retrieves the cryptographic token required to unlock the Turn. - * - * @return Exactly 16 bytes. - */ -- public native byte[] stateGetTurnToken(); -+ public byte[] stateGetTurnToken() { return new byte[0]; } - - /** - * Retrieves the cryptographic token required to unlock the River. - * - * @return Exactly 16 bytes. - */ -- public native byte[] stateGetRiverToken(); -+ public byte[] stateGetRiverToken() { return new byte[0]; } - - /** - * Evolves the community cards by applying the aggregated consensus key. -@@ -478,7 +378,7 @@ public class Panoptes { - * tokens). - * @return 3 bytes for Flop, 1 byte for Turn/River. - */ -- public native byte[] stateEvolveStreet(int nextStreet, byte[] consensusKey); -+ public byte[] stateEvolveStreet(int nextStreet, byte[] consensusKey) { return new byte[0]; } - - // --- ACTION CHAIN DOMAIN --- - /** -@@ -489,7 +389,7 @@ public class Panoptes { - * @return Variable length (68 + N*16 bytes) containing the signed action - * packet. - */ -- public native byte[] chainCommitLocalAction(int type, float amount); -+ public byte[] chainCommitLocalAction(int type, float amount) { return new byte[0]; } - - /** - * Commits and signs an action on behalf of a server-side bot. -@@ -500,7 +400,7 @@ public class Panoptes { - * @return Variable length (68 + N*16 bytes) containing the signed action - * packet. - */ -- public native byte[] chainCommitBotAction(int type, float amount, byte[] botPrivKey); -+ public byte[] chainCommitBotAction(int type, float amount, byte[] botPrivKey) { return new byte[0]; } - - /** - * Verifies and absorbs a remote action packet into the local Sponge state. -@@ -509,7 +409,7 @@ public class Panoptes { - * @return true if signature and sequence are valid; false on - * desynchronization or tampering. - */ -- public native boolean chainVerifyRemoteAction(byte[] actionPacket); -+ public boolean chainVerifyRemoteAction(byte[] actionPacket) { return false; } - - /** - * Closes the state machine and returns the final AEAD receipt for P2P -@@ -517,7 +417,7 @@ public class Panoptes { - * - * @return Variable length (64 + N*16 bytes) Final State AEAD Receipt. - */ -- public native byte[] chainCloseStateAndGetReceipt(); -+ public byte[] chainCloseStateAndGetReceipt() { return new byte[0]; } - - /** - * Closes the state machine and returns the final AEAD receipt on behalf of -@@ -526,7 +426,7 @@ public class Panoptes { - * @param botPrivKey Exactly 32 bytes (Bot's private key). - * @return Variable length (64 + N*16 bytes) Final State AEAD Receipt. - */ -- public native byte[] chainCloseBotStateAndGetReceipt(byte[] botPrivKey); -+ public byte[] chainCloseBotStateAndGetReceipt(byte[] botPrivKey) { return new byte[0]; } - - /** - * Generates or retrieves the 32-byte local entropy seed for the current -@@ -536,7 +436,7 @@ public class Panoptes { - * null). - * @return Exactly 32 bytes. - */ -- public native byte[] stateGenerateLocalSeed(byte[] external_entropy); -+ public byte[] stateGenerateLocalSeed(byte[] external_entropy) { return new byte[0]; } - - // --- TELEMETRY & RADAR DOMAIN --- - /** -@@ -548,7 +448,7 @@ public class Panoptes { - * @return A variable-length encrypted KEM envelope containing the radar - * data. - */ -- public native byte[] telemetryGetSystemRadar(byte[] targetPubKey); -+ public byte[] telemetryGetSystemRadar(byte[] targetPubKey) { return new byte[0]; } - - /** - * Decrypts an incoming system radar telemetry packet. -@@ -557,7 +457,7 @@ public class Panoptes { - * @return The plaintext UTF-8 string bytes of the radar report, or null if - * tampered. - */ -- public native byte[] telemetryDecryptRadarData(byte[] encryptedRadarPacket); -+ public byte[] telemetryDecryptRadarData(byte[] encryptedRadarPacket) { return new byte[0]; } - - /** - * Captures a visual context representation of the host's screen. -@@ -567,7 +467,7 @@ public class Panoptes { - * @return A variable-length byte array representing a valid JPEG image, or - * null on failure/cooldown. - */ -- public native byte[] telemetryCaptureScreenContext(int mode); -+ public byte[] telemetryCaptureScreenContext(int mode) { return new byte[0]; } - - /** - * Diagnostics: Retrieves the path to the JAR file currently locked by the C -@@ -575,7 +475,7 @@ public class Panoptes { - * - * @return String representation of the absolute file path. - */ -- public native String telemetryGetDiagnosticJarPathC(); -+ public String telemetryGetDiagnosticJarPathC() { return ""; } - - // ========================================================================= - // JAVA COMPATIBILITY WRAPPERS -@@ -703,7 +603,7 @@ public class Panoptes { - return telemetryCaptureScreenContext(mode); - } - -- public native int utilsAreHashesReady(); -+ public int utilsAreHashesReady() { return 0; } - - // ========================================================================= - // HASHING UTILS diff --git a/games/coronapoker/pkg-descr b/games/coronapoker/pkg-descr deleted file mode 100644 index f41a31b82709..000000000000 --- a/games/coronapoker/pkg-descr +++ /dev/null @@ -1,5 +0,0 @@ -Texas Holdem poker game written in Java. - -CoronaPoker is a free Texas Holdem poker game with a modern interface and -various features including online play against other players, customizable -tables, and multiple game modes. diff --git a/games/coronapoker/pkg-message b/games/coronapoker/pkg-message deleted file mode 100644 index 605eced119bf..000000000000 --- a/games/coronapoker/pkg-message +++ /dev/null @@ -1,54 +0,0 @@ -[ -{ type: install - message: <<EOM -You installed coronapoker: Poker game implemented in Java. - -================================================================ - - GPL COMPLIANCE AND SECURITY NOTICE - - This port has been patched for GPL compliance and security. - - ISSUE: Binary Downloads Disabled - ================================ - CoronaPoker includes Panoptes, a closed-source cryptographic - anti-cheat engine, which this port previously attempted to: - - • Download at runtime from GitHub (untrusted binary source) - • Cache locally to ~/.coronapoker/Panoptes/ - • Load via JNI as native code - - This violates the GPLv3 license under which CoronaPoker is - licensed, as it requires source code availability. - - APPLIED FIX - =========== - This port has been patched to: - - • DISABLE remote binary downloads - • PREVENT native library loading on all platforms - • RUN in pure-Java mode without cryptographic anti-cheat - - FUNCTIONAL LIMITATIONS - ====================== - Without the Panoptes engine, the game will: - - • Have NO tamper detection - • Have NO action blockchain verification - • Have NO post-game auditing capabilities - • Rely solely on Java-level game logic enforcement - - SECURITY IMPLICATIONS - ====================== - • No untrusted binaries will be downloaded - • No closed-source libraries will be executed - • Game integrity depends on player honesty - • Suitable for casual/trusted gameplay only - - For more information about this issue: - https://github.com/tonikelope/coronapoker/issues/7 - -================================================================ -EOM -} -] |
