sm-crypto: default SM2 key generation in Node.js falls back to Math.random() + wall clock instead of a CSPRNG
sm-crypto seeds its module-wide RNG through jsbn's SecureRandom, which checks `window.crypto` for a CSPRNG source — a check that's always false in Node, sm-crypto's primary runtime, so the fallback pool is filled from `Math.random()` (a recoverable V8 xorshift128+ stream) plus wall-clock time. Every SM2 private key and signing ephemeral scalar produced by the default, no-argument API is therefore a predictable function of two non-cryptographic inputs, and the PoC reproduces identical keys across fresh processes once those inputs are pinned. If anything in your stack calls `sm2.generateKeyPairHex()` or signs with sm-crypto's defaults in Node, treat those keys as compromised and wait for a patched release before regenerating.