@node-projects/excelforge 2.4.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/FUNDING.yml +4 -0
- package/FEATURES.md +294 -0
- package/README.md +628 -12
- package/dist/core/SharedStrings.js +6 -2
- package/dist/core/SharedStrings.js.map +1 -1
- package/dist/core/Workbook.d.ts +43 -1
- package/dist/core/Workbook.js +881 -58
- package/dist/core/Workbook.js.map +1 -1
- package/dist/core/WorkbookReader.d.ts +18 -4
- package/dist/core/WorkbookReader.js +1386 -20
- package/dist/core/WorkbookReader.js.map +1 -1
- package/dist/core/Worksheet.d.ts +136 -2
- package/dist/core/Worksheet.js +828 -63
- package/dist/core/Worksheet.js.map +1 -1
- package/dist/core/types.d.ts +311 -5
- package/dist/core/types.js +12 -1
- package/dist/core/types.js.map +1 -1
- package/dist/features/ChartBuilder.d.ts +9 -1
- package/dist/features/ChartBuilder.js +140 -14
- package/dist/features/ChartBuilder.js.map +1 -1
- package/dist/features/CsvModule.d.ts +11 -0
- package/dist/features/CsvModule.js +137 -0
- package/dist/features/CsvModule.js.map +1 -0
- package/dist/features/Encryption.d.ts +6 -0
- package/dist/features/Encryption.js +806 -0
- package/dist/features/Encryption.js.map +1 -0
- package/dist/features/FormControlBuilder.d.ts +6 -0
- package/dist/features/FormControlBuilder.js +135 -0
- package/dist/features/FormControlBuilder.js.map +1 -0
- package/dist/features/FormulaEngine.d.ts +22 -0
- package/dist/features/FormulaEngine.js +498 -0
- package/dist/features/FormulaEngine.js.map +1 -0
- package/dist/features/HtmlModule.d.ts +22 -0
- package/dist/features/HtmlModule.js +1441 -0
- package/dist/features/HtmlModule.js.map +1 -0
- package/dist/features/JsonModule.d.ts +10 -0
- package/dist/features/JsonModule.js +76 -0
- package/dist/features/JsonModule.js.map +1 -0
- package/dist/features/PdfModule.d.ts +30 -0
- package/dist/features/PdfModule.js +1567 -0
- package/dist/features/PdfModule.js.map +1 -0
- package/dist/features/PivotTableBuilder.d.ts +7 -0
- package/dist/features/PivotTableBuilder.js +170 -0
- package/dist/features/PivotTableBuilder.js.map +1 -0
- package/dist/features/Signing.d.ts +12 -0
- package/dist/features/Signing.js +326 -0
- package/dist/features/Signing.js.map +1 -0
- package/dist/features/TableBuilder.js +2 -2
- package/dist/features/TableBuilder.js.map +1 -1
- package/dist/index-min.js +609 -147
- package/dist/index.d.ts +19 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/styles/StyleRegistry.d.ts +14 -0
- package/dist/styles/StyleRegistry.js +95 -30
- package/dist/styles/StyleRegistry.js.map +1 -1
- package/dist/utils/helpers.d.ts +4 -0
- package/dist/utils/helpers.js +64 -14
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/zip.js +145 -73
- package/dist/utils/zip.js.map +1 -1
- package/dist/vba/VbaProject.d.ts +31 -0
- package/dist/vba/VbaProject.js +576 -0
- package/dist/vba/VbaProject.js.map +1 -0
- package/dist/vba/cfb.d.ts +7 -0
- package/dist/vba/cfb.js +352 -0
- package/dist/vba/cfb.js.map +1 -0
- package/dist/vba/ovba.d.ts +2 -0
- package/dist/vba/ovba.js +137 -0
- package/dist/vba/ovba.js.map +1 -0
- package/package.json +4 -3
- package/validator.cs +0 -155
- package/validatorEpplus.cs +0 -27
- package/validatorReadData.cs +0 -111
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
function derLen(len) {
|
|
2
|
+
if (len < 0x80)
|
|
3
|
+
return new Uint8Array([len]);
|
|
4
|
+
if (len < 0x100)
|
|
5
|
+
return new Uint8Array([0x81, len]);
|
|
6
|
+
if (len < 0x10000)
|
|
7
|
+
return new Uint8Array([0x82, len >> 8, len & 0xFF]);
|
|
8
|
+
return new Uint8Array([0x83, (len >> 16) & 0xFF, (len >> 8) & 0xFF, len & 0xFF]);
|
|
9
|
+
}
|
|
10
|
+
function derTag(tag, content) {
|
|
11
|
+
const len = derLen(content.length);
|
|
12
|
+
const out = new Uint8Array(1 + len.length + content.length);
|
|
13
|
+
out[0] = tag;
|
|
14
|
+
out.set(len, 1);
|
|
15
|
+
out.set(content, 1 + len.length);
|
|
16
|
+
return out;
|
|
17
|
+
}
|
|
18
|
+
function derSeq(...items) {
|
|
19
|
+
let total = 0;
|
|
20
|
+
for (const i of items)
|
|
21
|
+
total += i.length;
|
|
22
|
+
const body = new Uint8Array(total);
|
|
23
|
+
let off = 0;
|
|
24
|
+
for (const i of items) {
|
|
25
|
+
body.set(i, off);
|
|
26
|
+
off += i.length;
|
|
27
|
+
}
|
|
28
|
+
return derTag(0x30, body);
|
|
29
|
+
}
|
|
30
|
+
function derSet(...items) {
|
|
31
|
+
let total = 0;
|
|
32
|
+
for (const i of items)
|
|
33
|
+
total += i.length;
|
|
34
|
+
const body = new Uint8Array(total);
|
|
35
|
+
let off = 0;
|
|
36
|
+
for (const i of items) {
|
|
37
|
+
body.set(i, off);
|
|
38
|
+
off += i.length;
|
|
39
|
+
}
|
|
40
|
+
return derTag(0x31, body);
|
|
41
|
+
}
|
|
42
|
+
function derOid(oid) {
|
|
43
|
+
const bytes = [40 * oid[0] + oid[1]];
|
|
44
|
+
for (let i = 2; i < oid.length; i++) {
|
|
45
|
+
let v = oid[i];
|
|
46
|
+
if (v < 128) {
|
|
47
|
+
bytes.push(v);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
const parts = [];
|
|
51
|
+
while (v > 0) {
|
|
52
|
+
parts.unshift(v & 0x7F);
|
|
53
|
+
v >>= 7;
|
|
54
|
+
}
|
|
55
|
+
for (let j = 0; j < parts.length - 1; j++)
|
|
56
|
+
parts[j] |= 0x80;
|
|
57
|
+
bytes.push(...parts);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return derTag(0x06, new Uint8Array(bytes));
|
|
61
|
+
}
|
|
62
|
+
function derInt(n) {
|
|
63
|
+
if (n === 0)
|
|
64
|
+
return derTag(0x02, new Uint8Array([0]));
|
|
65
|
+
const bytes = [];
|
|
66
|
+
let v = n;
|
|
67
|
+
while (v > 0) {
|
|
68
|
+
bytes.unshift(v & 0xFF);
|
|
69
|
+
v >>= 8;
|
|
70
|
+
}
|
|
71
|
+
if (bytes[0] & 0x80)
|
|
72
|
+
bytes.unshift(0);
|
|
73
|
+
return derTag(0x02, new Uint8Array(bytes));
|
|
74
|
+
}
|
|
75
|
+
function derOctetStr(data) {
|
|
76
|
+
return derTag(0x04, data);
|
|
77
|
+
}
|
|
78
|
+
function derUtf8Str(s) {
|
|
79
|
+
return derTag(0x0C, new TextEncoder().encode(s));
|
|
80
|
+
}
|
|
81
|
+
function derExplicit(tag, content) {
|
|
82
|
+
return derTag(0xA0 | tag, content);
|
|
83
|
+
}
|
|
84
|
+
function derBool(val) {
|
|
85
|
+
return derTag(0x01, new Uint8Array([val ? 0xFF : 0x00]));
|
|
86
|
+
}
|
|
87
|
+
const OID_SHA256 = [2, 16, 840, 1, 101, 3, 4, 2, 1];
|
|
88
|
+
const OID_RSA_ENCRYPTION = [1, 2, 840, 113549, 1, 1, 1];
|
|
89
|
+
const OID_SHA256_WITH_RSA = [1, 2, 840, 113549, 1, 1, 11];
|
|
90
|
+
const OID_SIGNED_DATA = [1, 2, 840, 113549, 1, 7, 2];
|
|
91
|
+
const OID_DATA = [1, 2, 840, 113549, 1, 7, 1];
|
|
92
|
+
const OID_CONTENT_TYPE = [1, 2, 840, 113549, 1, 9, 3];
|
|
93
|
+
const OID_MESSAGE_DIGEST = [1, 2, 840, 113549, 1, 9, 4];
|
|
94
|
+
const OID_SIGNING_TIME = [1, 2, 840, 113549, 1, 9, 5];
|
|
95
|
+
const OID_SPC_INDIRECT_DATA = [1, 3, 6, 1, 4, 1, 311, 2, 1, 4];
|
|
96
|
+
function parsePem(pem) {
|
|
97
|
+
const b64 = pem.replace(/-----[A-Z\s]+-----/g, '').replace(/\s+/g, '');
|
|
98
|
+
const bin = atob(b64);
|
|
99
|
+
const bytes = new Uint8Array(bin.length);
|
|
100
|
+
for (let i = 0; i < bin.length; i++)
|
|
101
|
+
bytes[i] = bin.charCodeAt(i);
|
|
102
|
+
return bytes;
|
|
103
|
+
}
|
|
104
|
+
function base64Encode(data) {
|
|
105
|
+
let s = '';
|
|
106
|
+
for (let i = 0; i < data.length; i++)
|
|
107
|
+
s += String.fromCharCode(data[i]);
|
|
108
|
+
return btoa(s);
|
|
109
|
+
}
|
|
110
|
+
function toHex(data) {
|
|
111
|
+
return Array.from(data).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
112
|
+
}
|
|
113
|
+
function readDerTLV(data, offset) {
|
|
114
|
+
const tag = data[offset];
|
|
115
|
+
let off = offset + 1;
|
|
116
|
+
let len = data[off++];
|
|
117
|
+
if (len & 0x80) {
|
|
118
|
+
const numBytes = len & 0x7F;
|
|
119
|
+
len = 0;
|
|
120
|
+
for (let i = 0; i < numBytes; i++)
|
|
121
|
+
len = (len << 8) | data[off++];
|
|
122
|
+
}
|
|
123
|
+
return { tag, content: data.slice(off, off + len), next: off + len };
|
|
124
|
+
}
|
|
125
|
+
function extractCertInfo(certDer) {
|
|
126
|
+
const cert = readDerTLV(certDer, 0);
|
|
127
|
+
const tbs = readDerTLV(cert.content, 0);
|
|
128
|
+
let off = 0;
|
|
129
|
+
let tlv = readDerTLV(tbs.content, off);
|
|
130
|
+
if (tlv.tag === 0xA0) {
|
|
131
|
+
off = tlv.next;
|
|
132
|
+
tlv = readDerTLV(tbs.content, off);
|
|
133
|
+
}
|
|
134
|
+
const serial = tbs.content.slice(off, tlv.next);
|
|
135
|
+
off = tlv.next;
|
|
136
|
+
tlv = readDerTLV(tbs.content, off);
|
|
137
|
+
off = tlv.next;
|
|
138
|
+
const issuer = tbs.content.slice(off);
|
|
139
|
+
tlv = readDerTLV(tbs.content, off);
|
|
140
|
+
const issuerPart = tbs.content.slice(off, tlv.next);
|
|
141
|
+
return { issuer: issuerPart, serial: readDerTLV(tbs.content, serial === tbs.content.slice(off) ? 0 : (readDerTLV(tbs.content, 0).tag === 0xA0 ? readDerTLV(tbs.content, 0).next : 0)).content, raw: certDer };
|
|
142
|
+
}
|
|
143
|
+
async function sha256(data) {
|
|
144
|
+
const buf = await crypto.subtle.digest('SHA-256', data);
|
|
145
|
+
return new Uint8Array(buf);
|
|
146
|
+
}
|
|
147
|
+
async function importPrivateKey(pkcs8Der) {
|
|
148
|
+
return crypto.subtle.importKey('pkcs8', pkcs8Der, { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' }, false, ['sign']);
|
|
149
|
+
}
|
|
150
|
+
async function rsaSign(key, data) {
|
|
151
|
+
const sig = await crypto.subtle.sign('RSASSA-PKCS1-v1_5', key, data);
|
|
152
|
+
return new Uint8Array(sig);
|
|
153
|
+
}
|
|
154
|
+
async function buildCmsSignature(contentOid, contentData, certDer, privateKey) {
|
|
155
|
+
const digest = await sha256(contentData);
|
|
156
|
+
const certSeq = readDerTLV(certDer, 0);
|
|
157
|
+
const tbsSeq = readDerTLV(certSeq.content, 0);
|
|
158
|
+
let off = 0;
|
|
159
|
+
let tlv = readDerTLV(tbsSeq.content, off);
|
|
160
|
+
if (tlv.tag === 0xA0) {
|
|
161
|
+
off = tlv.next;
|
|
162
|
+
tlv = readDerTLV(tbsSeq.content, off);
|
|
163
|
+
}
|
|
164
|
+
const serialContent = tlv.content;
|
|
165
|
+
off = tlv.next;
|
|
166
|
+
tlv = readDerTLV(tbsSeq.content, off);
|
|
167
|
+
off = tlv.next;
|
|
168
|
+
tlv = readDerTLV(tbsSeq.content, off);
|
|
169
|
+
const issuerBytes = tbsSeq.content.slice(off, tlv.next);
|
|
170
|
+
const now = new Date();
|
|
171
|
+
const utcTime = now.toISOString().replace(/[-:T]/g, '').slice(0, 14) + 'Z';
|
|
172
|
+
const utcTimeBytes = new TextEncoder().encode(utcTime);
|
|
173
|
+
const algId = derSeq(derOid(OID_SHA256), derTag(0x05, new Uint8Array(0)));
|
|
174
|
+
const authAttrs = [
|
|
175
|
+
derSeq(derOid(OID_CONTENT_TYPE), derSet(derOid(contentOid))),
|
|
176
|
+
derSeq(derOid(OID_SIGNING_TIME), derSet(derTag(0x17, utcTimeBytes))),
|
|
177
|
+
derSeq(derOid(OID_MESSAGE_DIGEST), derSet(derOctetStr(digest))),
|
|
178
|
+
];
|
|
179
|
+
let authAttrsBody = new Uint8Array(0);
|
|
180
|
+
for (const a of authAttrs) {
|
|
181
|
+
const tmp = new Uint8Array(authAttrsBody.length + a.length);
|
|
182
|
+
tmp.set(authAttrsBody);
|
|
183
|
+
tmp.set(a, authAttrsBody.length);
|
|
184
|
+
authAttrsBody = tmp;
|
|
185
|
+
}
|
|
186
|
+
const authAttrsSet = derTag(0x31, authAttrsBody);
|
|
187
|
+
const authAttrsDer = derTag(0xA0, authAttrsBody);
|
|
188
|
+
const sigInput = authAttrsSet;
|
|
189
|
+
const signature = await rsaSign(privateKey, sigInput);
|
|
190
|
+
const signerInfo = derSeq(derInt(1), derSeq(issuerBytes, derTag(0x02, serialContent)), algId, authAttrsDer, derSeq(derOid(OID_RSA_ENCRYPTION), derTag(0x05, new Uint8Array(0))), derOctetStr(signature));
|
|
191
|
+
const encapContentInfo = derSeq(derOid(contentOid), derExplicit(0, derOctetStr(contentData)));
|
|
192
|
+
const signedData = derSeq(derInt(1), derSet(algId), encapContentInfo, derExplicit(0, certDer), derSet(signerInfo));
|
|
193
|
+
return derSeq(derOid(OID_SIGNED_DATA), derExplicit(0, signedData));
|
|
194
|
+
}
|
|
195
|
+
const OID_COMMON_NAME = [2, 5, 4, 3];
|
|
196
|
+
function derBitStr(data) {
|
|
197
|
+
const inner = new Uint8Array(1 + data.length);
|
|
198
|
+
inner[0] = 0;
|
|
199
|
+
inner.set(data, 1);
|
|
200
|
+
return derTag(0x03, inner);
|
|
201
|
+
}
|
|
202
|
+
function derBigInt(bytes) {
|
|
203
|
+
if (bytes[0] & 0x80) {
|
|
204
|
+
const padded = new Uint8Array(bytes.length + 1);
|
|
205
|
+
padded.set(bytes, 1);
|
|
206
|
+
return derTag(0x02, padded);
|
|
207
|
+
}
|
|
208
|
+
return derTag(0x02, bytes);
|
|
209
|
+
}
|
|
210
|
+
export async function generateTestCertificate(subject, privateKeyPem, publicKeySpkiDer) {
|
|
211
|
+
const keyDer = parsePem(privateKeyPem);
|
|
212
|
+
const key = await importPrivateKey(keyDer);
|
|
213
|
+
const algId = derSeq(derOid(OID_SHA256_WITH_RSA), derTag(0x05, new Uint8Array(0)));
|
|
214
|
+
const name = derSeq(derSet(derSeq(derOid(OID_COMMON_NAME), derUtf8Str(subject))));
|
|
215
|
+
const now = new Date();
|
|
216
|
+
const later = new Date(now.getFullYear() + 10, now.getMonth(), now.getDate());
|
|
217
|
+
const utcFmt = (d) => {
|
|
218
|
+
const s = d.toISOString().replace(/[-:T]/g, '').slice(2, 14) + 'Z';
|
|
219
|
+
return derTag(0x17, new TextEncoder().encode(s));
|
|
220
|
+
};
|
|
221
|
+
const validity = derSeq(utcFmt(now), utcFmt(later));
|
|
222
|
+
const serial = derTag(0x02, new Uint8Array([0x01]));
|
|
223
|
+
const version = derExplicit(0, derInt(2));
|
|
224
|
+
const tbs = derSeq(version, serial, algId, name, validity, name, derTag(0x30, publicKeySpkiDer.slice(publicKeySpkiDer.indexOf(0x30, 1) >= 0 ? 0 : 0)));
|
|
225
|
+
const tbs2 = derSeq(version, serial, algId, name, validity, name, publicKeySpkiDer);
|
|
226
|
+
const tbsDer = tbs2;
|
|
227
|
+
const tbsHash = await sha256(tbsDer);
|
|
228
|
+
const signature = await crypto.subtle.sign('RSASSA-PKCS1-v1_5', key, tbsDer);
|
|
229
|
+
const sigBytes = new Uint8Array(signature);
|
|
230
|
+
const cert = derSeq(tbsDer, algId, derBitStr(sigBytes));
|
|
231
|
+
const b64 = base64Encode(cert);
|
|
232
|
+
const lines = b64.match(/.{1,64}/g).join('\n');
|
|
233
|
+
return `-----BEGIN CERTIFICATE-----\n${lines}\n-----END CERTIFICATE-----`;
|
|
234
|
+
}
|
|
235
|
+
export async function signPackage(partsToSign, options) {
|
|
236
|
+
const certDer = parsePem(options.certificate);
|
|
237
|
+
const keyDer = parsePem(options.privateKey);
|
|
238
|
+
const privateKey = await importPrivateKey(keyDer);
|
|
239
|
+
const enc = new TextEncoder();
|
|
240
|
+
const result = new Map();
|
|
241
|
+
const refXmls = [];
|
|
242
|
+
for (const [uri, data] of partsToSign) {
|
|
243
|
+
const digest = await sha256(data);
|
|
244
|
+
const b64Digest = base64Encode(digest);
|
|
245
|
+
refXmls.push(`<Reference URI="/${uri}?ContentType=${getContentType(uri)}">
|
|
246
|
+
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
|
|
247
|
+
<DigestValue>${b64Digest}</DigestValue>
|
|
248
|
+
</Reference>`);
|
|
249
|
+
}
|
|
250
|
+
const signedInfoXml = `<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
|
|
251
|
+
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
|
|
252
|
+
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
|
|
253
|
+
${refXmls.join('\n')}
|
|
254
|
+
</SignedInfo>`;
|
|
255
|
+
const signedInfoBytes = enc.encode(signedInfoXml);
|
|
256
|
+
const signature = await rsaSign(privateKey, signedInfoBytes);
|
|
257
|
+
const b64Sig = base64Encode(signature);
|
|
258
|
+
const b64Cert = base64Encode(certDer);
|
|
259
|
+
const sigXml = `<?xml version="1.0" encoding="UTF-8"?>
|
|
260
|
+
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="idPackageSignature">
|
|
261
|
+
${signedInfoXml}
|
|
262
|
+
<SignatureValue>${b64Sig}</SignatureValue>
|
|
263
|
+
<KeyInfo>
|
|
264
|
+
<X509Data>
|
|
265
|
+
<X509Certificate>${b64Cert}</X509Certificate>
|
|
266
|
+
</X509Data>
|
|
267
|
+
</KeyInfo>
|
|
268
|
+
<Object>
|
|
269
|
+
<SignatureProperties>
|
|
270
|
+
<SignatureProperty Id="idSignatureTime" Target="#idPackageSignature">
|
|
271
|
+
<mdssi:SignatureTime xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature">
|
|
272
|
+
<mdssi:Format>YYYY-MM-DDThh:mm:ssTZD</mdssi:Format>
|
|
273
|
+
<mdssi:Value>${new Date().toISOString()}</mdssi:Value>
|
|
274
|
+
</mdssi:SignatureTime>
|
|
275
|
+
</SignatureProperty>
|
|
276
|
+
</SignatureProperties>
|
|
277
|
+
</Object>
|
|
278
|
+
</Signature>`;
|
|
279
|
+
result.set('_xmlsignatures/sig1.xml', enc.encode(sigXml));
|
|
280
|
+
result.set('_xmlsignatures/origin.sigs', new Uint8Array(0));
|
|
281
|
+
result.set('_xmlsignatures/_rels/origin.sigs.rels', enc.encode(`<?xml version="1.0" encoding="UTF-8"?>
|
|
282
|
+
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
|
|
283
|
+
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/signature" Target="sig1.xml"/>
|
|
284
|
+
</Relationships>`));
|
|
285
|
+
const existingRels = partsToSign.get('_rels/.rels');
|
|
286
|
+
if (existingRels) {
|
|
287
|
+
let relsXml = new TextDecoder().decode(existingRels);
|
|
288
|
+
if (!relsXml.includes('digital-signature/origin')) {
|
|
289
|
+
relsXml = relsXml.replace('</Relationships>', ' <Relationship Id="rIdSig" Type="http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/origin" Target="_xmlsignatures/origin.sigs"/>\n</Relationships>');
|
|
290
|
+
result.set('_rels/.rels', enc.encode(relsXml));
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return result;
|
|
294
|
+
}
|
|
295
|
+
function getContentType(uri) {
|
|
296
|
+
if (uri.endsWith('.xml'))
|
|
297
|
+
return 'application/xml';
|
|
298
|
+
if (uri.endsWith('.rels'))
|
|
299
|
+
return 'application/vnd.openxmlformats-package.relationships+xml';
|
|
300
|
+
if (uri.endsWith('.bin'))
|
|
301
|
+
return 'application/vnd.ms-office.vbaProject';
|
|
302
|
+
return 'application/octet-stream';
|
|
303
|
+
}
|
|
304
|
+
export async function signVbaProject(vbaProjectBin, options) {
|
|
305
|
+
const certDer = parsePem(options.certificate);
|
|
306
|
+
const keyDer = parsePem(options.privateKey);
|
|
307
|
+
const privateKey = await importPrivateKey(keyDer);
|
|
308
|
+
const projectHash = await sha256(vbaProjectBin);
|
|
309
|
+
const spcData = derSeq(derSeq(derOid(OID_SPC_INDIRECT_DATA), derSeq(derOid(OID_SHA256), derTag(0x05, new Uint8Array(0)))), derSeq(derSeq(derOid(OID_SHA256), derTag(0x05, new Uint8Array(0))), derOctetStr(projectHash)));
|
|
310
|
+
const cms = await buildCmsSignature(OID_SPC_INDIRECT_DATA, spcData, certDer, privateKey);
|
|
311
|
+
const result = new Uint8Array(8 + cms.length);
|
|
312
|
+
const dv = new DataView(result.buffer);
|
|
313
|
+
dv.setUint32(0, 3, true);
|
|
314
|
+
dv.setUint32(4, cms.length, true);
|
|
315
|
+
result.set(cms, 8);
|
|
316
|
+
return result;
|
|
317
|
+
}
|
|
318
|
+
export async function signWorkbook(parts, options, vbaProjectBin) {
|
|
319
|
+
const packageSignatureEntries = await signPackage(parts, options);
|
|
320
|
+
let vbaSignature;
|
|
321
|
+
if (vbaProjectBin) {
|
|
322
|
+
vbaSignature = await signVbaProject(vbaProjectBin, options);
|
|
323
|
+
}
|
|
324
|
+
return { packageSignatureEntries, vbaSignature };
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=Signing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Signing.js","sourceRoot":"","sources":["../../src/features/Signing.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ export function buildTableXml(table, tableId) {
|
|
|
6
6
|
const colIdx = startCol + i;
|
|
7
7
|
const id = i + 1;
|
|
8
8
|
const totFn = col.totalsRowFunction ?? 'none';
|
|
9
|
-
const totAttrs = table.totalsRow
|
|
10
|
-
? ` totalsRowFunction="${totFn}"${col.totalsRowFormula ? ` totalsRowFormula="${escapeXml(col.totalsRowFormula)}"` : ''}`
|
|
9
|
+
const totAttrs = table.totalsRow
|
|
10
|
+
? ` totalsRowFunction="${totFn}"${totFn !== 'none' && col.totalsRowFormula ? ` totalsRowFormula="${escapeXml(col.totalsRowFormula)}"` : ''}`
|
|
11
11
|
: '';
|
|
12
12
|
const totLabel = table.totalsRow && col.totalsRowLabel
|
|
13
13
|
? ` totalsRowLabel="${escapeXml(col.totalsRowLabel)}"` : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableBuilder.js","sourceRoot":"","sources":["../../src/features/TableBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,OAAe;IACzD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS
|
|
1
|
+
{"version":3,"file":"TableBuilder.js","sourceRoot":"","sources":["../../src/features/TableBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,OAAe;IACzD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS;YAC9B,CAAC,CAAC,uBAAuB,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,sBAAsB,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5I,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,cAAc;YACpD,CAAC,CAAC,oBAAoB,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,oBAAoB,EAAE,WAAW,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,QAAQ,IAAI,CAAC;IACzF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,UAAU,GAAG;QACjB,SAAS,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,mBAAmB,CAAC,GAAG;QACzD,KAAK,CAAC,eAAe,CAAG,CAAC,CAAC,qBAAqB,CAAG,CAAC,CAAC,EAAE;QACtD,KAAK,CAAC,cAAc,CAAI,CAAC,CAAC,oBAAoB,CAAI,CAAC,CAAC,EAAE;QACtD,KAAK,CAAC,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;QAC1D,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE;KACvD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAG1C,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,YAAY,GAAK,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,aAAa,GAAI,GAAG,cAAc,GAAG,QAAQ,IAAI,YAAY,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3F,OAAO;;QAED,OAAO,WAAW,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,SAAS,CAAC,WAAW,CAAC;SAC9E,KAAK,CAAC,GAAG,qBAAqB,SAAS;qBAC3B,aAAa;yBACT,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO;oBACrC,UAAU;SACrB,CAAC;AACV,CAAC"}
|