/** * password-crypto.js 의 crypto.subtle 폴백용 forge 커스텀 번들 엔트리. * * 원격 오리진 HTTP(비 secure context)에서는 브라우저가 crypto.subtle 을 노출하지 않는다. * 그 환경에서도 같은 ENC1 봉투(RSA-OAEP SHA-256/MGF1-SHA-256 + AES-256-GCM)를 만들려고 * node-forge 를 쓰는데, 배포판 forge.min.js 는 283KB 라 필요한 모듈만 묶는다. * * 빌드: npm run forge:build * → src/main/resources/static/js/lib/forge-crypto.min.js (약 111KB, gzip 31KB) * * 넣지 않은 것: x509/pem/pbe/pkcs12(인증서 파싱), hmac, des, ed25519 등. 봉투 생성에 안 쓴다. * pki.js 전체 대신 rsa.js 만 require 하는 이유도 같다 — publicKeyFromAsn1 은 rsa.js 에 있다. */ var forge = require('node-forge/lib/forge'); require('node-forge/lib/util'); // ByteBuffer, encodeUtf8 require('node-forge/lib/asn1'); // SPKI DER 파싱 require('node-forge/lib/sha256'); // OAEP 해시 · MGF1 require('node-forge/lib/pkcs1'); // RSA-OAEP 패딩 require('node-forge/lib/rsa'); // pki.publicKeyFromAsn1, publicKey.encrypt require('node-forge/lib/aes'); // cipher 'AES-GCM' 등록 module.exports = forge;