バッチファイル構造
最終更新
役に立ちましたか?
役に立ちましたか?
const jose = require("jose");
const { pem2jwk } = require("pem-jwk");
async function generateJWS() {
const issuerSignPrivateKey = `-----BEGIN RSA PRIVATE KEY-----
................................................................
................................................................
................................................................
-----END RSA PRIVATE KEY-----`;
// PEM形式の秘密鍵をJWK形式に変換する
const privateKeyJWK = pem2jwk(issuerSignPrivateKey);
// JWKをキーオブジェクトにインポートする
const privateKey = await jose.importJWK(privateKeyJWK);
// 署名するペイロードを作成する(オブジェクトとして)
const input = {"header": {...},"records": [...]};
// 文字列化して空白を削除する
const payload = JSON.stringify(input).replace(/\s+|\r?\n|\r|\n|\t/g, "");
const encode = new TextEncoder().encode(payload);
// 秘密鍵でペイロードに署名する
const jws = await new jose.CompactSign(encode)
.setProtectedHeader({ alg: "PS256", kid: "KID_VALUE" })
.sign(privateKey);
// 署名を作成するためにJWSを分割する
const signParts = jws.split(".");
const signature = signParts[0] + ".." + signParts[2];
console.log("Signature:", signature);
}
// 関数を呼び出す
generateJWS();{
"header": {
"batchId": "0000000000001111111111FF",
"seqNumber": "005",
"operation": "VIRTUAL_CARD_REGISTRATION",
"issuerId": "BANK_ABC"},
"records": [
{
"rowId": 0,
"virtualCardRegistrationRequest": {
"card":{
"id":"FWSPMC000000000fcb2f4136b2f4136a0532d2f4136a0532",
"encryptedData":"KDlTthhZTGufMY…….xPSUrfmqCHXaI9wOGY=",
"scheme":"MASTERCARD"}
}
},
{
"rowId": 1,
"virtualCardRegistrationRequest": {
"card":{
"id":"FWSPMC000000000fcb2f4136b2f4136a0532d2f4136a0532",
"encryptedData":"KDlTthhZTGufMY…….xPSUrfmqCHXaI9wOGY=",
"scheme":"MASTERCARD"}
}
}
],
"signature": "AxY8DctDa….GlsbGljb3RoZQ="
}