Files
Rinjae 53c3b0ee7e
eapim-portal CI / build (push) Has been cancelled
eapim-portal Test / test (push) Has been cancelled
포탈 암호화 모듈 추가: forge-crypto.min.js 라이브러리 도입
2026-09-02 16:59:25 +09:00

24 lines
1.2 KiB
JavaScript

/**
* 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;