24 lines
1.2 KiB
JavaScript
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;
|