/** * RSA DigestInfo Workaround * * Some older signing tools (particularly pre-Java 8) produced RSA signatures with * non-standard DigestInfo format - missing the NULL parameter in AlgorithmIdentifier. * * Standard DigestInfo for SHA-1: 30 21 30 09 06 05 2b0e03021a 05 00 04 14 [hash] * Non-standard (missing NULL): 30 1f 30 07 06 05 2b0e03021a 04 14 [hash] * * Web Crypto API's subtle.verify() is strict and rejects the non-standard format. * This module provides a fallback that manually performs RSA verification using * BigInt math, which works in both browser and Node.js environments. */ /** * Verify RSA signature with non-standard DigestInfo format. * * This function performs RSA signature verification that tolerates * non-standard DigestInfo formats (missing NULL in AlgorithmIdentifier). * * - Node.js: Uses native crypto.publicDecrypt() for speed * - Browser: Uses BigInt math (Web Crypto doesn't expose raw RSA) * * @param publicKeyData SPKI-formatted public key * @param signatureBytes Raw signature bytes * @param dataToVerify The data that was signed * @param hashAlgorithm Hash algorithm name (e.g., "SHA-1", "SHA-256") * @returns true if signature is valid, false otherwise */ export declare function verifyRsaWithNonStandardDigestInfo(publicKeyData: ArrayBuffer, signatureBytes: Uint8Array, dataToVerify: Uint8Array, hashAlgorithm: string): Promise;