{"_id":"@majikah/majik-signature","_rev":"53-17afb750adb84094089279d925e250bc","name":"@majikah/majik-signature","dist-tags":{"latest":"0.9.1"},"versions":{"0.0.1":{"name":"@majikah/majik-signature","version":"0.0.1","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.1","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"4cd3875ccd1f86c89e845a42812e9ccdc617be61","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.1.tgz","fileCount":19,"integrity":"sha512-ubwYTMyO3ISput+Rcxbp2avrv2W7JXkcbkOEmg9MI+iSGDHNsYo29NH1mITjUbByYDB4ZeBTm5FZ1XiDjpoPZA==","signatures":[{"sig":"MEQCID59J5O+B5xNF2FYf8xZK900XokDPS2sx+qOY98zPGBVAiAsik/zsQmrZO+Xbm4yBYTmgH9QxcWTqlFVPSXU+fiyBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84392},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"84f0823e4086002494c388312ad74eddf38b47eb","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.0","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.1_1773572719522_0.6784546101928275","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@majikah/majik-signature","version":"0.0.2","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.2","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"2fe1d3f61ef9e4387f2cc9118200958d09d41cab","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.2.tgz","fileCount":49,"integrity":"sha512-J2ZqxpVCnOYpSciA1U2W1kWtNrklWyGavZP5xLqoCvR7nvClwzBzsr/zEcmyRNAWekCyb8Z2mST7Deb9eCSwAA==","signatures":[{"sig":"MEUCIQCuJYrjroSuY/n8MH5P/V63mbk8s/rlTivxGmS6beFtAwIgG/mmM40OtuU0WduVrtjK0JqJST+Hh3iAjkjqwKqgmKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190696},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"ea0a819427f1c06d38552e78429dc9aeb4349fc6","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.0","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.2_1773582592057_0.4196423526412223","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@majikah/majik-signature","version":"0.0.3","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.3","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"83f2d00798134a18c82c43b76322be5575902046","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.3.tgz","fileCount":49,"integrity":"sha512-yjjZtNbiTpRkxNNq8+tjXzBikSaBWx4oNhSnA8DGSwC7ynZp5IN26fDqgqgVcrkV724x/A+81Bj3nsGN/1Szww==","signatures":[{"sig":"MEUCICbc8JRJW7TOZUQBJdsWNZU6Z+kKnyQaTTw/7qoHr7MHAiEAqvfQvo45DM4U6nlCFgVC7nIHmxuhZidaMQ3oWVV/0Jw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191535},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"aafa648864196c748e514bbb3b7b3c84d5ff6fa6","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.1","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.3_1773646022549_0.34957163714975614","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@majikah/majik-signature","version":"0.0.4","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.4","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"f0be8de93c7d9f1f96c76c0859834c4ad431a805","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.4.tgz","fileCount":49,"integrity":"sha512-/YpwtGJs3vOLk6GiwnALq0toeNFyVA/AIaSQ8onRIcjcPiuX5I5PgfgknWojfoI2Sw/xO6OSIWXq+UTP0foB/g==","signatures":[{"sig":"MEUCIQD+ec6Fg39Nc2cO4mvfnmBbSrPUs65NjlAdCMuY9YCJdwIgIF43BHy4EJQb3cmVvIg0Zkc1em8ZwRU/0cg6Sa159LE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192022},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"aafa648864196c748e514bbb3b7b3c84d5ff6fa6","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.1","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.4_1773842121958_0.009473463132310567","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@majikah/majik-signature","version":"0.0.5","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.5","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"0f982aed2e8ada622e776a2d31525612ec981752","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.5.tgz","fileCount":49,"integrity":"sha512-gGpWaT2ecc59f6BbCuUxW0IfwuxjyEB+VxSa1bc4SuQJoPSIbryYbg4rOHyna26ahdTbiAUp/gE32L8mBtrpCQ==","signatures":[{"sig":"MEUCIQDKaz5QcNsRSgoPxwma+ij7HMLvZB13YIFCNuAThLYSPwIgE6chN6+PIQLyE1BrWm6Wn0Qov8JP3khOQ3mh/gFi8rc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192260},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"aafa648864196c748e514bbb3b7b3c84d5ff6fa6","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.1","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.5_1773842519476_0.7642946182424348","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@majikah/majik-signature","version":"0.0.6","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.6","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"bbc0a57756e98743462f78507b0651702792e02e","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.6.tgz","fileCount":49,"integrity":"sha512-Ds6BUsOdgYn4PpfOLiXJ+TRncExkSZa/EhF0NM2Z0JYLseFyo/nIP4rpD8NWlCiUrJ1XhehNwdJUL18LE4ctHA==","signatures":[{"sig":"MEUCIGOPri3/SuyAPaypkAD+AxFzJYdOBRthNRZYMYREDGmbAiEA/3k3k6ENrnazp0QAzUgYvbVXNKoEwErL5pZjOSnes0w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187581},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"aafa648864196c748e514bbb3b7b3c84d5ff6fa6","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.1","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.6_1773845577276_0.5281921247115926","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@majikah/majik-signature","version":"0.0.7","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.7","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"f8e0f9050be0ac77cfc9fd0b17412d7dd85d011f","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.7.tgz","fileCount":69,"integrity":"sha512-EZm0ODZ4stujXkMMysiCAu+M9lVg3uusILFHJHq0q9L2L3TBmAJHl5pbWqFFF3ralbbfi67C5RpvoGwNhJ7qTA==","signatures":[{"sig":"MEQCIGsib2Qj4YpQ8nd+I5W4RMjkmHEqB+yY66YZyi+91jKvAiAGHhjuQ/0w5EJE/oqs7O0dSIAEaFiir/0VkhEgo5KBPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":307733},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"c24b21bd6c47d1d1e7e7c5d7c70340a6c45f3767","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"sharp":"^0.34.5","fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.1","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.7_1773951980983_0.3486926689888896","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@majikah/majik-signature","version":"0.0.8","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.8","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"102ac7b3734970ff86dd45c345de6e4c1b7a6a7d","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.8.tgz","fileCount":69,"integrity":"sha512-6L50qE7oACcf42crvdoAeJVcEOTbKChZlSChjLLJgI4WJMznUQ14yLoG6uKJFTnZ+Mokhv5eosE4ymdRQzkVjw==","signatures":[{"sig":"MEYCIQCNJLuycOl/TaQ0Is9ut4OtsgjVJNWFyKJ7/G/BF8kYUAIhAPat6Y750TsCJGV+a9DHIGO9cFFrbJlUquuQv6fWSKBA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305557},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"c24b21bd6c47d1d1e7e7c5d7c70340a6c45f3767","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.1","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.8_1773953750349_0.7287783056745623","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@majikah/majik-signature","version":"0.0.9","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.9","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"8bfe4fdf7f1e9758f4d7b5bb78166266bc26abea","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.9.tgz","fileCount":69,"integrity":"sha512-a6AU3ujO6OgoIiAvM5sLNOVN07Xa51YedbM5SprB9e75mbnA5GuoHmoSbsOGxPqhrKvqOsWIlzO+mPBFvopuIw==","signatures":[{"sig":"MEYCIQC685inxGgQ27U+GexDpoDsBctgGOvg0XR9LZ+3CrMtqgIhANYqhuTRueTq/xvsJhDPyGlRnriHm91t+o7kCCwhLU+L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305739},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"c24b21bd6c47d1d1e7e7c5d7c70340a6c45f3767","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.1","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.9_1773954998289_0.6677301816549703","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@majikah/majik-signature","version":"0.0.10","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.10","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"0c2a5b9f1358558e47122f9bae744fad6c76671f","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.10.tgz","fileCount":69,"integrity":"sha512-9l9MHesNADF+9+KmgZN5fLlLtiM68qDi+CVODTcU/omSk6j9cvtZcXbww7EqDsYb//oYDhyCSrAG8ZF7t0LjCA==","signatures":[{"sig":"MEUCIQDc5v/9nVnWryE1xJd8byGgqw3PBHDAufr+SfXG6pd19QIgQdKavRIiVPU71P9zqvHckP0ZscfSLs52DzyV1oj420c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":308643},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"c24b21bd6c47d1d1e7e7c5d7c70340a6c45f3767","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.3","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.10_1774188608837_0.3315982322948128","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@majikah/majik-signature","version":"0.0.11","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.11","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"21878ad2063a234b94a9eff8fa021206a5d4f660","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.11.tgz","fileCount":71,"integrity":"sha512-KjNkCcQoSCSjn/pDDwcAH/LpLyej/uPjfRjyS9fJRjPqttuybzYNkoWDyhA/bvLcDGBqa+Xb41LPYNU1rKhKAw==","signatures":[{"sig":"MEQCID9ylhkVwaARQKDeIfNoFTAU9n1T5QBYhQutNsyZaja3AiAUh4rw0Y3tdyUqfSXpHIILTOJHyez+ENRCg0TFUqJzog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":365661},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"b5f4e058af1955c8e4b90a5e3d08d892e997b5c3","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.3","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.11_1774415469096_0.15854952749517026","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@majikah/majik-signature","version":"0.0.12","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.12","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"17af85d0bd1a7a76c023c93c2536966676b4338f","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.12.tgz","fileCount":71,"integrity":"sha512-W1m5pKgWpKeq6s2NYVeca2uijjn0dkBg6tYkuwwwzY1iYVYvSCLIpdIFcBVlIlj4Wb8mFMAHzCk1Yei30GEvAw==","signatures":[{"sig":"MEUCIHUZED1L0yw1fn3Es3AQZ9PsixSW3EOrrUvaxpryZ6QzAiEAqjvWiN6x7BEDvz6MCWMZehI26hS/gDAJCjwjn0SPci0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":367222},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"b5f4e058af1955c8e4b90a5e3d08d892e997b5c3","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.3","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.12_1774441630061_0.9891932810152242","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@majikah/majik-signature","version":"0.0.13","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.13","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"9d24d3275b1f844ff1f7129733144ed3c9f4d27d","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.13.tgz","fileCount":71,"integrity":"sha512-xnOlIQPSaZvLqh9FgOxSdpINKxDyQ/8TtPZMqhQeW/oQOV5AOiJ0/xtz4Y0m/IRIbmTqumUFije7/b6bI2Uw3A==","signatures":[{"sig":"MEQCIFWPP0/wm19Zp/7/s8wsUM0uRzq6pg8Fu8zR4KyzIEqmAiATzCTV1ivzUx4jDSongadz6n53oTv8vjS65TEQFzyE5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":367263},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"84dedb1935c332f64f6d9380263754abe8f89667","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.3","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.13_1774448630855_0.6869078444171832","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@majikah/majik-signature","version":"0.0.14","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.14","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"524fa0d3957395fc27da1fdb25a3a48b26ad03bc","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.14.tgz","fileCount":71,"integrity":"sha512-pImSTS6Ec51a3vUW6JCKjzbq00dVUFWB8elfarN4Sw0nlDFGq00o4pQ2BFbo+Hl04/l0DjEMGUzSJOrMKvnH5g==","signatures":[{"sig":"MEQCIAFe1O6fdtAUNhwrPH+iD5+BrnxVoX2KKtVXyzO3P2/PAiAueUXk+TigV5HBS4jRfhQfJuLUiqpL3sj4scubVAM7Cg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":367435},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"4e5afd2a3850a76646d284e566e7ee25936b0422","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.3","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.14_1774449297372_0.3058135051390751","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@majikah/majik-signature","version":"0.0.15","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.15","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"dfcb183f862c17aa36718dcba9e282b4152dda75","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.15.tgz","fileCount":71,"integrity":"sha512-MqhC+yfUDs0awJ0ruuf7ofD6bxr0o0BEFA45h/Rt1pDJYHhH4WpNGrzPc0dH0Xe/pI1jvc5dvaJpgkRYHI/CpQ==","signatures":[{"sig":"MEUCIQCJod4GbMc8jHa9ewojLYmr2GTrRTunRanceLiX1iptWgIgMRYvb+fBoE7ToTjFENVEqwQUyY718BpS10BbAXG8iBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":367860},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"d89ce674fe339780b261cad73ebe8089ff25816f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.3","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.15_1774506928038_0.3261713287455128","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@majikah/majik-signature","version":"0.0.16","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.16","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"4e0cf0af76b7c935ef031a7b223f56415ce97f17","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.16.tgz","fileCount":71,"integrity":"sha512-yT2AIq9jWzy9XQ7w8Vv+NfvDrxRs2QMg4Bil85Y5RZRe5NoI1pUqj2YtwMl/Tg/jTVSxaCpVaSwq6oZXWIvJfQ==","signatures":[{"sig":"MEYCIQDlJio2ENetygVwr70h8oBmyPJpD9B7KTvyyl5q3rm76QIhAJpxcbGXtIR4Ka9wFV3QHzJsyKc4UC/J+Q1adlv346i6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":367860},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"d89ce674fe339780b261cad73ebe8089ff25816f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.4","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.16_1775210645403_0.6214126723251536","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@majikah/majik-signature","version":"0.0.17","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.17","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"83827e64132b83f49f760ee63b133e19d05b56cf","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.17.tgz","fileCount":71,"integrity":"sha512-tePjEPU7et7kvD4uL7eGFw/wq/oeRB09N1qlAj9VCpnIETnCqdU1uRPXnAZSb6jk2ntLjyt2kVfQsgDHbfza9A==","signatures":[{"sig":"MEYCIQD1d3y+QYxdmFmU8p3bRHatLfPvRcx9ontRR7bfbLpvnQIhAKA9waevt42lGRyEpwEF7gtVVe3yt5n2OCswdy4lKP8e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":367860},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"1f1ddef5e76c091261f2f32b0b5c7e9ef02dc5d8","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.6","@stablelib/ed25519":"^2.0.2","@noble/post-quantum":"^0.5.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.17_1776178893189_0.5791571206862576","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@majikah/majik-signature","version":"0.0.18","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.18","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"0cc5111a1d5c5a0f7abd8b0e4cfa65e39c25c244","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.18.tgz","fileCount":71,"integrity":"sha512-eYxBfDUZEZkJZDo2/NgRVTIoo1WkXb8D1brKRvZ/25wkXY2Y3BTToKRl99ZDH1gra2fpombk+4ZRtQqHckpAiw==","signatures":[{"sig":"MEUCIEcmQ7c6L4NIgIPs/1giWJbLa91WzrMDtDBRRKN0O79RAiEA/MgLnUh/dGFU3xctMazsvvrzdGn6UW8u8MTAkZlWwYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":367031},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"a5f9db5010613bd8fcc481b1da2de4f048bb659c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.7","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.18_1782048754394_0.7819450561398944","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"@majikah/majik-signature","version":"0.0.19","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.19","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"158a14670a3e93bcaca312a00af95ddd139b1e3a","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.19.tgz","fileCount":71,"integrity":"sha512-rPIN+ky/OmwScdQayaby79hMXqJb6dILHEeMGqyLEm9+Bm7qWqy8JZueVzWyqJggbGPBc1N2riryfLKj6ZjidA==","signatures":[{"sig":"MEQCIFeTAvyh6XhI92ZYO2eSYoB13kS9ivq6x1sicFu74QZwAiAPMkMOt4pHOtVmxKSxYwaMWd1Rq/UDu97zgdIlgMzwHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":367275},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"6c986ba946cb0ce31104f8925d2b3663b0d37475","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.6.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"22.19.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.7","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.19_1782049374627_0.8109880467174442","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"@majikah/majik-signature","version":"0.0.25","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.25","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"f6d5883e49d9b492cb4bcc8e4cf724cc71054833","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.25.tgz","fileCount":71,"integrity":"sha512-E4ennZ+dXppKsfdVd9DXj6YzFUDcEe/KCfnlpLJRITWHM7q8ZqtOCPTRcbS+oM6p7fXjBeAdTBXiz5kZlmw8Dg==","signatures":[{"sig":"MEUCIQCnnJqjckzmynikRTLEy5zj8jaUWE4S/WSc8OuKm15+VgIgNlDafZWOOA8c2HiRi+V8amOAjTJk5rc62gYQQB3et/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.0.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367325},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"a90dca6f97c47aa84c5d074a2967cebb4a8fd7be","scripts":{"build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.13.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.16.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.7","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.25_1782059560715_0.02818820889526119","host":"s3://npm-registry-packages-npm-production"}},"0.0.26":{"name":"@majikah/majik-signature","version":"0.0.26","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.26","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"c9e49684f34ba8f2b2d9a9d43050a451dd09c234","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.26.tgz","fileCount":71,"integrity":"sha512-ZoLDmmWN2ot34vsgyWodNKCU3lj33W9BSw4Qr5WvugZs4jkokzkyhN0M+vj2ce2L7bJUwuy8ezFvP7frkca0NQ==","signatures":[{"sig":"MEQCIEeBbHPCVwtmaips2jZI4usYia9/9zgQKvwwCAaSY/MMAiAtNu+Xxs4rYWjTPdyWwkwG0hdXQALZrTjkhVxqvfkYAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.0.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367957},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"ba8f5dafdce40bac70d2150ad8f1849d320a54ce","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.13.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.16.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.7","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.26_1782235554809_0.942518603912597","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"@majikah/majik-signature","version":"0.0.28","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.28","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"e56e0ff29d92637d687285e78ca4646779e2afad","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.28.tgz","fileCount":71,"integrity":"sha512-ppbndyTs3mydzbRGs6g1v02iJnVfVdNe2y5yxHSDqvsfHV4POEUGPCvCq4BKjtRQKWBzDNydOktI4qxJ3Ss3hQ==","signatures":[{"sig":"MEUCIQDlNV+dZBit+u46zvShS+WMVh7u1R+/S1caazNnir9GYQIgejK8cBR4EgIf6THYF9RGfMqrsIxf8SzTfteLBHHfEJo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.0.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":376037},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"ee937b357e8fb06794c6a0dc1134b4636672b52e","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.13.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.17.0","dependencies":{"fflate":"^0.8.2","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.11","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.28_1782433179770_0.19998120475491743","host":"s3://npm-registry-packages-npm-production"}},"0.0.29":{"name":"@majikah/majik-signature","version":"0.0.29","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.29","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"c7458e511bd05a1909fa435f757cf3e4831014b9","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.29.tgz","fileCount":71,"integrity":"sha512-Gsb0/VQahYEu0m2kOqQDGnM9adIYXBSA4OuRK9gAiMKJd8VE1GBa9QksKwaNE0ewl8w/O3+iPVTNkn9oYHCVUg==","signatures":[{"sig":"MEUCIQDXp/Dlsvgq93+jv55aXLIPSHEmjhSxmjnwFUEQnv1E6wIgTIFa/sIS13fxdtPcyR7o9NTaaUQBGvHOWrwgUPzLra4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.0.29","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":376075},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"9d4cc0800c4dde96a5ca3a7c937a289e938c92c8","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.13.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.17.0","dependencies":{"fflate":"^0.8.3","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.2.11","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.29_1782753179892_0.017371769811361126","host":"s3://npm-registry-packages-npm-production"}},"0.0.30":{"name":"@majikah/majik-signature","version":"0.0.30","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.30","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"161470fd69790e83a6c9f16493620ba0184f15b1","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.30.tgz","fileCount":71,"integrity":"sha512-cvkT5CCaZlkQkQaaK+rY2LfSVhOhNAgio8yOWYSdB4CymcDBj6/JxN3+D9kOHgdLVmeun+xKlUZw6AysRUGYYg==","signatures":[{"sig":"MEQCIA3xcjNyusQ/Vu/bF9Diqupu+HJDyfGVzrvEAW5YhKZ9AiA+fRPZNeJRNZcbEwKHl9Nf78jqVAfMuU1968TNtukkRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.0.30","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":376231},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"aa7ec89ce1595ff5bdd5325d339324a7ff67d42c","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^25.5.0","@majikah/majik-key":"^0.2.12"},"peerDependencies":{"@majikah/majik-key":"^0.2.12"},"peerDependenciesMeta":{"@majikah/majik-key":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.30_1783390744772_0.34203168588838007","host":"s3://npm-registry-packages-npm-production"}},"0.0.31":{"name":"@majikah/majik-signature","version":"0.0.31","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.31","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"e8d11c8e7bcc31bd433d6b4ab3c3f3aec09481ac","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.31.tgz","fileCount":71,"integrity":"sha512-HRXMw7F8g4RDvQhxp0BuMqJj1++rfKiRTPintqsXxoOEwUPTOPD01EW6ULKEJL3bmDbdFcrvqpgo8D4MiagUGw==","signatures":[{"sig":"MEQCICSM6//bDPZoG/3gdVc5pmNX+eBMjQtUcuPuxFYXdSJ/AiAERhQK/E+g35JTPKZfVTVkRgVvG8hqeZyLMGYlAdAk4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.0.31","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":376231},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7dd6ea1db062e2cdd34fd1e2239e58b9e6d90f32","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^25.5.0","@majikah/majik-key":"^0.2.14"},"peerDependencies":{"@majikah/majik-key":"^0.2.14"},"peerDependenciesMeta":{"@majikah/majik-key":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.31_1783753741205_0.20304323293386073","host":"s3://npm-registry-packages-npm-production"}},"0.0.32":{"name":"@majikah/majik-signature","version":"0.0.32","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.0.32","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"cb266f003613d6ff3aca7efe21bb73a38bda0323","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.0.32.tgz","fileCount":71,"integrity":"sha512-1XqTjnJs2nquSlScTuXa5ckL2by/JS9DzU7uA9LelhJq2sAiZg4lMRfQ2ImBOr3CkrYq+3A3C0stVfFcnzH+fw==","signatures":[{"sig":"MEUCIEYZqVaHCv2y5WfILdhX2c0YjXQmxQPEGPtGe/J+r+nCAiEAmJFI1ref6qN8xO41izhUq4Et9drCvOLms7Szva5z/qA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.0.32","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":381838},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"ff1a0932505661a7ecf89779b5f7814dd77b680c","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^25.5.0","@majikah/majik-key":"^0.2.14"},"peerDependencies":{"@majikah/majik-key":"^0.2.14"},"peerDependenciesMeta":{"@majikah/majik-key":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.0.32_1783762605888_0.02839122371531677","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@majikah/majik-signature","version":"0.1.0","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.1.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"f269cb198f910a9b6b9964b027f9e96f7b44e1d4","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.1.0.tgz","fileCount":71,"integrity":"sha512-Fu1TMJ9L1JXdIVK/RZnxdDMC2pzcV5V1tCs44wh5Js3jtc0S0ut1ZzNO8RrIQW0TbAeDlm9WsUebNNw6x0bGgQ==","signatures":[{"sig":"MEQCIFrBQUEMoU2TIt3EUembZMxPEZxIm9QlGkWBpMH7qIW8AiB2nzXqfvBjL2vk02Ctwo3KBQEEP3An8LI6/lT51phqnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":381837},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"542a2b70b6a2971b8fceaca712574adc436e529a","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@majikah/majik-key":"^0.3.0"},"peerDependencies":{"@majikah/majik-key":"^0.2.14"},"peerDependenciesMeta":{"@majikah/majik-key":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.1.0_1783765031287_0.16198126361380605","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@majikah/majik-signature","version":"0.2.0","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.2.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"fb0cbda1f2eb4c29f1b93151e717a66214c39da3","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.2.0.tgz","fileCount":73,"integrity":"sha512-k65kAUMZxIvL7Mme7myhyb/viN4trQxDJEbyEeX+aA96O5LRULFwiA8JmyYTAw5LwPn8VgLBurpVhZNDC/eE6Q==","signatures":[{"sig":"MEUCIEl/WkAf8PbDd8d25hRgGJ9EJHTu7bESpPQ5WyGr1XBFAiEA0VRAdFuk7HsZU79c1nJEjSD7m4BtUxdW2enSgEUexwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":393395},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"8e9c6e8673949cd95a39c5e1236085cc1a76e7cc","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.3.2","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.2.0_1784140184959_0.7618101303881724","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@majikah/majik-signature","version":"0.2.1","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.2.1","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"61f88f7a3eadcb03020a88a3382f76bcb72a4453","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.2.1.tgz","fileCount":73,"integrity":"sha512-RQAak3uGYW7jVhATXkvDu0b2ZGlzhPkddfsfSK9U+FuO3M0EIO6orkTgxRxkb1GXo4jjwQE6XlJpR4x6FfLtEA==","signatures":[{"sig":"MEUCICdKx1Vsg1RnmVeETyIH0eA+FVdyikBE7Qp1G/80+7PZAiEApugfemd5Reb97yH3/WaQsSBFPAEfR8K1qK550Krac64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":393395},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"56c3327a7180057000a90a6dad8635dfab35e209","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.3.3","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.2.1_1785057937642_0.5841814132482026","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@majikah/majik-signature","version":"0.2.2","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.2.2","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"ea7cbda81edafde48aed80d8abbb9bc18989f732","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.2.2.tgz","fileCount":73,"integrity":"sha512-cqTZtyLQ5wEMmoBJLClgRChMcTDeayyUsXPJtkOCnMGzUewGIjyRdRmX3FJhIUNsl32c6pdQQ2u+wrO7r0GS6w==","signatures":[{"sig":"MEUCIQDY6LBCnDiqq5/jJo2SDHHdlWDnYzi7GwVwc4lg/fa+xAIgNkAmLYhKdxw5LM0ifmPgEFdBAU5TOXRs/5Y3zSgbesA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":407657},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"c6f7b07bd8a416bffc626983a8131cf73d86db65","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.3.3","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.2.2_1785531054313_0.6195574834838466","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@majikah/majik-signature","version":"0.2.3","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.2.3","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"39f0e4f152ebc86dc561ef30fc34304197ea9437","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.2.3.tgz","fileCount":73,"integrity":"sha512-V8Rm68Y/jwgkaxVL2SmKxGXhPq69U1XNtaiJbnYFH36CdfWFBmUXGa0+9wwbLdnV0QjGPVbIoo/R02I3xtweew==","signatures":[{"sig":"MEQCIEG0kGyAlv7H/zMczqFnsD3M4BEinXvyj/4FW6cszdpAAiAiybYvAH/1IoK4VjhfZooxV+RvFs/qbHjhSS3KNcw4Kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":406951},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"5321fa990be8300a982030dd6b50f8bc15e8cc45","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.3.4","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^7.0.2","@types/node":"^26.1.2"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.2.3_1785613852797_0.3341990059140818","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@majikah/majik-signature","version":"0.2.4","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.2.4","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"bb654e52ab263e4c9a49f50ee7e8fdee436f6065","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.2.4.tgz","fileCount":73,"integrity":"sha512-bKnx8sI1YFmkPWxPvRXewyqONl5yaVWrIxPiRbIvDl8xX2BhVBVnht+yaLf+LHDblAfGcqwmu0+oVTeWQBOGSA==","signatures":[{"sig":"MEUCIH25ixwoNe7bcKj30Mh1HNApO4yYJuNXqNV6CkJZXhhvAiEAiDwR5b5dgBO+qiZhHK/0rDddCUzCB5x0Q3ZKVxxazDo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":418192},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7c0930a7df3fb0ad75a99cbaa676b5139ba2ae84","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.3.4","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^7.0.2","@types/node":"^26.1.2"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.2.4_1785627473293_0.25393512480304437","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@majikah/majik-signature","version":"0.2.5","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.2.5","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"3550b434cf9349e2528a5ffe6ee56b0901da3405","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.2.5.tgz","fileCount":75,"integrity":"sha512-vjPECewaNPTWLpba0ZksOCm6RlsduLoLQVN2iNl8H1MtnD9mqtf6px6oHPfYyieTXuUtsFlcXoRe52m9JF8Veg==","signatures":[{"sig":"MEUCIQDYUVrzYKNmoJCr9f9rLdTSAWhrKHzJT+zuMw1b1MDDIwIgLRUTjrZUXaQ9QklfrEJo7DQn5spmbqpmwZdRwZADE7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":467136},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"4b67f7f259e788abb4891d6b1099c9832d1058dd","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","pdf-lib":"^1.17.1","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.3.4","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^7.0.2","@types/node":"^26.1.2"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.2.5_1785637947081_0.761899819364992","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@majikah/majik-signature","version":"0.2.6","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.2.6","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"a269fd9d6d4c6ec2a04569d5a9f4f8bcbedc370e","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.2.6.tgz","fileCount":75,"integrity":"sha512-E9/KOaOqr/Jt7WHNeJoHcY51l901tLS04rl0guflCTzpmDTgoaBoYXCjSnY2596z3ArGlbhYqUwAukdj/JYCdA==","signatures":[{"sig":"MEQCIAfh3JameInjYslaH6Z1Uxmfjhs5fCAICTKoqjuKbntpAiAq4oyu0BuzCm5VLjr5Itu6uqEiLW8Gt3tfjWP80HHPlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":467110},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"36042219a0c317d7cbbb17ecabf11d2ae77ae9c0","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.3.4","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^7.0.2","@types/node":"^26.1.2"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.2.6_1785637955733_0.17745068161460398","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@majikah/majik-signature","version":"0.2.7","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.2.7","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"dccbc33da6ce204736ba3b72f3660c696a4be92c","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.2.7.tgz","fileCount":77,"integrity":"sha512-iw6YVbeWRxXUjdWtpTYrGDOp7ic074nK5OC9QtUky2N1bsfCfTllVo+7DNlOhJ60wSgxY18f2+UkcJwvE32UxA==","signatures":[{"sig":"MEUCIQDHBQHcFuBNA7iZRqwyX3DnkfWoIDCHq5JCdoFvKBpTUAIgJHTVhVi1jWYFRaptgTWOrybzrgJI0p3mIp1EZR9U2ws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":485790},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"f84647f3bbdf35efa29a13bdddedac7fcb2bef90","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.3.4","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^7.0.2","@types/node":"^26.1.2"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.2.7_1785777990163_0.9394599060320477","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@majikah/majik-signature","version":"0.2.8","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.2.8","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"e2ccee0acf5140fedbc62a7c47944fb5e0144b63","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.2.8.tgz","fileCount":77,"integrity":"sha512-Y0zVhnXtcEpiCafDLfbN05Mg38e/h4hmiQAdPy8C+dlgOjJ/HfC6BwHRY/3X2nPVLlmJiKqJK26hcoC0RH1nYw==","signatures":[{"sig":"MEQCIBVDf/19PunUGHnuWhC4ecyn4vAgAgNGnBFifye+B6aBAiB8StDoie5riZuC5WYOeRZnocFt1oLzSBLy5GAD0sXgzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.2.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":518389},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"123dd8d5db4a7e519e41728e478d0a10e45f41b6","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.16.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.18.0","dependencies":{"fflate":"^0.8.3","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.3.4","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^7.0.2","@types/node":"^26.1.2"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.2.8_1785977270391_0.3963485434586569","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@majikah/majik-signature","version":"0.2.9","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.2.9","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"ef39e4fb48a85d78ce179b5f46b5358d92db858e","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.2.9.tgz","fileCount":77,"integrity":"sha512-e0VS6jWOwRwWkeMHoiIMUIRfmUSdGiG6tozfutNjkvsmuXaZ6eUpf3FmGUFijuEGlQZdFGdoZMMD5JS58F0kww==","signatures":[{"sig":"MEQCICqTiJLmq7crFSDxDDiU+T6x5wqU29/4VimYNKIiAtryAiBMISUtrvshBq1URKwTEZqlmgj5flbW0lfHpzx7W9fCcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.2.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":532200},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"0dfd59bdb1b99c11b1ae8debceef00fb370eb90c","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.17.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.19.0","dependencies":{"fflate":"^0.8.3","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.3.4","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.2.9_1786797010855_0.6125514313164868","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@majikah/majik-signature","version":"0.3.0","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.3.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"4632d20e16947d5455aacc20683b8cef15ee6f9a","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.3.0.tgz","fileCount":77,"integrity":"sha512-2bx43iIuLO7CwuPNw6F3qFXb6HjvJq3QlQqgNnvMdeAhzd/JYmCGb0aqFzJR/66KtD15Vm9qE1i9K0xunyBAqg==","signatures":[{"sig":"MEUCIC+j94w6grma/4YCnvq54M9i0BdcjGnddq8cCfvHCngLAiEA6yaocueq3Y7mNs7XKhAgCL1YtsVQcediw4aBs840Ffw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":535933},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"96472e2c3c051b4d49835450ad16b6dfbc67667e","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.17.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.19.0","dependencies":{"fflate":"^0.8.3","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.4.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.3.0_1786799693066_0.029961748194470728","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@majikah/majik-signature","version":"0.4.0","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.4.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"c648022d8d7816ebe1384eeef07636dd1e7e5235","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.4.0.tgz","fileCount":77,"integrity":"sha512-5ZMdhicCzMjrtvja/nCUWkqZPEgDcyMfsVgQ3eOGbRyJ5u5qT9KoH1uh+CtMZxFSxfwUSzDSZXsKOXbX5+dbOA==","signatures":[{"sig":"MEYCIQCiZAsbYalIGvkdlhJdT+XJrOqBeserJG6UCifQoz/uNwIhAJh17dfHbj+ict/W1MNFV7TsVkPMuMlphCHdVqFLvier","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":563431},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"706f18e032ffc6be0fe3322191889d5155289a65","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.17.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.19.0","dependencies":{"fflate":"^0.8.3","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.4.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.11","typescript":"^7.0.2","@types/node":"^26.4.1"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.4.0_1788303789394_0.00883668261090964","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@majikah/majik-signature","version":"0.4.1","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.4.1","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"99fb647f86e92d8ea8481af08315415dc6745215","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.4.1.tgz","fileCount":77,"integrity":"sha512-CzzKEFe6yDGa8eb7U1cN/EymF3kmG796mSj086WqrtFWtkySYVfuo7PYjbkxS2KB7PeEK7KrmBryvCQSDZZ3CA==","signatures":[{"sig":"MEQCIHWr7v9d3yDQ1Q8r7xyVoz77ce3yBbRkvMNRiMwAnybNAiBEJbTwEMnNZJ/SZSOwYsYlmnDqbuoqqLdTK2mVh21AJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":564230},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"61291c5cc74934d2a3f8795052e840edeae59b53","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"deprecated":"Security vulnerability: verification could accept files with content appended after the signature block. Upgrade to @majikah/majik-signature@0.5.0 or later.","repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.20.0","dependencies":{"fflate":"^0.8.3","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.4.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.11","typescript":"^7.0.2","@types/node":"^26.4.1"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.4.1_1788386663368_0.6575725456783434","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@majikah/majik-signature","version":"0.5.0","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.5.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"a8032946935020de93ef426f6e5196b5730fec03","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.5.0.tgz","fileCount":79,"integrity":"sha512-S3llE0BOvZlPP5dWA7GtLKGiudiPviJyZvV42/dgcVcGo+oNnyPmBP9aoDn8KKTa1Zz8PzZZKt2qCzxZtiFPig==","signatures":[{"sig":"MEUCIAxOwnUHKqGDpAUO8Phf+DNh2R6ow8xbTsSy7WdSOwdTAiEA9iCVEw8yxIVVAz312qcvfVTBO4ofX4sajTcpEjmfhsM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC5oLglXzwgKsOIj7WQ2Zb4xTEUFoopwiJlMQZ0pvzvJAIhAKgWgy/8ABWGhAAAMp2mU1mhEFAGXm+rZosZAdouJVFM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":578745},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"a45130c9b039405f4d439545e353a1eed2cc4136","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"npx vitest test/handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"npx vitest test/fix/text-handler.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.20.0","dependencies":{"fflate":"^0.8.3","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.4.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^5.0.1","typescript":"^7.0.2","@types/node":"^26.6.2"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.5.0_1789790392396_0.09912676576401669","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@majikah/majik-signature","version":"0.5.1","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.5.1","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"9efdc66f6edb6944eb492301adfcb44b57b11c2d","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.5.1.tgz","fileCount":79,"integrity":"sha512-VeDT+DNg5Q5cxxGM0JBKVirfJnfAcjbSrQ7Wdp3vTAwft8TwIeYt+2fNcb6VGnrUv7vGzA9cowaQwEsu9eDz6w==","signatures":[{"sig":"MEUCIDHScjJquG+CR5eleTQuHbaa/IVt7V581Bf9pHANtI+kAiEAyRe+avJ7UOVx2PaCSI6CpNaUh2SZm0vESmbSW39rawE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCapx3xjP/Q4uBVbvvqCxupEU2L3oR5e7FdlDinNeNE3QIhAMS7PfxwG3p9DZmcuCbAJCxaeASFXsvYILh127/r8j5c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":578745},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"d913f1c91068e228462aa01053849811007a23a8","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"npx vitest test/handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"npx vitest test/fix/text-handler.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.20.0","dependencies":{"fflate":"^0.8.3","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.4.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.1","typescript":"^7.0.2","@types/node":"^26.6.2"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.5.1_1789790467300_0.20278212621382696","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@majikah/majik-signature","version":"0.6.0","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.6.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"ff5ee191b96c78a2859ad0a14803ce3a707ef065","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.6.0.tgz","fileCount":79,"integrity":"sha512-rEWB9TmhTrVGFfnBvoZVSSNuzZvQPWwB7wdCY8nwnwnzOqr3z6vc7o/Fxhtr1kjd+jzkaeNvMP3j9STFY2UtSw==","signatures":[{"sig":"MEUCICW+kLjds4lpQtzEAnu9l/JVcNz3W3HuUdgXlTl5U3isAiEAugnNp9+y82JWv6WvC3565fzRcz3G20WEwbmJgz3+AYE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCq/hN473D9DNVy8fn1nOQh823LHXPnkMOiweNXLktJagIgdZ6Swvm1oc2CoIAgoxeWAiiz8IBki//dDy8+2xWJuwQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":578745},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"e10d3984fdc25e5bde62f03362461d2344422bbc","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"npx vitest test/handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"npx vitest test/fix/text-handler.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.20.0","dependencies":{"fflate":"^0.8.3","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.5.2","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.1","typescript":"^7.0.2","@types/node":"^26.6.2"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.6.0_1789796065664_0.5003714502340022","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@majikah/majik-signature","version":"0.7.0","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.7.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"d2b93029ca4852639a104ebc9b21c3754c6346e6","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.7.0.tgz","fileCount":81,"integrity":"sha512-jAmXzeVc4CcEu7RR4h3gpZR+wnlIr429xl9lEUz/ChCo2rVFgy6QCBrQLBJ86iY6DfPyHWJds1ISLV/an3dU2g==","signatures":[{"sig":"MEYCIQDaq3bQkagD8+LhgselEvdsFhN7qH22Lv0utJVgre6zGAIhAILaQ5Spna1DMAcXHRaz4xkLNYt1w+rNwg9HdFEoP8aq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHyNAYTUTXd8t4AJ3h3kNitbE9ZCptz3O6QX/pu5a6R/AiBJRefPH7sdlVKmlO/HS7pISA+zTBTNgKqT5sfx1rafhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":714202},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"6d7b941ef667e67b40b2769b5249b2b67ed6b3a7","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","test:core":"vitest run test/majik-signature.test.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"vitest run test/handler.test.ts","test:handlers":"vitest run test/mjksig-file-handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"vitest run  test/fix/text-handler.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.21.0","dependencies":{"fflate":"^0.8.3","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.5.2","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.1","typescript":"^7.0.2","@types/node":"^26.6.2"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.7.0_1790117284360_0.5034327712180988","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@majikah/majik-signature","version":"0.7.1","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.7.1","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"b2514412f260bc03d00cb8b38c7006ec880530b6","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.7.1.tgz","fileCount":81,"integrity":"sha512-+mplfFrr79Iq5INKK8MLs0wrNlkN6DA4pUzTYCH9IxCbLv0oopNdWtUYGDGm43KTXFB3yH905NRrhiu7oILkYg==","signatures":[{"sig":"MEUCIDNHrKiO01kQXEjESgJ1hIZoFel3aFu+8ewiAd1SIUURAiEAtCO+2m1b8dDXRTe8pJGkBMSJOQBOWdlo9IMRYgHkB2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDcEV1bgAFpcEVW4RW08rz/lZ9c86o0j8EHIWpEbzj0MAIgdAAjgKEpg+rdYPoQjHL6d2lRBGTQsMSUGq0Xs9w1VFM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":714202},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"da189fd05f8333116944cf5a50964afeccfd5ea9","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","test:core":"vitest run test/majik-signature.test.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"vitest run test/handler.test.ts","test:handlers":"vitest run test/mjksig-file-handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"vitest run  test/fix/text-handler.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:89d35020-e469-4e7b-92d7-e5b667124530"}},"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.21.0","dependencies":{"fflate":"^0.8.3","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.6.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.2","typescript":"^7.0.2","@types/node":"^26.6.3"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.7.1_1790440425837_0.6439541842105858","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@majikah/majik-signature","version":"0.7.2","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.7.2","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"784f69768cd953f71f30132e78e390b3b6815404","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.7.2.tgz","fileCount":81,"integrity":"sha512-lVz4j9OEN+w3BfSQwJileBEyWVHOkeEe0a/fs/4PDRYZXIDIUbzOkp+HhZOop9IYHcAfoNDBGGQx8pitGi/vkg==","signatures":[{"sig":"MEUCIQCN3dElqBkAHTX3PlpIYG9pWn9Lmjy0RSKB9QRr8vehdQIgYWoGZqbteNKDJ2ch65n7Qc6PwlxDsizjN+aWfIAZp9o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC1cNoHUWwfDREwoFc5XRDtWF6hkpgaZhCJmcbtjJ2qCwIgBN6CS403JGLppwFA3xSScx7NY7pkisMPxqUBEKMHsSA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":714202},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"d2aade362be9485d5ea8b777e5af66f25ab69d90","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","test:core":"vitest run test/majik-signature.test.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"vitest run test/handler.test.ts","test:handlers":"vitest run test/mjksig-file-handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"vitest run  test/fix/text-handler.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89d35020-e469-4e7b-92d7-e5b667124530"}},"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.21.0","dependencies":{"fflate":"^0.8.3","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.7.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.3","typescript":"^7.0.2","@types/node":"^26.6.4"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.7.2_1790902531639_0.5921731647526167","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@majikah/majik-signature","version":"0.8.0","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.8.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"bin":{"mjksig":"dist/cli.js"},"dist":{"shasum":"6482da0733f9b08640d385989d331c7f833a0542","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.8.0.tgz","fileCount":97,"integrity":"sha512-j01qMlDE3JakkmfSnBfx1Z0dQ0jzHSinjFQkEjcHQIfnUX3fTuRKCo4a1ja5TJl0BaC60GVGYrfD5/fkYapXhw==","signatures":[{"sig":"MEUCIQCjITMOTFHga95EkTmbCzVT3ekTrVwTJ4/zhrkxmVrEqQIgfi1Eq1trjRiPC8jsI67grDHH+faB3vkMtcBoHdIA26Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAZoEU7vwFMBu7jvaO6n8kBrkCYtBgFGCvLO41E1BplAAiB3oJJiyBLTDcjeeBwPCr/Lucf28cLVcg1T5pHu/t4m1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":790244},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7312bfd3c47b6daea217bf28df5889cd029bdf5c","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","test:cli":"vitest run test/mjksig-cli.test.ts","test:core":"vitest run test/majik-signature.test.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"vitest run test/handler.test.ts","test:office":"vitest run  test/office-hardening.test.ts","test:mjksmap":"vitest run test/mjksmap.test.ts","test:handlers":"vitest run test/mjksig-file-handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"vitest run  test/fix/text-handler.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89d35020-e469-4e7b-92d7-e5b667124530"}},"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.21.0","dependencies":{"fflate":"^0.8.3","commander":"^15.0.0","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.7.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.3","typescript":"^7.0.2","@types/node":"^26.6.4"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.8.0_1791135469173_0.9776145850731912","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@majikah/majik-signature","version":"0.8.1","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.8.1","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"bin":{"mjksig":"dist/cli.js"},"dist":{"shasum":"982b2b24c7fa65e52a6aecb9c560a879544b8e8c","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.8.1.tgz","fileCount":97,"integrity":"sha512-HO3NoDwLusry0Lh6xiycoHR0VPWeJNJoJRug/2rHFeUyuD2Gv8a2NXPV8HGdvMRsfbMlF52tDufYTZARjXVjSg==","signatures":[{"sig":"MEYCIQDRf0R0ENFPi/R5+sVM5VU0G7lRNbZi0rJP3+ror74vewIhAOGBOjg7WN5w+EbTAUL3PL8IXKj6im0QjlyzjXz5hll/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCF3c1inzPMdIDy6B/Dz5P9GYhZR6aYRA8DmtbGnlCJAQIhAOMpNCyEepNj1JGldPRoodhMEb5ZDF5XJGJlUCjoYBv0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":799545},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"4e78c972c292f75430e858a9326604046bbc1aa6","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","test:cli":"vitest run test/mjksig-cli.test.ts","test:core":"vitest run test/majik-signature.test.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"vitest run test/handler.test.ts","test:office":"vitest run  test/office-hardening.test.ts","test:mjksmap":"vitest run test/mjksmap.test.ts","test:handlers":"vitest run test/mjksig-file-handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"vitest run  test/fix/text-handler.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89d35020-e469-4e7b-92d7-e5b667124530"}},"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.21.0","dependencies":{"fflate":"^0.8.3","commander":"^15.0.0","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.7.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.3","typescript":"^7.0.2","@types/node":"^26.6.4"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.8.1_1791140804158_0.15293432287261433","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@majikah/majik-signature","version":"0.8.2","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.8.2","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"bin":{"mjksig":"dist/cli.js"},"dist":{"shasum":"36d89464cb4ff687aeb50d26cb668ae78646ae57","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.8.2.tgz","fileCount":97,"integrity":"sha512-4patn2g4VX/KQPE8A4VHF/blQq0Jz5l2JPGPllXiNdALDeFxDj1eNbISSrx6p0nnJPhtinCH/mTpi0f2hjPUgw==","signatures":[{"sig":"MEYCIQD8VaXXO2Y3Q2eXY1FKLnIGzxKMtqaJLX+sC9jkLE/k9wIhANXxMFUy1xY45Icc+n6+DaH/Ng+JEJPNMOyEOmy3QdP5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGQlq4s3Vtj49/6bZ92RMceoI496KCO/wifqX8ixUV9cAiEAx0t3Iq7uHNb9Ne5xt13/J6vlkr8Mg8ddTQAmoDUXXME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":799939},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"3379f888f543195169a1f7edc0c881c1d6c643f5","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","test:cli":"vitest run test/mjksig-cli.test.ts","test:core":"vitest run test/majik-signature.test.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"vitest run test/handler.test.ts","test:office":"vitest run  test/office-hardening.test.ts","test:mjksmap":"vitest run test/mjksmap.test.ts","test:handlers":"vitest run test/mjksig-file-handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"vitest run  test/fix/text-handler.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89d35020-e469-4e7b-92d7-e5b667124530"}},"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.21.0","dependencies":{"fflate":"^0.8.3","commander":"^15.0.0","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.7.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.3","typescript":"^7.0.2","@types/node":"^26.6.4"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.8.2_1791142955114_0.5474363986858375","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@majikah/majik-signature","version":"0.8.3","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.8.3","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"bin":{"mjksig":"dist/cli.js"},"dist":{"shasum":"2376043df772c4455a5925f81edfe4c21ad429ae","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.8.3.tgz","fileCount":97,"integrity":"sha512-cKv5M/rerR1pJ2RG3rjNsgygq7djFcWjw3Mv5GuCxsGeriiu9Aj0iEpqYcyIG3P9/0fgA1etoyljRc8AMXHV2Q==","signatures":[{"sig":"MEYCIQCc2MFfULKBwEKgilYcpbQ4ozb1GPJC6vFSuzrFiTePDQIhANNiSsPtq5fpNGgPHWH6erLqmSH26i+xeNrvPlArngT5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCGB2MAtFOhyMJwXJLtICM1hzjFrMo3PaVfc+koM7x6xwIgcetqYS8LRS5iMCbyTIRaq8S+XKwuSQZI7ZGelX7E6Lo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.8.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":799985},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7be7f41d2a5dff0c4e9d37ff2bfd3a89e4a08bf8","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","test:cli":"vitest run test/mjksig-cli.test.ts","test:core":"vitest run test/majik-signature.test.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"vitest run test/handler.test.ts","test:office":"vitest run  test/office-hardening.test.ts","test:mjksmap":"vitest run test/mjksmap.test.ts","test:handlers":"vitest run test/mjksig-file-handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"vitest run  test/fix/text-handler.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89d35020-e469-4e7b-92d7-e5b667124530"}},"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.21.0","dependencies":{"fflate":"^0.8.3","commander":"^15.0.0","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^0.7.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.3","typescript":"^7.0.2","@types/node":"^26.6.4"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.8.3_1791144896242_0.038193726521461135","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@majikah/majik-signature","version":"0.9.0","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-signature@0.9.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-signature#readme","bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"bin":{"mjksig":"dist/cli.js"},"dist":{"shasum":"79318a776e5ac786aec832e2f722fac9c911d414","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.9.0.tgz","fileCount":97,"integrity":"sha512-8TaS0f+I8jqWrT9YqARgHaiFQVGkJRySXxgvSbq2K6SpSSPo+nZ13HUy0Ul1D4MNHqyXCkzwRXDih7eUI5+E4A==","signatures":[{"sig":"MEYCIQCdkIRYTIbBGkToaxXJFP6bRjiKMR6L/zQOGrEvCYxXqgIhAJET7QAVdlUcgTYpS+GIcKBXZ3GNiei9zhiw9pb6Cfd9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCwbyNsi9c/YzNRJDNcEpKpxVnFuCk85cJu9BKO8SCunQIhAJ+p+oC9M5G2//X0TmYglSDL8tZZGZuuZvi/VuxNzGIs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":800149},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"4961ee7def323ffbf1bcd9bd71b0d763da0b1590","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","test:cli":"vitest run test/mjksig-cli.test.ts","test:core":"vitest run test/majik-signature.test.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"vitest run test/handler.test.ts","test:office":"vitest run  test/office-hardening.test.ts","test:mjksmap":"vitest run test/mjksmap.test.ts","test:handlers":"vitest run test/mjksig-file-handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"vitest run  test/fix/text-handler.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89d35020-e469-4e7b-92d7-e5b667124530"}},"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"_nodeVersion":"24.21.0","dependencies":{"fflate":"^0.8.3","commander":"^15.0.0","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^1.0.0","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.3","typescript":"^7.0.2","@types/node":"^26.6.4"},"_npmOperationalInternal":{"tmp":"tmp/majik-signature_0.9.0_1791187113447_0.029949599178999087","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"_id":"@majikah/majik-signature@0.9.1","bin":{"mjksig":"dist/cli.js"},"bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"dist":{"shasum":"4a311e7199ae2eb548cdcfa56b83e20376a46fe1","tarball":"https://registry.npmjs.org/@majikah/majik-signature/-/majik-signature-0.9.1.tgz","fileCount":97,"integrity":"sha512-0GabWCWhcvc/5c0HFTijn+krXm9WAIIDVi5QJVuxdAaWouF6ycEqMOxPG7P4bq4EWtoscatAePzWqLTZUHUvGA==","signatures":[{"sig":"MEQCIBMM98w+w2E2d59RkEWuxIKdtFCUejKij5LCWHjP0+OVAiB1Bv/XlG9HB3rheEefYmna9w+Py+z097qvrnugdljztg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCxhQwedKqroZ81Z4/hHwIczGyAcTFRl3GI+fhkBRJwXAIgY616Adm8kL8XO+g5FW/kI0OxAz2Y8IPzSQp4fD3nHFM="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-signature@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":800149},"main":"./dist/index.js","name":"@majikah/majik-signature","type":"module","types":"./dist/index.d.ts","author":{"name":"Zelijah"},"module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"8e9dc4311d0b7fa3d2f6596c8ab100814a662df2","license":"Apache-2.0","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","test:cli":"vitest run test/mjksig-cli.test.ts","test:core":"vitest run test/majik-signature.test.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:legacy":"vitest run test/handler.test.ts","test:office":"vitest run  test/office-hardening.test.ts","test:mjksmap":"vitest run test/mjksmap.test.ts","test:handlers":"vitest run test/mjksig-file-handler.test.ts","prepublishOnly":"npm run build","test:legacy:text":"vitest run  test/fix/text-handler.test.ts"},"version":"0.9.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"89d35020-e469-4e7b-92d7-e5b667124530"}},"homepage":"https://github.com/Majikah/majik-signature#readme","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"_npmVersion":"11.19.0","description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","directories":{},"maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"fflate":"^0.8.3","commander":"^15.0.0","@noble/hashes":"^2.4.0","@stablelib/sha256":"^2.0.1","@majikah/majik-key":"^1.0.1","@stablelib/ed25519":"^2.1.0","@noble/post-quantum":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.3","typescript":"^7.0.2","@types/node":"^26.6.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/majik-signature_0.9.1_1791236842122_0.8947608276896275"}}},"time":{"created":"2026-03-15T11:05:19.427Z","modified":"2026-10-05T21:47:22.593Z","0.0.1":"2026-03-15T11:05:19.699Z","0.0.2":"2026-03-15T13:49:52.197Z","0.0.3":"2026-03-16T07:27:02.716Z","0.0.4":"2026-03-18T13:55:22.180Z","0.0.5":"2026-03-18T14:01:59.652Z","0.0.6":"2026-03-18T14:52:57.430Z","0.0.7":"2026-03-19T20:26:21.179Z","0.0.8":"2026-03-19T20:55:50.499Z","0.0.9":"2026-03-19T21:16:38.457Z","0.0.10":"2026-03-22T14:10:08.996Z","0.0.11":"2026-03-25T05:11:09.300Z","0.0.12":"2026-03-25T12:27:10.240Z","0.0.13":"2026-03-25T14:23:51.041Z","0.0.14":"2026-03-25T14:34:57.546Z","0.0.15":"2026-03-26T06:35:28.200Z","0.0.16":"2026-04-03T10:04:05.606Z","0.0.17":"2026-04-14T15:01:33.344Z","0.0.18":"2026-06-21T13:32:34.540Z","0.0.19":"2026-06-21T13:42:54.786Z","0.0.25":"2026-06-21T16:32:40.894Z","0.0.26":"2026-06-23T17:25:54.947Z","0.0.28":"2026-06-26T00:19:39.906Z","0.0.29":"2026-06-29T17:13:00.049Z","0.0.30":"2026-07-07T02:19:04.911Z","0.0.31":"2026-07-11T07:09:01.413Z","0.0.32":"2026-07-11T09:36:46.019Z","0.1.0":"2026-07-11T10:17:11.438Z","0.2.0":"2026-07-15T18:29:45.103Z","0.2.1":"2026-07-26T09:25:37.788Z","0.2.2":"2026-07-31T20:50:54.505Z","0.2.3":"2026-08-01T19:50:52.951Z","0.2.4":"2026-08-01T23:37:53.447Z","0.2.5":"2026-08-02T02:32:27.221Z","0.2.6":"2026-08-02T02:32:35.916Z","0.2.7":"2026-08-03T17:26:30.310Z","0.2.8":"2026-08-06T00:47:50.536Z","0.2.9":"2026-08-15T12:30:11.013Z","0.3.0":"2026-08-15T13:14:53.222Z","0.4.0":"2026-09-01T23:03:09.529Z","0.4.1":"2026-09-02T22:04:23.497Z","0.5.0":"2026-09-19T03:59:52.474Z","0.5.1":"2026-09-19T04:01:07.380Z","0.6.0":"2026-09-19T05:34:25.761Z","0.7.0":"2026-09-22T22:48:04.459Z","0.7.1":"2026-09-26T16:33:45.937Z","0.7.2":"2026-10-02T00:55:31.767Z","0.8.0":"2026-10-04T17:37:49.276Z","0.8.1":"2026-10-04T19:06:44.290Z","0.8.2":"2026-10-04T19:42:35.240Z","0.8.3":"2026-10-04T20:14:56.394Z","0.9.0":"2026-10-05T07:58:33.521Z","0.9.1":"2026-10-05T21:47:22.289Z"},"bugs":{"url":"https://github.com/Majikah/majik-signature/issues"},"author":{"name":"Zelijah"},"license":"Apache-2.0","homepage":"https://github.com/Majikah/majik-signature#readme","keywords":["digital-signature","content-signing","content-verification","tamper-proof","tamper-detection","post-quantum","post-quantum-cryptography","hybrid-cryptography","ml-dsa","ml-dsa-87","ed25519","cryptography","signature-verification","data-integrity","content-authentication","majikah","majik-signature"],"repository":{"url":"git+https://github.com/Majikah/majik-signature.git","type":"git"},"description":"Majik Signature is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of Majik Key, it provides tamper-proof, forgery-resistant digital signatures for any content format — using a dual-algorithm architec","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"readme":"# Majik Signature\n\n[![Developed by Zelijah](https://img.shields.io/badge/Developed%20by-Zelijah-red?logo=github&logoColor=white)](https://thezelijah.world) ![GitHub Sponsors](https://img.shields.io/github/sponsors/jedlsf?style=plastic&label=Sponsors&link=https%3A%2F%2Fgithub.com%2Fsponsors%2Fjedlsf)\n![npm](https://img.shields.io/npm/v/@majikah/majik-signature) ![npm downloads](https://img.shields.io/npm/dm/@majikah/majik-signature) ![npm bundle size](https://img.shields.io/bundlephobia/min/%40majikah%2Fmajik-signature) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue) [![Static Badge](https://img.shields.io/badge/IANA-vnd.majikah.mjksig-green)](https://www.iana.org/assignments/media-types/application/vnd.majikah.mjksig)\n\n**Majik Signature** is a hybrid post-quantum content signing and verification library for the Majikah ecosystem. Built on top of [**Majik Key**](https://www.npmjs.com/package/@majikah/majik-key), it produces tamper-evident, forgery-resistant digital signatures for any content — plaintext, JSON, PDFs, audio, video, Office documents, or raw binary — using a dual-algorithm architecture that combines classical **Ed25519** with post-quantum **ML-DSA-87** (FIPS-204).\n\nBeyond signing raw bytes, Majik Signature can **embed signatures directly into a file's native format**, or produce **detached envelopes** that travel independently of the file — as portable JSON, base64, or a dedicated self-describing binary container (`.mjksig`). It supports **multi-party signing**, **signing allowlists**, **envelope sealing**, **trusted timestamps (TSA)**, **batch/folder signing** via a manifest format (`.mjksmap`), **chronological signing-order verification**, and **blockchain anchor registration**.\n\n---\n\n## Table of Contents\n\n- [Majik Signature](#majik-signature)\n  - [Table of Contents](#table-of-contents)\n  - [Why Majik Signature](#why-majik-signature)\n  - [Security Architecture](#security-architecture)\n    - [1. Hybrid Dual-Algorithm Signing](#1-hybrid-dual-algorithm-signing)\n    - [2. Canonical Payload Binding](#2-canonical-payload-binding)\n    - [3. Content-Agnostic Hashing](#3-content-agnostic-hashing)\n    - [4. File Embedding \\& Detachment Integrity](#4-file-embedding--detachment-integrity)\n    - [5. Multi-Party Signing, Allowlists \\& Sealing](#5-multi-party-signing-allowlists--sealing)\n    - [6. File Versioning for Visually-Mutating Multi-Sig Workflows](#6-file-versioning-for-visually-mutating-multi-sig-workflows)\n    - [7. Trusted Timestamps (TSA)](#7-trusted-timestamps-tsa)\n    - [8. Chain Anchoring](#8-chain-anchoring)\n  - [Overview](#overview)\n    - [What is a Majik Signature?](#what-is-a-majik-signature)\n    - [Use Cases](#use-cases)\n  - [Features](#features)\n    - [Security \\& Post-Quantum Readiness](#security--post-quantum-readiness)\n    - [Multi-Party Signing](#multi-party-signing)\n    - [Detached Signing \\& Batch Workflows](#detached-signing--batch-workflows)\n    - [Content Format Support](#content-format-support)\n    - [Developer Experience](#developer-experience)\n    - [Serialization \\& Portability](#serialization--portability)\n  - [Installation](#installation)\n  - [Command-Line Interface](#command-line-interface)\n    - [`mjksig` — Sign, Verify, Seal, Inspect](#mjksig--sign-verify-seal-inspect)\n    - [Run with `npx`](#run-with-npx)\n    - [CLI Documentation](#cli-documentation)\n  - [Quick Start](#quick-start)\n    - [Signing Raw Content](#signing-raw-content)\n    - [File Embedding](#file-embedding)\n    - [Detached Signing](#detached-signing)\n    - [Multi-Signature Files \\& Allowlists](#multi-signature-files--allowlists)\n    - [Sealing an Envelope](#sealing-an-envelope)\n    - [Trusted Timestamps (TSA)](#trusted-timestamps-tsa)\n    - [Batch Signing a Folder](#batch-signing-a-folder)\n    - [Verifying Signing Order](#verifying-signing-order)\n    - [Chain Anchoring](#chain-anchoring)\n    - [File Versioning \\& Multi-Sig Revisions](#file-versioning--multi-sig-revisions)\n  - [API Reference](#api-reference)\n    - [Content Signing (bytes/strings)](#content-signing-bytesstrings)\n      - [`MajikSignature.sign(content, key, options?)`](#majiksignaturesigncontent-key-options)\n      - [`MajikSignature.verify(content, signature, publicKeys)`](#majiksignatureverifycontent-signature-publickeys)\n      - [`MajikSignature.verifyWithKey(content, signature, key)`](#majiksignatureverifywithkeycontent-signature-key)\n      - [`MajikSignature.publicKeysFromMajikKey(key)`](#majiksignaturepublickeysfrommajikkeykey)\n      - [`signature.extractPublicKeys()` *(instance method)*](#signatureextractpublickeys-instance-method)\n      - [`signature.validate()` / `signature.isValid()`](#signaturevalidate--signatureisvalid)\n      - [`MajikSignature.fromJSON(json)` / `MajikSignature.deserialize(base64)`](#majiksignaturefromjsonjson--majiksignaturedeserializebase64)\n    - [File Embedding API](#file-embedding-api)\n      - [`MajikSignature.signFile(file, key, options?)`](#majiksignaturesignfilefile-key-options)\n      - [`MajikSignature.verifyFile(file, keyOrPublicKeys, options?)`](#majiksignatureverifyfilefile-keyorpublickeys-options)\n      - [`signature.embedIn(file, options?)` *(instance method)*](#signatureembedinfile-options-instance-method)\n      - [`MajikSignature.extractFrom(file, options?)`](#majiksignatureextractfromfile-options)\n      - [`MajikSignature.stripFrom(file, options?)`](#majiksignaturestripfromfile-options)\n      - [`MajikSignature.isSigned(file, options?)`](#majiksignatureissignedfile-options)\n    - [Detached Signing \\& MajikSignatureEnvelope API](#detached-signing--majiksignatureenvelope-api)\n      - [`MajikSignature.signFileDetached(file, key, options?)`](#majiksignaturesignfiledetachedfile-key-options)\n      - [`MajikSignature.verifyFileDetached(file, envelope, keyOrPublicKeys, options?)`](#majiksignatureverifyfiledetachedfile-envelope-keyorpublickeys-options)\n      - [`MajikSignatureEnvelope`](#majiksignatureenvelope)\n    - [Multi-Signature \\& Allowlist API](#multi-signature--allowlist-api)\n      - [`MajikSignature.expectedSignerFromKey(key)`](#majiksignatureexpectedsignerfromkeykey)\n      - [`MajikSignature.getAllowlist(file, options?)`](#majiksignaturegetallowlistfile-options)\n      - [`MajikSignature.canSign(file, key, options?)`](#majiksignaturecansignfile-key-options)\n      - [`MajikSignature.getSignatories(file, options?, filter?)`](#majiksignaturegetsignatoriesfile-options-filter)\n      - [`MajikSignature.getIssuer(file, options?)`](#majiksignaturegetissuerfile-options)\n      - [`MajikSignature.getEnvelopeInfo(file, options?)`](#majiksignaturegetenvelopeinfofile-options)\n      - [`MajikSignature.isMultiSig(file, options?)`](#majiksignatureismultisigfile-options)\n    - [Sealing API](#sealing-api)\n      - [`MajikSignature.seal(file, key, options?)`](#majiksignaturesealfile-key-options)\n      - [`MajikSignature.verifySeal(file, options?)`](#majiksignatureverifysealfile-options)\n      - [`MajikSignature.getSealInfo(file, options?)`](#majiksignaturegetsealinfofile-options)\n      - [`MajikSignature.isSealed(file, options?)`](#majiksignatureissealedfile-options)\n    - [Trusted Timestamps API](#trusted-timestamps-api)\n      - [`signature.buildTSARequestPayload()`](#signaturebuildtsarequestpayload)\n      - [`MajikSignature.signTSA(request, key, tsa, options?)`](#majiksignaturesigntsarequest-key-tsa-options)\n      - [`signature.addTSA(timestamp)`](#signatureaddtsatimestamp)\n      - [`signature.verifyTSA()`](#signatureverifytsa)\n      - [`signature.hasTSA`](#signaturehastsa)\n    - [Batch Signing \\& MajikSignatureMap API](#batch-signing--majiksignaturemap-api)\n      - [`MajikSignature.signBatchDetached(files, key, options?)`](#majiksignaturesignbatchdetachedfiles-key-options)\n      - [`MajikSignature.verifyFilesFromMjksMap(map, files, publicKeys, options?)`](#majiksignatureverifyfilesfrommjksmapmap-files-publickeys-options)\n      - [`MajikSignature.verifyFilesFromMjksMapWithKey(map, files, key, options?)`](#majiksignatureverifyfilesfrommjksmapwithkeymap-files-key-options)\n      - [`MajikSignature.summarizeBatchVerification(results)`](#majiksignaturesummarizebatchverificationresults)\n      - [`MajikSignatureMap`](#majiksignaturemap)\n    - [Signature Order Verification API](#signature-order-verification-api)\n      - [`MajikSignature.verifyFileOrder(file, expectedOrder, options?)`](#majiksignatureverifyfileorderfile-expectedorder-options)\n      - [`MajikSignature.verifyFileDetachedOrder(file, envelope, expectedOrder, options?)`](#majiksignatureverifyfiledetachedorderfile-envelope-expectedorder-options)\n      - [`MajikSignature.normalizeExpectedOrder(expectedOrder)`](#majiksignaturenormalizeexpectedorderexpectedorder)\n    - [Chain Anchoring API (Experimental)](#chain-anchoring-api-experimental)\n      - [`MajikSignature.canAnchor(file, options?)`](#majiksignaturecananchorfile-options)\n      - [`MajikSignature.buildChainAnchorMemo(sealHash)`](#majiksignaturebuildchainanchormemosealhash)\n      - [`MajikSignature.registerChainAnchor(file, anchor, options?)`](#majiksignatureregisterchainanchorfile-anchor-options)\n      - [`MajikSignature.getChainAnchors(file, options?)`](#majiksignaturegetchainanchorsfile-options)\n    - [File Versioning API](#file-versioning-api)\n      - [`MajikSignature.signFile(file, key, options?)` — versioning-relevant options](#majiksignaturesignfilefile-key-options--versioning-relevant-options)\n      - [`MajikSignature.verifyFileChain(file, options?)`](#majiksignatureverifyfilechainfile-options)\n      - [`MajikSignature.verifyFileRevisions(finalFile, revisions, options?)`](#majiksignatureverifyfilerevisionsfinalfile-revisions-options)\n      - [`MajikSignature.verifyCommitment(signature, publicKeys, now?)`](#majiksignatureverifycommitmentsignature-publickeys-now)\n    - [Image Stamping (Experimental)](#image-stamping-experimental)\n    - [Serialization](#serialization)\n      - [`signature.toJSON()` / `MajikSignature.fromJSON(json)`](#signaturetojson--majiksignaturefromjsonjson)\n      - [`signature.serialize()` / `MajikSignature.deserialize(base64)`](#signatureserialize--majiksignaturedeserializebase64)\n      - [`envelope.toJSON()` / `MajikSignatureEnvelope.fromJSON(json)`](#envelopetojson--majiksignatureenvelopefromjsonjson)\n      - [`envelope.serialize()` / `MajikSignatureEnvelope.deserialize(base64)`](#envelopeserialize--majiksignatureenvelopedeserializebase64)\n      - [`envelope.toMJKSIG()` / `MajikSignatureEnvelope.fromMJKSIG(input)`](#envelopetomjksig--majiksignatureenvelopefrommjksiginput)\n  - [Supported File Formats](#supported-file-formats)\n  - [Signature \\& Envelope Structure](#signature--envelope-structure)\n  - [Binary Container Formats (MJKSIG / MJKSMAP)](#binary-container-formats-mjksig--mjksmap)\n  - [Error Handling](#error-handling)\n  - [Security Considerations](#security-considerations)\n    - [What is Guaranteed](#what-is-guaranteed)\n    - [What is Your Responsibility](#what-is-your-responsibility)\n    - [What NOT to Do](#what-not-to-do)\n    - [What TO Do](#what-to-do)\n  - [The Majikah Ecosystem](#the-majikah-ecosystem)\n    - [Majik Signature — Standalone App](#majik-signature--standalone-app)\n    - [🧾 Majik Buwiz](#-majik-buwiz)\n    - [💬 Majik Message](#-majik-message)\n    - [🪪 Majik Universal ID](#-majik-universal-id)\n  - [Related Projects](#related-projects)\n    - [Majik Key](#majik-key)\n    - [Majik Message](#majik-message)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Author](#author)\n  - [Contact](#contact)\n\n\n---\n\n## Why Majik Signature\n\nMost \"digital signature\" libraries only sign raw bytes and leave you to figure out storage, transport, and file compatibility yourself. Majik Signature is built to be dropped into a real application:\n\n- **Hybrid post-quantum by default** — every signature is Ed25519 + ML-DSA-87, not an opt-in extra.\n- **Signatures live inside the file, or travel detached** — embed directly into the file's native format, or produce a portable envelope (JSON, base64, or the self-describing `.mjksig` binary container) for out-of-band verification workflows.\n- **Multi-party signing is a first-class concept** — not bolted on. Allowlists, sealing, issuer semantics, and chronological order verification are part of the core envelope model.\n- **Batch-aware** — sign or verify an entire folder or zip's contents against a single manifest (`.mjksmap`) instead of tracking one signature file per asset.\n- **Deterministic by design** — the library goes out of its way to guarantee that signing and verifying the same content always produces the same canonical bytes (see [Signature & Envelope Structure](#signature--envelope-structure)).\n- **No native dependencies** — pure TypeScript/WASM-free cryptography, works identically in Node.js, browsers, Tauri, Deno, and Bun.\n\n---\n\n## Security Architecture\n\n```mermaid\nflowchart TD\n    A[12/24-word BIP-39 Seed Phrase] --> B[Majik Key]\n\n    %% Signing branch\n    B --> S[Signing]\n    S --> S1[Ed25519]\n    S --> S2[ML-DSA-87]\n\n    %% Identity branch\n    B --> I[Identity]\n    I --> I1[BIP-39]\n    I --> I2[X25519]\n\n    %% Products (fan-in)\n    S1 --> P1[Majik Signature]\n    S2 --> P1\n```\n\n### 1. Hybrid Dual-Algorithm Signing\n\nEvery Majik Signature is produced by **two independent signing algorithms** over the same canonical payload:\n\n- **Ed25519** — classical elliptic curve signature (128-bit security, 64-byte signature)\n- **ML-DSA-87 (FIPS-204)** — post-quantum lattice-based signature (NIST Category 5, ~4595-byte signature)\n\nVerification requires **both** to pass. This means:\n- A classical attacker breaking Ed25519 still cannot forge the ML-DSA-87 signature.\n- A quantum attacker breaking ML-DSA-87 still cannot forge the Ed25519 signature.\n- No single algorithmic break is sufficient to forge a valid signature.\n\n### 2. Canonical Payload Binding\n\nBoth signatures cover a **domain-separated canonical payload**:\n\n```\n\"majik-signature-v1:\" + JSON({ v, id, ts, ct, hash[, alh][, vu][, vch] })\n```\n\n| Field  | Description                                                                                                                                                                                                                                                                                                                                                 |\n| ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `v`    | Envelope version                                                                                                                                                                                                                                                                                                                                            |\n| `id`   | Signer fingerprint (MajikKey identity)                                                                                                                                                                                                                                                                                                                      |\n| `ts`   | ISO 8601 timestamp                                                                                                                                                                                                                                                                                                                                          |\n| `ct`   | Content type (advisory, or `null`)                                                                                                                                                                                                                                                                                                                          |\n| `hash` | SHA-256 of the original content, base64                                                                                                                                                                                                                                                                                                                     |\n| `alh`  | SHA-256 of the canonical allowlist, base64 — **present only** when this signer is establishing an allowlist                                                                                                                                                                                                                                                 |\n| `vu`   | Optional ISO 8601 expiry. When present, verify() treats the signature as invalid once the current time is past this value. Absent = never expires (matches all pre-existing signatures — fully backward compatible). Covered by the canonical signing payload when present, so it cannot be stripped or extended post-hoc without breaking both signatures. |\n| `vch`  | SHA-256 of the `fileVersions` revision chain, base64 — present only when file versioning is in use; covers the chain state as of this signer's own entry, so a rewritten chain breaks their signature.                                                                                                                                                      |\n\n`alh` is *omitted entirely* (not set to `null`) on every signature that isn't establishing an allowlist. This is a deliberate backward-compatibility guarantee: every signature produced before multi-sig support existed still verifies today, because its payload bytes are unchanged.\n\nThis binding means a valid signature cannot be reused on different content, transferred to a different signer, replayed with a modified timestamp, or forged without both private keys.\n\n### 3. Content-Agnostic Hashing\n\nContent is never embedded in the envelope — only its SHA-256 hash is signed. A 500 MB video signs at the same speed as a 10-byte string, and every content type is supported identically.\n\n### 4. File Embedding & Detachment Integrity\n\nWhen a signature is embedded into a file, it always covers the **original file bytes before embedding**. Verification strips the embedded envelope before re-hashing, so the round-trip is always:\n\n```\nsign(originalBytes) → embed into file → extract → strip → verify(originalBytes)\n```\n\nThe same guarantee applies to **detached** signing: `signFileDetached()` signs the clean, stripped bytes and returns them alongside the envelope — the envelope and the file travel separately, but verification always strips the file first, so an accidentally-still-embedded envelope never double-counts or corrupts the hash.\n\nRe-signing (or re-embedding) the same file is always safe — the existing envelope is stripped before the new one is written, so signatures never stack or corrupt each other.\n\n### 5. Multi-Party Signing, Allowlists & Sealing\n\nFiles don't hold a single signature — they hold a **`MultiSigEnvelope`** (modeled at runtime by the `MajikSignatureEnvelope` class): an array of per-signer envelopes, plus optional allowlist, seal, and chain-anchor metadata.\n\n- **Open signing** (default): anyone with a `MajikKey` can add a signature.\n- **Restricted signing**: the first signer may supply an `expectedSigners` allowlist. That allowlist is cryptographically committed to via `allowlistHash` in the issuer's own canonical payload — tampering with the allowlist after the fact breaks the issuer's signature. Non-listed signers are rejected *before* any cryptographic operation runs.\n- **Sealing**: the issuer (and only the issuer) can seal an envelope, computing a **SHA3-512** hash over every current signatory plus a seal timestamp, domain-separated with `\"majik-seal-v1:\"`. A sealed envelope rejects all further signing attempts — including from the issuer.\n\n### 6. File Versioning for Visually-Mutating Multi-Sig Workflows\n\nOrdinary multi-sig assumes every signer signs the *same* underlying bytes. That breaks when signing also means visually stamping the document — each signer's stamp changes the file's content, so the next signer is working from different bytes than the one before them.\n\n`signFile()`'s `priorSignedFile` option handles this: pass the file as it was received (carrying the prior signer's envelope), and the library verifies that prior envelope is genuinely valid before extending it with a new `FileVersion` revision entry, cryptographically bound via `versionChainHash` — see [File Versioning & Multi-Sig Revisions](#file-versioning--multi-sig-revisions).\n\n### 7. Trusted Timestamps (TSA)\n\nA `MajikSignature` can optionally carry a `MajikTimestamp` — a signature from a timestamp authority over a canonical payload (`\"majikah-tsa-v-1:\"` domain) binding a digest, a server-generated nonce, and a server-authoritative timestamp. The TSA signature is itself a full Majik Signature (Ed25519 + ML-DSA-87), so it inherits the same hybrid guarantees. TSA timestamps are also what power *attested* [signing-order verification](#verifying-signing-order) — see below.\n\n### 8. Chain Anchoring\n\nA sealed envelope's seal hash can be committed to an external blockchain (handled by a companion product, e.g. `majik-notary`) and the resulting confirmed anchor registered back into the envelope via `MajikChainAnchor` records. The SDK does not talk to any chain itself — it only builds the canonical memo to anchor (`buildChainAnchorMemo()`) and embeds/reads already-confirmed anchors. Anchoring requires the envelope to already be sealed.\n\n---\n\n## Overview\n\n### What is a Majik Signature?\n\nA Majik Signature is cryptographic proof that a specific piece of content was produced or approved by the holder of a specific **Majik Key**, that the content has not been modified since it was signed, and that the signature remains valid against future quantum computing threats.\n\nVerification is fully **public** — anyone with the signer's public keys can verify. No private key is ever needed for verification.\n\n### Use Cases\n\n- **Content Provenance** — prove that music, art, a document, or a dataset was produced by a specific identity.\n- **File Integrity** — detect any tampering or modification to distributed files.\n- **API Payload Signing** — sign JSON requests/responses for non-repudiation.\n- **Document Authentication** — certify contracts, legal records, or invoices, with support for multiple independent signers, chronological approval order, and a final seal.\n- **Media Certification** — stamp audio, video, or image files as authentic originals, with the signature embedded directly in the file.\n- **Software Distribution** — sign release artifacts to prove they come from the original author.\n- **Identity-Bound Messaging** — bind signed content to a verifiable identity across the Majikah ecosystem.\n- **Batch Asset Signing** — sign every file in a folder, project export, or zip archive against a single manifest, resilient to files being renamed or relocated afterward.\n- **Approval Workflows** — verify not just *who* signed a contract, but that they signed it in the *required order* (e.g. legal before finance, requester before approver).\n\n---\n\n## Features\n\n### Security & Post-Quantum Readiness\n\n- **Hybrid signatures** — Ed25519 (classical) + ML-DSA-87 (post-quantum, FIPS-204, Category 5); both must verify\n- **Tamper detection** — SHA-256 content hash is bound inside the signed payload; any byte change invalidates both signatures\n- **Domain separation** — distinct prefixes for signing (`majik-signature-v1:`), sealing (`majik-seal-v1:`), timestamping (`majikah-tsa-v-1:`), and chain anchoring (`majik-notary-v-1:`) prevent cross-protocol signature reuse\n- **Signer & timestamp binding** — both are part of the signed payload; neither can be altered or transferred after signing\n- **No private key for verification** — pure public-key verification, safe to run anywhere\n\n### Multi-Party Signing\n\n- **Multi-signature envelopes** — any number of independent signers on one file, modeled by the immutable `MajikSignatureEnvelope` class\n- **Signing allowlists** — restrict who may sign, enforced before any cryptographic operation\n- **Cryptographically committed allowlists** — tampering with the allowlist invalidates the issuer's signature\n- **Sealing** — the issuer can permanently lock an envelope against further signatures\n- **Chronological order verification** — verify that signers signed in a required sequence, with TSA-attested timestamps preferred over self-reported ones, and a strict mode to reject unexpected extra signers\n- **Status queries** — `getSignatories()`, `getIssuer()`, `getEnvelopeInfo()`, `canSign()` for building signing-status UI without manually walking the envelope\n\n### Detached Signing & Batch Workflows\n\n[![Static Badge](https://img.shields.io/badge/IANA-vnd.majikah.mjksig-green)](https://www.iana.org/assignments/media-types/application/vnd.majikah.mjksig)\n\n- **Detached envelopes** — sign a file and receive the envelope separately, for external verification pipelines where payload and signature travel independently\n- **Self-describing binary containers** — `.mjksig` for a single detached envelope, `.mjksmap` for a manifest covering an entire batch, each with magic bytes, a version header, and a length-prefixed payload\n- **Batch signing** — sign every file in a folder or zip in one call, packaged as one `.mjksmap` manifest or as separate `.mjksig` files per asset\n- **Relocation-tolerant batch verification** — a file renamed or moved after signing is still found and verified by content hash, not just by its original path\n- **Per-file batch verification reporting** — `verified` / `invalid` / `tampered` / `not_in_map` status per file, plus a one-glance summary\n\n### Content Format Support\n\n- **Plain text, JSON, binary** — `Uint8Array` or `string`\n- **PDF** — signature appended as a spec-compliant binary trailer after the file's `%%EOF`\n- **PNG** — embedded in an `iTXt` metadata chunk\n- **WAV** — embedded in a RIFF `LIST INFO` chunk\n- **MP3** — embedded in an ID3v2 `TXXX` frame\n- **MP4, MOV, M4A, M4V** — embedded in the `moov/udta` box, custom `majk` box type\n- **DOCX, XLSX, PPTX, ODT, ODS, ODP** — embedded as a dedicated entry inside the ZIP container\n- **MKV, WebM** — embedded via a custom Matroska metadata tag\n- **JPEG, FLAC** — native format metadata, same round-trip guarantees as other handlers\n- **HTML, Markdown, JSON, plain text, source code** — embedded as an appended, format-appropriate metadata block\n- **Any other format** — universal binary trailer: `[original bytes][signature JSON][8-byte length][8-byte magic]` — cleanly detectable and strippable regardless of format\n\nSee [Supported File Formats](#supported-file-formats) for the full handler table.\n\n### Developer Experience\n\n- **First-class TypeScript support** — full type definitions for every interface and class\n- **Simple core API** — `sign()` / `verify()` for bytes and strings; `signFile()` / `verifyFile()` for embedded files; `signFileDetached()` / `verifyFileDetached()` for detached workflows\n- **One-liner file signing** — `MajikSignature.signFile(blob, key)` signs and embeds in a single call\n- **Format auto-detection** — MIME type and magic-byte sniffing, no manual format hints required in most cases\n- **Idempotent re-signing** — safely re-sign or re-embed any file without accumulating stacked or orphaned envelopes\n- **Immutable envelope model** — `MajikSignatureEnvelope` and `MajikSignatureMap` are both immutable; every mutation returns a new instance\n- **Typed error hierarchy** — precise, catchable error classes instead of generic exceptions\n- **Isomorphic** — Node.js, browsers, Tauri, Deno, and Bun; no native bindings\n\n### Serialization & Portability\n\n- **JSON envelope** — full `toJSON()` / `fromJSON()` round-trip, at both the signature and envelope level\n- **Base64 serialization** — `serialize()` / `deserialize()` for compact transport (HTTP headers, DB columns, etc.)\n- **File-embedded** — the signature lives inside the file itself, no sidecar files needed\n- **Self-contained** — the envelope includes the signer's public keys, verifiable without a separate key registry\n- **Binary containers** — `.mjksig` and `.mjksmap` for detached envelopes and batch manifests that need to travel or be stored on disk as their own file\n\n---\n\n## Installation\n\n```bash\nnpm install @majikah/majik-signature\n\n# Required peer dependency\nnpm install @majikah/majik-key\n```\n\nNo native bindings. Works in Node.js 18+, modern browsers, Deno, Bun, and Tauri.\n\n---\n\n## Command-Line Interface\n\n### `mjksig` — Sign, Verify, Seal, Inspect\n\nMajik Signature includes a full-featured CLI for working with signed files directly from your terminal.\n\nThe `mjksig` CLI supports:\n\n* Embedded and detached signing\n* MJKSMAP folder signing and verification\n* Multi-signature allowlists and co-signing\n* Envelope sealing\n* Signing-permission checks\n* Signature inspection\n* Batch workflows\n* Machine-readable `--json` output\n* Interactive and non-interactive signing-key passphrases\n\n### Run with `npx`\n\nNo global installation required:\n\n```bash\nnpx @majikah/majik-signature --help\n```\n\nSign a file:\n\n```bash\nnpx @majikah/majik-signature sign report.pdf --key alice.json\n```\n\nVerify a file:\n\n```bash\nnpx @majikah/majik-signature verify report.pdf\n```\n\nOr install globally and use the `mjksig` command directly:\n\n```bash\nnpm install -g @majikah/majik-signature\n```\n\n```bash\nmjksig --help\n```\n\nFor automation and CI environments, signing-key passphrases can be supplied through `MAJIK_KEY_PASSPHRASE`.\n\n### CLI Documentation\n\nFor the complete command reference, workflow combinations, options, compatibility rules, examples, exit codes, automation guidance, and `npx` usage, see:\n\n\n[![CLIREADME](https://img.shields.io/badge/Read_the_CLI_Documentation_Here-EA7F05?style=for-the-badge&logoColor=ea7f05)](./CLI_README.md)\n\n\n---\n\n## Quick Start\n\n### Signing Raw Content\n\n```typescript\nimport { MajikKey } from '@majikah/majik-key';\nimport { MajikSignature, CONTENT_TYPES } from '@majikah/majik-signature';\n\n// Step 1 — create and unlock a MajikKey\nconst mnemonic = MajikKey.generateMnemonic();\nconst key = await MajikKey.create(mnemonic, 'my-passphrase', 'My Signing Key');\n\n// Step 2 — sign content\nconst document = 'This is the original content of my document.';\nconst signature = await MajikSignature.sign(document, key, {\n  contentType: CONTENT_TYPES.TEXT,\n});\n\nconsole.log('Signer ID:', signature.signerId);\nconsole.log('Content Hash:', signature.contentHash);\nconsole.log('Timestamp:', signature.timestamp);\n\n// Step 3 — serialize for storage or transport\nconst serialized = signature.serialize(); // base64 string\n\n// Step 4 — verify (no private key needed)\nconst publicKeys = MajikSignature.publicKeysFromMajikKey(key);\nconst result = MajikSignature.verify(document, signature, publicKeys);\nconsole.log('Valid:', result.valid);\n\n// Shorthand — verify directly against a MajikKey (works even if locked)\nconst result2 = MajikSignature.verifyWithKey(document, signature, key);\n```\n\n---\n\n### File Embedding\n\n```typescript\nimport { MajikSignature } from '@majikah/majik-signature';\n\n// Sign a file and embed the signature into it\nconst { blob: signedBlob } = await MajikSignature.signFile(file, key);\n// signedBlob is the same format as file — PDF stays PDF, WAV stays WAV, etc.\n\n// Verify — returns one VerificationResult PER SIGNER\nconst results = await MajikSignature.verifyFile(signedBlob, key);\nconst allValid = results.every((r) => r.valid);\nconsole.log('All signatures valid:', allValid);\nconsole.log('Signed by:', results.map((r) => r.signerId));\n\n// Check if a file is signed, without verifying\nconst signed = await MajikSignature.isSigned(file);\n\n// Extract embedded signatures as typed instances — always an array\nconst sigs = await MajikSignature.extractFrom(signedBlob);\nfor (const sig of sigs) {\n  console.log(sig.signerId, sig.timestamp, sig.contentHash);\n}\n\n// Get the original clean file back (signature removed)\nconst originalBlob = await MajikSignature.stripFrom(signedBlob);\n```\n\n> **Note:** `verifyFile()` and `extractFrom()` return **arrays**, not single values — a file may carry more than one signature. Legacy single-signature files still return a one-item array, so existing call sites that only read `results[0]` continue to work.\n\n---\n\n### Detached Signing\n\nUse detached signing when the signature envelope needs to travel independently of the file — for example, storing envelopes in a database while files sit in blob storage, or verification pipelines that never touch the original file storage layer.\n\n```typescript\nimport { MajikSignature } from '@majikah/majik-signature';\n\n// Sign — returns the clean file bytes AND the envelope, separately\nconst { blob, envelope, signature } = await MajikSignature.signFileDetached(file, aliceKey);\n\n// The envelope can be stored/transported however you like:\nconst envelopeJson = envelope.toJSON();\nconst envelopeB64 = envelope.serialize();\nconst envelopeBinary = envelope.toMJKSIG(); // a portable .mjksig Blob\n\n// Verify later, against the same clean file bytes + the detached envelope\nconst results = await MajikSignature.verifyFileDetached(blob, envelope, aliceKey);\nconsole.log('Valid:', results.every((r) => r.valid));\n\n// Multiple signers can be added to the same detached envelope before it's ever embedded\nconst { envelope: envelope2 } = await MajikSignature.signFileDetached(blob, bobKey, {\n  existingEnvelope: envelope, // continue from Alice's envelope\n});\n```\n\nYou can attach a Trusted Timestamp to a detached signature in the same call:\n\n```typescript\nconst { envelope, signature } = await MajikSignature.signFileDetached(file, aliceKey, {\n  tsa: myTsaTimestamp,\n});\nconsole.log(signature.hasTSA); // true\n```\n\n---\n\n### Multi-Signature Files & Allowlists\n\n```typescript\nimport { MajikSignature } from '@majikah/majik-signature';\n\n// Alice signs first and restricts who else may sign\nconst { blob: step1 } = await MajikSignature.signFile(file, aliceKey, {\n  expectedSigners: [\n    MajikSignature.expectedSignerFromKey(aliceKey),\n    MajikSignature.expectedSignerFromKey(bobKey),\n  ],\n});\n\n// Bob signs — allowed, he's on the allowlist\nconst { blob: step2 } = await MajikSignature.signFile(step1, bobKey);\n\n// Someone not on the allowlist — rejected before any crypto runs\ntry {\n  await MajikSignature.signFile(step2, eveKey);\n} catch (err) {\n  // MajikSignatureAllowlistError\n}\n\n// Check status without signing\nconst { permitted, reason } = await MajikSignature.canSign(step2, eveKey);\n\n// Inspect who has signed and who is still pending\nconst { signed, pending } = await MajikSignature.getSignatories(step2);\nconsole.log('Pending:', pending.map((s) => s.signerId));\n```\n\n---\n\n### Sealing an Envelope\n\nOnly the issuer (the signer who established the allowlist) can seal a file, and only once every intended signer's status is where you want it to be.\n\n```typescript\nimport { MajikSignature } from '@majikah/majik-signature';\n\n// Alice (the issuer) seals the file — no further signatures accepted after this\nconst { blob: sealed, sealInfo } = await MajikSignature.seal(step2, aliceKey);\nconsole.log('Sealed at:', sealInfo.sealTimestamp);\n\n// Anyone can verify the seal itself (structural — not the individual signatures)\nconst sealResult = await MajikSignature.verifySeal(sealed);\nconsole.log('Seal valid:', sealResult.valid, 'sealed by:', sealResult.sealedBy);\n\n// Still verify the underlying cryptographic signatures separately\nconst sigResults = await MajikSignature.verifyFile(sealed, aliceKey);\n```\n\n---\n\n### Trusted Timestamps (TSA)\n\nTSA support works at the signature-object level, independent of file embedding. A TSA server signs a canonical payload binding your content's digest to a server-issued timestamp; you attach the resulting `MajikTimestamp` to your own signature.\n\n```typescript\nimport { MajikSignature } from '@majikah/majik-signature';\n\n// Client side — build the request payload from an existing signature\nconst signature = await MajikSignature.sign(document, key);\nconst tsaRequest = signature.buildTSARequestPayload();\n\n// Send tsaRequest to your TSA server, receive back a MajikTimestamp...\n// (server side, using a TSA-controlled MajikKey)\nconst timestamp = await MajikSignature.signTSA(\n  tsaRequest,\n  tsaKey,\n  { id: 'tsa.majikah.solutions', signerFingerprint: tsaKey.fingerprint },\n);\n\n// Client attaches and validates the timestamp\nsignature.addTSA(timestamp); // throws if the TSA signature or digest doesn't match\n\nconsole.log('Has TSA:', signature.hasTSA);\nconsole.log('TSA still valid:', signature.verifyTSA().valid);\n```\n\n---\n\n### Batch Signing a Folder\n\nSign every file in a folder, project export, or zip's contents in one call, packaged as a single manifest.\n\n```typescript\nimport { MajikSignature } from '@majikah/majik-signature';\n\nconst result = await MajikSignature.signBatchDetached(\n  [\n    { path: 'docs/report.pdf', blob: reportBlob },\n    { path: 'docs/appendix.pdf', blob: appendixBlob },\n    { path: 'assets/cover.png', blob: coverBlob },\n  ],\n  aliceKey,\n);\n\nif (result.mode === 'map') {\n  // result.map is a MajikSignatureMap instance; result.mapBlob is a ready-to-store .mjksmap Blob\n  zip.file('signatures.mjksmap', await result.mapBlob.arrayBuffer());\n}\n\n// Later — verify an extracted batch against the manifest\nconst map = await MajikSignatureMap.fromMJKSMAP(mapBlob);\n\n\nconst results = await MajikSignature.verifyFilesFromMjksMap(\n  map,\n  extractedFiles, // { path, blob }[]\n  publicKeys,\n);\n\nconst summary = MajikSignature.summarizeBatchVerification(results);\nconsole.log(`${summary.verified}/${summary.total} verified`);\n\nif (!summary.allValid) {\n  for (const r of results) {\n    if (r.status !== 'verified') console.log(r.path, r.status, r.reason);\n  }\n}\n```\n\nA batch-verified file that was renamed or moved after signing is still resolved correctly — matched by content hash and reported with `relocatedFrom` set to its original path, rather than showing up as missing.\n\n---\n\n### Verifying Signing Order\n\nBeyond confirming *who* signed a file, you can confirm they signed in a required *sequence* — e.g. \"Bob must sign before Dave.\" TSA-attested timestamps are preferred automatically when present; self-reported timestamps are used as a fallback and flagged accordingly.\n\n```typescript\nimport { MajikSignature } from '@majikah/majik-signature';\n\n// expectedOrder accepts MajikKey instances and/or ExpectedSigner objects, mixed freely\nconst result = await MajikSignature.verifyFileOrder(signedBlob, [bobKey, daveKey]);\n\nif (!result.allExpectedSigned) {\n  console.log('Still pending:', result.pendingSigners);\n} else if (!result.allValid) {\n  console.log('Invalid/tampered signature(s):', result.invalidSigners);\n} else if (!result.orderRespected) {\n  console.log('Signed out of order:', result.violations);\n} else if (result.softTieWarnings.length > 0) {\n  console.log('Valid, but note:', result.reason); // identical timestamps — order indistinguishable\n} else {\n  console.log('Signed in the expected order — all valid.');\n}\n\nif (result.usesUnattestedTimestamp) {\n  console.log('Note: order relied on at least one self-reported (non-TSA) timestamp.');\n}\n\n// Strict mode — fail if anyone outside expectedOrder signed at all\nconst strictResult = await MajikSignature.verifyFileOrder(\n  signedBlob,\n  [bobKey, daveKey],\n  { strict: true },\n);\n```\n\nThe same check works against a detached envelope via `verifyFileDetachedOrder(file, envelope, expectedOrder, options?)`.\n\n---\n\n### Chain Anchoring\n\nChain anchoring is a two-step handoff: this SDK prepares and reads anchor data; a separate chain-integration layer (e.g. `majik-notary`) is responsible for actually submitting and confirming the transaction.\n\n```typescript\nimport { MajikSignature } from '@majikah/majik-signature';\n\n// 1. File must be sealed first\nconst { permitted, reason } = await MajikSignature.canAnchor(sealedBlob);\n\n// 2. Build the canonical memo to submit on-chain (elsewhere, e.g. via majik-notary)\nconst memo = MajikSignature.buildChainAnchorMemo(sealInfo.sealHash);\n\n// 3. Once the external chain integration confirms the transaction, register the anchor\nconst blob = await MajikSignature.registerChainAnchor(sealedBlob, confirmedAnchor);\n\n// 4. Read anchors back later\nconst anchors = await MajikSignature.getChainAnchors(blob);\n```\n\n---\n\n### File Versioning & Multi-Sig Revisions\n\nUse this when signing also means visually stamping the file (drawn signatures, watermark overlays) — so each signer's turn changes the bytes, not just adds a detached signature.\n\n```typescript\nimport { MajikSignature } from '@majikah/majik-signature';\n\n// Issuer signs first — same as a normal first signature.\nconst { blob: signedV1 } = await MajikSignature.signFile(originalFile, aliceKey, {\n  expectedSigners: [\n    MajikSignature.expectedSignerFromKey(aliceKey),\n    MajikSignature.expectedSignerFromKey(bobKey),\n  ],\n});\n\n// Bob visually stamps the file (application-specific), THEN signs — passing\n// priorSignedFile so the new revision correctly chains onto Alice's.\nconst stampedByBob = await applyVisualStamp(signedV1, bobKey);\nconst { blob: signedV2 } = await MajikSignature.signFile(stampedByBob, bobKey, {\n  priorSignedFile: signedV1,\n  message: 'Approved pending final review',\n});\n\n// Tier 1 — self-contained verification, no archived revisions needed.\n// Proves every signer's commitment is genuine and the chain hasn't been\n// rewritten, using only the final file.\nconst chainResult = await MajikSignature.verifyFileChain(signedV2);\nconsole.log('Chain valid:', chainResult.chainValid);\nconsole.log('Latest signer valid:', chainResult.latest.valid);\n\n// Tier 2 — archive-assisted, full proof against retained revision bytes.\n// Accepts Blob, File, Uint8Array, or ArrayBuffer for each prior revision.\nconst revisionResult = await MajikSignature.verifyFileRevisions(\n  signedV2,\n  [originalFile, signedV1],\n);\nconsole.log('All revisions valid:', revisionResult.allValid);\nconsole.log('Complete set supplied:', revisionResult.isCompleteSet);\n```\n\n\n---\n\n## API Reference\n\n### Content Signing (bytes/strings)\n\n#### `MajikSignature.sign(content, key, options?)`\n\nSign raw bytes or a string with an unlocked `MajikKey`.\n\n- `content: Uint8Array | string` — content to sign; strings are UTF-8 encoded before hashing\n- `key: MajikKey` — an unlocked key with signing keys present\n- `options?: SignOptions`\n  - `contentType?: string` — advisory label (see `CONTENT_TYPES`)\n  - `timestamp?: string` — ISO 8601 override (defaults to `new Date().toISOString()`)\n  - `expectedSigners?: ExpectedSigner[]` — accepted at the type level for allowlist-establishing flows; ignored by the bare `sign()` call itself (only meaningful via the file-level allowlist APIs)\n\n**Returns:** `Promise<MajikSignature>`\n**Throws:** `MajikSignatureKeyError` if the key is locked or has no signing keys.\n\n---\n\n#### `MajikSignature.verify(content, signature, publicKeys)`\n\nVerify a signature against content and the signer's public keys. Both Ed25519 and ML-DSA-87 must pass.\n\n**Returns:** `VerificationResult`\n\n```typescript\n{\n  valid: boolean;\n  signerId?: string;\n  contentHash?: string;\n  timestamp: string;\n  contentType?: string;\n  handler?: string;  // present when result came from a file-level verify\n  reason?: string;   // present when valid is false\n}\n```\n\n---\n\n#### `MajikSignature.verifyWithKey(content, signature, key)`\nConvenience wrapper — verifies directly against a `MajikKey` instance. Works even if the key is locked, since only public keys are needed.\n\n#### `MajikSignature.publicKeysFromMajikKey(key)`\nExtracts `{ signerId, edPublicKey, mlDsaPublicKey }` from a `MajikKey` for use with `verify()`. Works on locked keys.\n\n#### `signature.extractPublicKeys()` *(instance method)*\nExtracts `{ signerId, edPublicKey, mlDsaPublicKey }` **from the signature envelope itself**, rather than from a `MajikKey`. Useful when you only have a serialized signature and need its embedded public keys — for example, to independently verify a TSA token via `verifyTSA()`. Validates key lengths before returning.\n\n> ⚠️ Keys extracted this way are **self-asserted by the envelope** — always cross-check the returned `signerId` against a trusted source before relying on the result. See [Security Considerations](#security-considerations).\n\n#### `signature.validate()` / `signature.isValid()`\n`validate()` re-runs structural validation on the signature's own JSON shape and throws on failure; `isValid()` is the non-throwing boolean wrapper. Useful as a cheap sanity check after deserializing from untrusted storage, before running full cryptographic verification.\n\n#### `MajikSignature.fromJSON(json)` / `MajikSignature.deserialize(base64)`\nReconstruct a `MajikSignature` instance from stored JSON or a base64 string.\n\n---\n\n### File Embedding API\n\nThese methods sign or verify files with the signature envelope embedded directly in the file. Format is auto-detected from magic bytes and MIME type.\n\n#### `MajikSignature.signFile(file, key, options?)`\n\nSign a file and embed the signature in one call. Strips any existing envelope first, so re-signing is always safe.\n\n- `file: Blob`\n- `key: MajikKey`\n- `options?`\n  - `contentType?: string`\n  - `timestamp?: string`\n  - `mimeType?: string` — override auto-detected MIME type\n  - `expectedSigners?: ExpectedSigner[]` — only honored on the **first** signature; establishes a signing allowlist\n\n**Returns:** `Promise<{ blob: Blob; signature: MajikSignature; envelope: MajikSignatureEnvelope; handler: string; mimeType: string }>`\n\n---\n\n#### `MajikSignature.verifyFile(file, keyOrPublicKeys, options?)`\n\nVerify every signature embedded in a file. Accepts a `MajikKey` or raw `MajikSignerPublicKeys`.\n\n- `options?.expectedSignerId?: string` — verify only one specific signer\n- `options?.mimeType?: string`\n\n**Returns:** `Promise<VerificationResult[]>` — one result per signer in the envelope; legacy single-sig files return a one-item array.\n\n---\n\n#### `signature.embedIn(file, options?)` *(instance method)*\nEmbed an already-computed `MajikSignature` into a file. The signature must have been created from the file's original bytes *before* embedding — use `signFile()` if you want signing and embedding together in one step.\n\n**Returns:** `Promise<Blob>`\n\n#### `MajikSignature.extractFrom(file, options?)`\nExtract every embedded signature as typed `MajikSignature` instances.\n\n**Returns:** `Promise<MajikSignature[]>` — empty array if the file has no envelope.\n\n#### `MajikSignature.stripFrom(file, options?)`\nReturn a clean copy of the file with the embedded envelope removed — exactly the bytes that were originally signed.\n\n**Returns:** `Promise<Blob>`\n\n#### `MajikSignature.isSigned(file, options?)`\nStructural presence check — does the file contain an envelope at all? Does not verify. Use as a fast guard before calling `verifyFile()`.\n\n**Returns:** `Promise<boolean>`\n\n---\n\n### Detached Signing & MajikSignatureEnvelope API\n\n#### `MajikSignature.signFileDetached(file, key, options?)`\n\nSign a file and return the resulting envelope **detached** — the returned `blob` is the clean, stripped file; the envelope travels separately.\n\n- `options?.existingEnvelope?: MajikSignatureEnvelope | MajikSignatureEnvelopeJSON | Uint8Array | Blob` — continue signing an envelope that started out-of-band (any of: an instance, its JSON shape, raw `.mjksig` bytes, or a `.mjksig` Blob)\n- `options?.expectedSigners?: ExpectedSigner[]` — same allowlist-establishing semantics as `signFile()`\n- `options?.tsa?: MajikTimestamp` — attach a Trusted Timestamp to this signer's entry before it's added to the envelope\n\n**Returns:** `Promise<{ blob: Blob; envelope: MajikSignatureEnvelope; signature: MajikSignature; handler: string; mimeType: string }>`\n\n#### `MajikSignature.verifyFileDetached(file, envelope, keyOrPublicKeys, options?)`\nVerify a file against a detached envelope (instance, JSON, `.mjksig` bytes, or Blob — accepted via the same flexible shape as `existingEnvelope` above). Strips the file first, in case it also happens to carry an embedded envelope.\n\n**Returns:** `Promise<VerificationResult[]>`\n\n---\n\n#### `MajikSignatureEnvelope`\n\nThe behavior-rich, immutable in-memory counterpart to the wire-format `MultiSigEnvelope` JSON. Every `with*` method returns a **new** instance — the receiver is never mutated. This is the class returned by `signFileDetached()`, accepted by `verifyFileDetached()`, and underlying every multi-sig query method.\n\n**State predicates:** `isSealed()`, `hasAllowlist()`, `isFirstSigner()`, `isMultiSig()`, `hasMultipleSignatories()`, `isIssuer(keyOrFingerprint)`\n\n**Lookup:** `findSignature(signerId)`, `get signatures`, `get allowlist`, `get chainAnchors`\n\n**Allowlist enforcement:** `checkAllowlist(key)`, `assertCanSign(key)` (throws), `canSign(key)` (non-throwing), `verifyAllowlistIntegrity()`\n\n**Builders (immutable):** `withSignature(sig)`, `withAllowlist(allowlist, signerId)`, `withSeal(sealedBy, timestamp?)`, `withChainAnchor(anchor)`\n\n**Seal queries:** `verifySeal()`, `getSealInfo()`, `canAnchor()`\n\n**Signatory resolution:** `resolveIssuer()`, `getSignatories(filter?)`, `getEnvelopeInfo()`\n\n**Serialization:** `toJSON()`, `serialize()` / `MajikSignatureEnvelope.deserialize(base64)`, `toMJKSIG()` / `toMJKSIGBytes()` / `MajikSignatureEnvelope.fromMJKSIG(input)`, `MajikSignatureEnvelope.isMJKSIG(input)`, `MajikSignatureEnvelope.getMJKSIGVersion(input)`\n\n**Creation / parsing:** `MajikSignatureEnvelope.empty()`, `MajikSignatureEnvelope.fromJSON(json)` (also transparently promotes legacy bare single-sig JSON), `MajikSignatureEnvelope.from(input)` (accepts an instance, JSON, `.mjksig` bytes, or Blob — the universal entry point used internally by every detached-envelope-accepting method)\n\n**Validation:** `validate()` (throws), `isValid()` (boolean)\n\nSee [Binary Container Formats](#binary-container-formats-mjksig--mjksmap) for details on `.mjksig`.\n\n---\n\n### Multi-Signature & Allowlist API\n\n#### `MajikSignature.expectedSignerFromKey(key)`\nBuilds an `ExpectedSigner` entry (`{ signerId, edPublicKey, mlDsaPublicKey }`) from a `MajikKey`, for use in `signFile()`'s / `signFileDetached()`'s `expectedSigners` option. The key does not need to be unlocked.\n\n#### `MajikSignature.getAllowlist(file, options?)`\n**Returns:** `Promise<ExpectedSigner[] | null>` — `null` for open-signing or unsigned files.\n\n#### `MajikSignature.canSign(file, key, options?)`\nChecks whether a key is permitted to add a signature — accounts for seal status and full three-field allowlist membership (`signerId` + both public keys).\n\n**Returns:** `Promise<{ permitted: boolean; reason?: string }>`\n\n#### `MajikSignature.getSignatories(file, options?, filter?)`\nReturns the full signing-status breakdown of a file. `filter` narrows which slice of the result is populated, but the full `SignatoriesResult` shape is always returned.\n\n**Returns:** `Promise<SignatoriesResult | null>`\n\n```typescript\n{\n  all: SignatoryInfo[];\n  signed: SignatoryInfo[];\n  pending: SignatoryInfo[];\n}\n```\n\nConvenience aliases: `getSignedSignatories()`, `getPendingSignatories()`, `getAllSignatories()`.\n\n#### `MajikSignature.getIssuer(file, options?)`\nReturns the signatory who established the allowlist (or, for open-signing files, the first signer). **Returns:** `Promise<SignatoryInfo | null>`\n\n#### `MajikSignature.getEnvelopeInfo(file, options?)`\nOne call, full picture — `isMultiSig`, `isSealed`, `issuer`, `signatories`, `allowlist`, `signatureCount`, and `sealInfo` when sealed. Built for rendering a signing-status UI without multiple round trips.\n\n**Returns:** `Promise<EnvelopeInfo | null>`\n\n#### `MajikSignature.isMultiSig(file, options?)`\n`true` only when the file has a **restricted** multi-sig envelope (an allowlist with more than one expected signer). `false` for unsigned, open-signing, or single-signer files.\n\n---\n\n### Sealing API\n\n#### `MajikSignature.seal(file, key, options?)`\nOnly the issuer may seal, and only once. Computes a SHA3-512 hash over all current signatories plus a seal timestamp — this is a hash-based integrity lock, not a new cryptographic signature.\n\n**Returns:** `Promise<{ blob: Blob; sealInfo: SealInfo; handler: string; mimeType: string }>`\n\n#### `MajikSignature.verifySeal(file, options?)`\nRecomputes and compares the seal hash. Does **not** verify individual signer signatures — call `verifyFile()` for that.\n\n**Returns:** `Promise<SealVerificationResult>`\n\n#### `MajikSignature.getSealInfo(file, options?)`\n**Returns:** `Promise<SealInfo | null>` — `{ sealHash, sealTimestamp, sealedBy }`, without performing verification.\n\n#### `MajikSignature.isSealed(file, options?)`\nStructural check only. **Returns:** `Promise<boolean>`\n\n---\n\n### Trusted Timestamps API\n\n#### `signature.buildTSARequestPayload()`\nBuilds a `MajikTSARequest` (`{ digest: { algorithm: \"SHA-256\", value } }`) from an existing signature, ready to send to a TSA server.\n\n#### `MajikSignature.signTSA(request, key, tsa, options?)`\n**Server-side.** Signs a TSA payload and returns a complete `MajikTimestamp`, including a server-generated nonce and timestamp.\n\n#### `signature.addTSA(timestamp)`\nAttaches and validates a `MajikTimestamp` on an existing signature instance. Throws `MajikSignatureError` if a TSA is already present or if the digest doesn't match, or `MajikSignatureVerificationError` if the TSA signature itself doesn't verify. A TSA, once attached, cannot be replaced.\n\n#### `signature.verifyTSA()`\nRe-verifies the attached TSA's own signature — useful after deserializing a signature from storage.\n\n#### `signature.hasTSA`\n`boolean` getter.\n\n---\n\n### Batch Signing & MajikSignatureMap API\n\n#### `MajikSignature.signBatchDetached(files, key, options?)`\n\nSign a batch of files (e.g. a folder or zip's contents) as detached envelopes.\n\n- `files: { path: string; blob: Blob }[]` — every path must be unique within the batch\n- `options?.mode?: \"map\" | \"separate\"` — `\"map\"` (default) produces one `MajikSignatureMap` covering the whole batch; `\"separate\"` produces one `.mjksig` Blob per file\n- `options?.continueOnError?: boolean` — default `false` (abort the whole batch on the first failure); set `true` to collect failures per-file and continue\n\n**Returns:**\n```typescript\n| { mode: \"map\"; map: MajikSignatureMap; mapBlob: Blob; failures: BatchSignFailure[] }\n| { mode: \"separate\"; signatures: { path: string; blob: Blob }[]; failures: BatchSignFailure[] }\n```\n\n#### `MajikSignature.verifyFilesFromMjksMap(map, files, publicKeys, options?)`\nVerify a batch of extracted files against a `MajikSignatureMap`. Never throws per-file by default — every outcome (missing, tampered, relocated-but-valid, invalid, verified) is reported so you can render a full status table in one pass.\n\n- `options?.expectedSignerId?: string`\n- `options?.requireAllPresent?: boolean` — escalate a missing file to a thrown error instead of a per-file `\"not_in_map\"` result\n\n**Returns:** `Promise<FileVerifyResult[]>`\n\n```typescript\n{\n  path: string;\n  status: \"verified\" | \"invalid\" | \"tampered\" | \"not_in_map\";\n  results?: VerificationResult[];\n  reason?: string;\n  relocatedFrom?: string; // present only when found by content match at a different path\n}\n```\n\n#### `MajikSignature.verifyFilesFromMjksMapWithKey(map, files, key, options?)`\nConvenience overload — resolves public keys from a `MajikKey` instead of requiring `MajikSignerPublicKeys` directly.\n\n#### `MajikSignature.summarizeBatchVerification(results)`\nOne-glance pass/fail summary over a `FileVerifyResult[]`.\n\n**Returns:** `{ total, verified, invalid, tampered, notInMap, allValid }`\n\n---\n\n#### `MajikSignatureMap`\n\nThe behavior-rich, immutable class backing `.mjksmap`. Keyed by **path**, not content hash alone — duplicate-content files across a batch are legitimate and must not collide.\n\n**Lookup:** `getEntry(path)`, `hasEntry(path)`, `findEntry(path, file)` (hash-verified against stored bytes), `findEntriesByHash(file)`, `resolveEntry(path, file)` (relocation-tolerant — tries the given path first, falls back to content match), `getEnvelope(path)`, `getAllEnvelopes()`\n\n**Builders (immutable):** `withEntry(entry)`, `withoutEntry(path)`\n\n**Serialization:** `toJSON()`, `toMJKSMAP()` / `toMJKSMAPBytes()` / `MajikSignatureMap.fromMJKSMAP(input)`, `MajikSignatureMap.isMJKSMAP(input)`\n\n**Creation / parsing:** `MajikSignatureMap.empty()`, `MajikSignatureMap.fromJSON(json)`, `MajikSignatureMap.from(input)` (accepts an instance, JSON, `.mjksmap` bytes, or Blob)\n\n**Validation:** `validate()` (throws), `isValid()` (boolean)\n\n`resolveEntry()`'s status values: `\"path_match\"` (found, content unchanged), `\"path_tampered\"` (found at that path, content no longer matches), `\"relocated\"` (not at the given path, but found elsewhere by content hash), `\"not_found\"`.\n\nSee [Binary Container Formats](#binary-container-formats-mjksig--mjksmap) for details on `.mjksmap`.\n\n---\n\n### Signature Order Verification API\n\nVerifies that a set of expected signers signed in a required chronological sequence. TSA-attested timestamps (`tsa.payload.timestamp`) are preferred automatically over self-reported ones (`timestamp`); every result flags whether any comparison relied on a self-reported, non-attested clock.\n\n#### `MajikSignature.verifyFileOrder(file, expectedOrder, options?)`\n\n- `expectedOrder: (MajikKey | ExpectedSigner)[]` — array position is the expected chronological position; `MajikKey` instances and `ExpectedSigner` objects can be mixed freely and are normalized internally\n- `options?.strict?: boolean` — default `false`. When `true`, any signer present in the envelope but absent from `expectedOrder` fails the overall result\n\n**Returns:** `Promise<SignatureOrderResult>`\n\n```typescript\n{\n  valid: boolean;                  // true only if everyone expected signed, all valid, order respected (and, in strict mode, no extra signers)\n  allExpectedSigned: boolean;\n  allValid: boolean;\n  orderRespected: boolean;\n  strict: boolean;\n  unexpectedSigners: string[];     // populated only when strict is true\n  pendingSigners: string[];\n  invalidSigners: string[];\n  violations: OrderViolation[];    // { earlier, later, earlierTimestamp, laterTimestamp }\n  usesUnattestedTimestamp: boolean;\n  softTieWarnings: SoftTieWarning[]; // identical timestamps between two signers — order indistinguishable, doesn't fail `valid`\n  signers: SignerOrderStatus[];\n  reason?: string;\n}\n```\n\n#### `MajikSignature.verifyFileDetachedOrder(file, envelope, expectedOrder, options?)`\nSame semantics as `verifyFileOrder()`, against a detached envelope (instance, JSON, `.mjksig` bytes, or Blob).\n\n#### `MajikSignature.normalizeExpectedOrder(expectedOrder)`\nNormalizes a mixed array of `MajikKey` instances and/or `ExpectedSigner` objects into a plain `ExpectedSigner[]`. Exposed standalone in case you want to build and cache the normalized order ahead of time, without immediately verifying.\n\n> Order comparisons only run between signers who **both** signed and **both** produced a valid signature — an invalid signature's timestamp isn't trustworthy, so it's excluded from the ordering check but still reported via `invalidSigners`. Order verification checks the relative sequence of your `expectedOrder` list; in non-strict mode it does not detect an unlisted signer signing *between* two expected signers — use `strict: true` if the presence of any signer outside your expected set must itself be treated as a failure.\n\n---\n\n### Chain Anchoring API (Experimental)\n\n> ⚠️ **These APIs are explicitly marked experimental in source and are not yet API-stable.** Expect breaking changes across minor versions.\n\n#### `MajikSignature.canAnchor(file, options?)`\nChecks whether a file is eligible for chain anchoring (requires the envelope to be sealed).\n\n**Returns:** `Promise<{ permitted: boolean; reason?: string }>`\n\n#### `MajikSignature.buildChainAnchorMemo(sealHash)`\nBuilds the canonical, domain-separated memo string (`\"majik-notary-v-1:\" + sealHash`) intended to be submitted on-chain by an external integration layer. Does not talk to any chain itself.\n\n#### `MajikSignature.registerChainAnchor(file, anchor, options?)`\nEmbeds an **already-confirmed** `MajikChainAnchor` into the file's envelope. The caller is responsible for submitting and confirming the transaction beforehand (e.g. via a separate chain-integration product). Upserts by `anchor.id`, so retried registration doesn't produce duplicates.\n\n**Returns:** `Promise<Blob>`\n\n#### `MajikSignature.getChainAnchors(file, options?)`\n**Returns:** `Promise<MajikChainAnchor[]>` — empty array if none, or if the file has no envelope.\n\n---\n\n### File Versioning API\n\n#### `MajikSignature.signFile(file, key, options?)` — versioning-relevant options\n- `options?.priorSignedFile?: Blob` — the file as received, before this signer's own visual change. Presence of this option is what makes the call a **revision** (2nd signer+) rather than a fresh signature: the prior file's embedded envelope is fully self-verified (commitment check, per §2.4 of the MJKSIG spec) before being extended.\n- `options?.message?: string` — optional human-readable note stored on this revision's `FileVersion` entry.\n\nThrows `MajikSignatureError` if `priorSignedFile` has no embedded envelope, or if any existing signature in it fails verification.\n\n#### `MajikSignature.verifyFileChain(file, options?)`\nSelf-contained (Tier 1) verification — no archived revisions required. Verifies the most recent signer fully against the file's current bytes, and every earlier signer via commitment-only verification (`verifyCommitment()`, recomputed from stored fields) plus a recomputed `versionChainHash` check against the current `fileVersions`.\n\n**Returns:** `Promise<FileChainVerification>`\n```typescript\n{\n  latest: VerificationResult;\n  history: RevisionCommitmentResult[]; // VerificationResult & { commitmentOnly: true }\n  chainValid: boolean;\n}\n```\n\n#### `MajikSignature.verifyFileRevisions(finalFile, revisions, options?)`\nArchive-assisted (Tier 2) verification — full proof against retained revision bytes. `revisions` accepts any mix of `Blob`, `File`, `Uint8Array`, or `ArrayBuffer`; the final file is included automatically, no need to pass it twice.\n\n- `options?.resolvePublicKeys?: (signerId: string) => MajikSignerPublicKeys | Promise<MajikSignerPublicKeys>` — defaults to trusting the envelope's embedded keys, same as `verify()`; pass a resolver to cross-check against an external registry instead.\n- `options?.now?: Date`\n\n**Returns:** `Promise<RevisionSetVerification>`\n```typescript\n{\n  allValid: boolean;      // every fileVersions entry matched a supplied revision AND verified\n  isCompleteSet: boolean; // the supplied revisions cover the whole chain, no gaps\n  results: RevisionCheckResult[]; // per-version status: \"verified\" | \"unmatched\" | \"chain_broken\" | \"signature_invalid\"\n}\n```\n\n#### `MajikSignature.verifyCommitment(signature, publicKeys, now?)`\nVerifies a signature's cryptographic commitment (Ed25519 + ML-DSA-87 over the recomputed canonical payload, plus expiry) **without requiring the original content bytes**. Used internally by `verifyFileChain()` for every signer but the latest; exposed directly for callers building their own chain-inspection tooling.\n\n**Returns:** `RevisionCommitmentResult` — a `VerificationResult` with `commitmentOnly: true`.\n\n---\n\n### Image Stamping (Experimental)\n\n> ⚠️ **These APIs are explicitly marked experimental in source and are not yet API-stable.** Expect breaking changes across minor versions.\n\n`MajikSignature.stampImage()`, `verifyStamp()`, `inspectStamp()`, and `isStamped()` implement compression-resistant signature embedding directly into image pixel/frequency data (as opposed to metadata), intended for cases where metadata may be stripped by re-compression. Consult the source directly before depending on this surface in production.\n\n---\n\n### Serialization\n\n#### `signature.toJSON()` / `MajikSignature.fromJSON(json)`\nFull round-trip to/from the `MajikSignatureJSON` shape.\n\n#### `signature.serialize()` / `MajikSignature.deserialize(base64)`\nCompact base64 transport format — useful for HTTP headers or database columns.\n\n#### `envelope.toJSON()` / `MajikSignatureEnvelope.fromJSON(json)`\nFull round-trip to/from the `MultiSigEnvelope` shape, including transparent promotion of legacy bare single-sig JSON.\n\n#### `envelope.serialize()` / `MajikSignatureEnvelope.deserialize(base64)`\nBase64 transport for a full multi-sig envelope.\n\n#### `envelope.toMJKSIG()` / `MajikSignatureEnvelope.fromMJKSIG(input)`\nSelf-describing binary container for a detached envelope — see [Binary Container Formats](#binary-container-formats-mjksig--mjksmap).\n\n```typescript\nconst signature = await MajikSignature.sign(content, key);\n\nconst json = signature.toJSON();\nawait db.signatures.insert({ id: docId, sig: json });\n\nconst b64 = signature.serialize();\nres.setHeader('X-Majik-Signature', b64);\n\nconst restored = MajikSignature.fromJSON(json);\nconst restoredFromB64 = MajikSignature.deserialize(b64);\n```\n\n---\n\n## Supported File Formats\n\nHandlers are tried in order; the first one whose `canHandle()` matches wins. If nothing matches, the **universal trailer fallback** always applies — meaning *every* file type is signable, even ones with no dedicated handler.\n\n| Format(s)                              ","readmeFilename":"README.md"}