@passportsign/core 0.1.0 → 0.2.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/dist/badge.d.ts +5 -0
- package/dist/badge.d.ts.map +1 -1
- package/dist/badge.js +8 -2
- package/dist/badge.js.map +1 -1
- package/dist/bind.d.ts.map +1 -1
- package/dist/bind.js +2 -8
- package/dist/bind.js.map +1 -1
- package/dist/bundle-fs.d.ts +16 -0
- package/dist/bundle-fs.d.ts.map +1 -0
- package/dist/bundle-fs.js +31 -0
- package/dist/bundle-fs.js.map +1 -0
- package/dist/bundle.d.ts +13 -5
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +18 -20
- package/dist/bundle.js.map +1 -1
- package/dist/canonical.d.ts.map +1 -1
- package/dist/canonical.js +3 -4
- package/dist/canonical.js.map +1 -1
- package/dist/classify.d.ts +68 -0
- package/dist/classify.d.ts.map +1 -0
- package/dist/classify.js +117 -0
- package/dist/classify.js.map +1 -0
- package/dist/dsse-common.d.ts +32 -0
- package/dist/dsse-common.d.ts.map +1 -0
- package/dist/dsse-common.js +26 -0
- package/dist/dsse-common.js.map +1 -0
- package/dist/dsse-web.d.ts +28 -0
- package/dist/dsse-web.d.ts.map +1 -0
- package/dist/dsse-web.js +81 -0
- package/dist/dsse-web.js.map +1 -0
- package/dist/dsse.d.ts +2 -26
- package/dist/dsse.d.ts.map +1 -1
- package/dist/dsse.js +2 -19
- package/dist/dsse.js.map +1 -1
- package/dist/encoding.d.ts +20 -0
- package/dist/encoding.d.ts.map +1 -0
- package/dist/encoding.js +88 -0
- package/dist/encoding.js.map +1 -0
- package/dist/github.js +2 -2
- package/dist/github.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/log/rekor.d.ts +1 -1
- package/dist/log/rekor.d.ts.map +1 -1
- package/dist/log/rekor.js +7 -10
- package/dist/log/rekor.js.map +1 -1
- package/dist/lookup.d.ts +46 -0
- package/dist/lookup.d.ts.map +1 -0
- package/dist/lookup.js +101 -0
- package/dist/lookup.js.map +1 -0
- package/dist/merkle.js +3 -3
- package/dist/merkle.js.map +1 -1
- package/dist/nonce.js +1 -1
- package/dist/nonce.js.map +1 -1
- package/dist/profile-index.d.ts +64 -0
- package/dist/profile-index.d.ts.map +1 -0
- package/dist/profile-index.js +161 -0
- package/dist/profile-index.js.map +1 -0
- package/dist/revoke.d.ts +30 -0
- package/dist/revoke.d.ts.map +1 -0
- package/dist/revoke.js +42 -0
- package/dist/revoke.js.map +1 -0
- package/dist/sdk-payload.d.ts.map +1 -1
- package/dist/sdk-payload.js +4 -6
- package/dist/sdk-payload.js.map +1 -1
- package/dist/statement.d.ts +41 -0
- package/dist/statement.d.ts.map +1 -1
- package/dist/statement.js +43 -0
- package/dist/statement.js.map +1 -1
- package/dist/submit.d.ts +3 -3
- package/dist/submit.d.ts.map +1 -1
- package/dist/submit.js +3 -14
- package/dist/submit.js.map +1 -1
- package/dist/verifier.d.ts.map +1 -1
- package/dist/verifier.js +4 -14
- package/dist/verifier.js.map +1 -1
- package/dist/web.d.ts +35 -0
- package/dist/web.d.ts.map +1 -0
- package/dist/web.js +35 -0
- package/dist/web.js.map +1 -0
- package/package.json +6 -2
- package/src/badge.ts +124 -113
- package/src/bind.ts +128 -137
- package/src/bundle-fs.ts +40 -0
- package/src/bundle.ts +138 -127
- package/src/canonical.ts +33 -33
- package/src/classify.ts +165 -0
- package/src/dsse-common.ts +45 -0
- package/src/dsse-web.ts +97 -0
- package/src/dsse.ts +63 -91
- package/src/encoding.ts +96 -0
- package/src/github.ts +196 -196
- package/src/index.ts +59 -2
- package/src/log/rekor.ts +330 -334
- package/src/lookup.ts +175 -0
- package/src/merkle.ts +187 -187
- package/src/nonce.ts +53 -53
- package/src/profile-index.ts +222 -0
- package/src/revoke.ts +67 -0
- package/src/sdk-payload.ts +60 -62
- package/src/statement.ts +203 -119
- package/src/submit.ts +38 -54
- package/src/verifier.ts +304 -317
- package/src/web.ts +175 -0
package/dist/dsse-web.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebCrypto variant of the DSSE envelope signer for runtimes without
|
|
3
|
+
* `node:crypto` sign APIs (browsers, edge workers). Same semantics as
|
|
4
|
+
* `dsse.ts`'s `signEnvelope`: ephemeral ECDSA P-256 key, discarded
|
|
5
|
+
* after signing; the signature is a Rekor schema requirement, not a
|
|
6
|
+
* trust mechanism.
|
|
7
|
+
*
|
|
8
|
+
* Two impedance mismatches with what Rekor expects, both handled here:
|
|
9
|
+
* - WebCrypto emits raw P1363 (`r || s`) signatures; Rekor needs DER.
|
|
10
|
+
* - WebCrypto exports SPKI as raw bytes; Rekor needs PEM text.
|
|
11
|
+
*
|
|
12
|
+
* The drift test in `test/dsse-web.test.ts` verifies output with
|
|
13
|
+
* `node:crypto.createVerify` so the two signers cannot diverge silently.
|
|
14
|
+
*/
|
|
15
|
+
import { bytesToBase64 } from './encoding.js';
|
|
16
|
+
import { pae } from './dsse-common.js';
|
|
17
|
+
/** Strip leading zero bytes, then re-add one if the high bit is set (DER INTEGER rule). */
|
|
18
|
+
function derInteger(bytes) {
|
|
19
|
+
let start = 0;
|
|
20
|
+
while (start < bytes.length - 1 && bytes[start] === 0)
|
|
21
|
+
start++;
|
|
22
|
+
const trimmed = bytes.subarray(start);
|
|
23
|
+
if (trimmed[0] & 0x80) {
|
|
24
|
+
const padded = new Uint8Array(trimmed.length + 1);
|
|
25
|
+
padded.set(trimmed, 1);
|
|
26
|
+
return padded;
|
|
27
|
+
}
|
|
28
|
+
return trimmed;
|
|
29
|
+
}
|
|
30
|
+
/** Convert a P1363 (r||s) ECDSA signature to DER SEQUENCE(INTEGER r, INTEGER s). */
|
|
31
|
+
export function p1363ToDer(sig) {
|
|
32
|
+
if (sig.length % 2 !== 0) {
|
|
33
|
+
throw new TypeError(`p1363ToDer: signature length ${sig.length} is not even`);
|
|
34
|
+
}
|
|
35
|
+
const half = sig.length / 2;
|
|
36
|
+
const r = derInteger(sig.subarray(0, half));
|
|
37
|
+
const s = derInteger(sig.subarray(half));
|
|
38
|
+
const body = new Uint8Array(2 + r.length + 2 + s.length);
|
|
39
|
+
body[0] = 0x02;
|
|
40
|
+
body[1] = r.length;
|
|
41
|
+
body.set(r, 2);
|
|
42
|
+
body[2 + r.length] = 0x02;
|
|
43
|
+
body[3 + r.length] = s.length;
|
|
44
|
+
body.set(s, 4 + r.length);
|
|
45
|
+
// P-256 DER bodies are < 128 bytes, so a single length byte suffices.
|
|
46
|
+
const out = new Uint8Array(2 + body.length);
|
|
47
|
+
out[0] = 0x30;
|
|
48
|
+
out[1] = body.length;
|
|
49
|
+
out.set(body, 2);
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
function spkiToPem(spki) {
|
|
53
|
+
const b64 = bytesToBase64(spki);
|
|
54
|
+
const lines = b64.match(/.{1,64}/g) ?? [];
|
|
55
|
+
return `-----BEGIN PUBLIC KEY-----\n${lines.join('\n')}\n-----END PUBLIC KEY-----\n`;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Generate an ephemeral ECDSA P-256 keypair via WebCrypto, sign
|
|
59
|
+
* PAE(payloadType, payload), and return a DSSE envelope. Async because
|
|
60
|
+
* WebCrypto is; otherwise interchangeable with `signEnvelope`.
|
|
61
|
+
*/
|
|
62
|
+
export async function signEnvelopeWeb(payload, payloadType) {
|
|
63
|
+
const subtle = globalThis.crypto.subtle;
|
|
64
|
+
const keyPair = await subtle.generateKey({ name: 'ECDSA', namedCurve: 'P-256' }, true, [
|
|
65
|
+
'sign',
|
|
66
|
+
]);
|
|
67
|
+
const paeBytes = pae(payloadType, payload);
|
|
68
|
+
const rawSig = new Uint8Array(await subtle.sign({ name: 'ECDSA', hash: 'SHA-256' }, keyPair.privateKey, paeBytes));
|
|
69
|
+
const derSig = p1363ToDer(rawSig);
|
|
70
|
+
const spki = new Uint8Array(await subtle.exportKey('spki', keyPair.publicKey));
|
|
71
|
+
const publicKeyPem = spkiToPem(spki);
|
|
72
|
+
return {
|
|
73
|
+
envelope: {
|
|
74
|
+
payloadType,
|
|
75
|
+
payload: bytesToBase64(payload),
|
|
76
|
+
signatures: [{ sig: bytesToBase64(derSig), publicKey: publicKeyPem }],
|
|
77
|
+
},
|
|
78
|
+
publicKeyPem,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=dsse-web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsse-web.js","sourceRoot":"","sources":["../src/dsse-web.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAqB,MAAM,kBAAkB,CAAC;AAO1D,2FAA2F;AAC3F,SAAS,UAAU,CAAC,KAAiB;IACnC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,CAAC,CAAE,GAAG,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,GAAe;IACxC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,gCAAgC,GAAG,CAAC,MAAM,cAAc,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACf,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACf,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1B,sEAAsE;IACtE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACd,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACrB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,IAAgB;IACjC,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC1C,OAAO,+BAA+B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC;AACvF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAmB,EACnB,WAAmB;IAEnB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE;QACrF,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,UAAU,CAC3B,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CACpF,CAAC;IACF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAErC,OAAO;QACL,QAAQ,EAAE;YACR,WAAW;YACX,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;YAC/B,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;SACtE;QACD,YAAY;KACb,CAAC;AACJ,CAAC"}
|
package/dist/dsse.d.ts
CHANGED
|
@@ -15,32 +15,8 @@
|
|
|
15
15
|
* it during the Day 5 smoke test (500 "error generating canonicalized
|
|
16
16
|
* entry"). See `docs/v0-acceptance.md` Day 5 evidence.
|
|
17
17
|
*/
|
|
18
|
-
|
|
19
|
-
export
|
|
20
|
-
export interface DsseSignature {
|
|
21
|
-
/** Single-base64 of the raw signature bytes. */
|
|
22
|
-
sig: string;
|
|
23
|
-
/** PEM-encoded SubjectPublicKeyInfo. */
|
|
24
|
-
publicKey: string;
|
|
25
|
-
/** Optional key identifier. Omit (don't pass empty string) when not set. */
|
|
26
|
-
keyid?: string;
|
|
27
|
-
}
|
|
28
|
-
export interface DsseEnvelope {
|
|
29
|
-
/** Media type of the payload (e.g. `application/vnd.in-toto+json`). */
|
|
30
|
-
payloadType: string;
|
|
31
|
-
/** Single-base64 of the raw payload bytes. */
|
|
32
|
-
payload: string;
|
|
33
|
-
signatures: DsseSignature[];
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* DSSE Pre-Authentication Encoding (PAE):
|
|
37
|
-
*
|
|
38
|
-
* "DSSEv1" SP LEN(type) SP type SP LEN(body) SP body
|
|
39
|
-
*
|
|
40
|
-
* Where SP is a single 0x20 space, LEN is the ASCII-decimal length of
|
|
41
|
-
* the following byte string.
|
|
42
|
-
*/
|
|
43
|
-
export declare function pae(type: string, body: Uint8Array): Uint8Array;
|
|
18
|
+
import { type DsseEnvelope } from './dsse-common.js';
|
|
19
|
+
export { DSSE_VERSION, IN_TOTO_PAYLOAD_TYPE, pae, type DsseEnvelope, type DsseSignature, } from './dsse-common.js';
|
|
44
20
|
export interface SignEnvelopeResult {
|
|
45
21
|
envelope: DsseEnvelope;
|
|
46
22
|
/** PEM of the ephemeral public key (also embedded in envelope.signatures[0].publicKey). */
|
package/dist/dsse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsse.d.ts","sourceRoot":"","sources":["../src/dsse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,
|
|
1
|
+
{"version":3,"file":"dsse.d.ts","sourceRoot":"","sources":["../src/dsse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,GAAG,EACH,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,YAAY,CAAC;IACvB,2FAA2F;IAC3F,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAqBzF"}
|
package/dist/dsse.js
CHANGED
|
@@ -16,25 +16,8 @@
|
|
|
16
16
|
* entry"). See `docs/v0-acceptance.md` Day 5 evidence.
|
|
17
17
|
*/
|
|
18
18
|
import { createSign, generateKeyPairSync } from 'node:crypto';
|
|
19
|
-
|
|
20
|
-
export
|
|
21
|
-
/**
|
|
22
|
-
* DSSE Pre-Authentication Encoding (PAE):
|
|
23
|
-
*
|
|
24
|
-
* "DSSEv1" SP LEN(type) SP type SP LEN(body) SP body
|
|
25
|
-
*
|
|
26
|
-
* Where SP is a single 0x20 space, LEN is the ASCII-decimal length of
|
|
27
|
-
* the following byte string.
|
|
28
|
-
*/
|
|
29
|
-
export function pae(type, body) {
|
|
30
|
-
const typeBytes = new TextEncoder().encode(type);
|
|
31
|
-
const prefix = `${DSSE_VERSION} ${typeBytes.length} ${type} ${body.length} `;
|
|
32
|
-
const prefixBytes = new TextEncoder().encode(prefix);
|
|
33
|
-
const out = new Uint8Array(prefixBytes.length + body.length);
|
|
34
|
-
out.set(prefixBytes);
|
|
35
|
-
out.set(body, prefixBytes.length);
|
|
36
|
-
return out;
|
|
37
|
-
}
|
|
19
|
+
import { pae } from './dsse-common.js';
|
|
20
|
+
export { DSSE_VERSION, IN_TOTO_PAYLOAD_TYPE, pae, } from './dsse-common.js';
|
|
38
21
|
/**
|
|
39
22
|
* Generate an ephemeral ECDSA P-256 keypair, sign PAE(payloadType,
|
|
40
23
|
* payload), and return a DSSE envelope. The private key is discarded
|
package/dist/dsse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsse.js","sourceRoot":"","sources":["../src/dsse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9D,
|
|
1
|
+
{"version":3,"file":"dsse.js","sourceRoot":"","sources":["../src/dsse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,GAAG,EAAqB,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,GAAG,GAGJ,MAAM,kBAAkB,CAAC;AAQ1B;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAAmB,EAAE,WAAmB;IACnE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAW,CAAC;IAEjF,OAAO;QACL,QAAQ,EAAE;YACR,WAAW;YACX,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAChD,UAAU,EAAE;gBACV;oBACE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAC9B,SAAS,EAAE,YAAY;iBACxB;aACF;SACF;QACD,YAAY;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-neutral byte/string primitives.
|
|
3
|
+
*
|
|
4
|
+
* Every module that needs hashing or hex/base64 goes through here so
|
|
5
|
+
* the rest of core has no `node:crypto` / `Buffer` dependency and runs
|
|
6
|
+
* unchanged on Node, Cloudflare Workers, and browsers. SHA-256 comes
|
|
7
|
+
* from `@noble/hashes` (pure JS, synchronous — WebCrypto's async
|
|
8
|
+
* digest would force async signatures through the whole verify path).
|
|
9
|
+
*/
|
|
10
|
+
export declare function bytesToHex(bytes: Uint8Array): string;
|
|
11
|
+
export declare function hexToBytes(hex: string): Uint8Array;
|
|
12
|
+
export declare function bytesToBase64(bytes: Uint8Array): string;
|
|
13
|
+
export declare function base64ToBytes(b64: string): Uint8Array;
|
|
14
|
+
export declare function utf8ToBytes(s: string): Uint8Array;
|
|
15
|
+
export declare function bytesToUtf8(bytes: Uint8Array): string;
|
|
16
|
+
export declare function sha256Bytes(bytes: Uint8Array): Uint8Array;
|
|
17
|
+
export declare function sha256Hex(bytes: Uint8Array): string;
|
|
18
|
+
/** Cryptographically secure random bytes via the platform's WebCrypto. */
|
|
19
|
+
export declare function randomBytes(length: number): Uint8Array;
|
|
20
|
+
//# sourceMappingURL=encoding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CASlD;AAMD,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAYvD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAkBrD;AAKD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAEjD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAErD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAEzD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAItD"}
|
package/dist/encoding.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-neutral byte/string primitives.
|
|
3
|
+
*
|
|
4
|
+
* Every module that needs hashing or hex/base64 goes through here so
|
|
5
|
+
* the rest of core has no `node:crypto` / `Buffer` dependency and runs
|
|
6
|
+
* unchanged on Node, Cloudflare Workers, and browsers. SHA-256 comes
|
|
7
|
+
* from `@noble/hashes` (pure JS, synchronous — WebCrypto's async
|
|
8
|
+
* digest would force async signatures through the whole verify path).
|
|
9
|
+
*/
|
|
10
|
+
import { sha256 } from '@noble/hashes/sha256';
|
|
11
|
+
const HEX_CHARS = '0123456789abcdef';
|
|
12
|
+
export function bytesToHex(bytes) {
|
|
13
|
+
let out = '';
|
|
14
|
+
for (const b of bytes) {
|
|
15
|
+
out += HEX_CHARS[b >> 4] + HEX_CHARS[b & 0x0f];
|
|
16
|
+
}
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
19
|
+
export function hexToBytes(hex) {
|
|
20
|
+
if (hex.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(hex)) {
|
|
21
|
+
throw new TypeError(`hexToBytes: invalid hex string (length ${hex.length})`);
|
|
22
|
+
}
|
|
23
|
+
const out = new Uint8Array(hex.length / 2);
|
|
24
|
+
for (let i = 0; i < out.length; i++) {
|
|
25
|
+
out[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);
|
|
26
|
+
}
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
const B64_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
30
|
+
const B64_LOOKUP = {};
|
|
31
|
+
for (let i = 0; i < B64_ALPHABET.length; i++)
|
|
32
|
+
B64_LOOKUP[B64_ALPHABET[i]] = i;
|
|
33
|
+
export function bytesToBase64(bytes) {
|
|
34
|
+
let out = '';
|
|
35
|
+
for (let i = 0; i < bytes.length; i += 3) {
|
|
36
|
+
const b0 = bytes[i];
|
|
37
|
+
const b1 = i + 1 < bytes.length ? bytes[i + 1] : 0;
|
|
38
|
+
const b2 = i + 2 < bytes.length ? bytes[i + 2] : 0;
|
|
39
|
+
out += B64_ALPHABET[b0 >> 2];
|
|
40
|
+
out += B64_ALPHABET[((b0 & 0x03) << 4) | (b1 >> 4)];
|
|
41
|
+
out += i + 1 < bytes.length ? B64_ALPHABET[((b1 & 0x0f) << 2) | (b2 >> 6)] : '=';
|
|
42
|
+
out += i + 2 < bytes.length ? B64_ALPHABET[b2 & 0x3f] : '=';
|
|
43
|
+
}
|
|
44
|
+
return out;
|
|
45
|
+
}
|
|
46
|
+
export function base64ToBytes(b64) {
|
|
47
|
+
if (b64.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(b64)) {
|
|
48
|
+
throw new TypeError('base64ToBytes: invalid base64 string');
|
|
49
|
+
}
|
|
50
|
+
const padding = b64.endsWith('==') ? 2 : b64.endsWith('=') ? 1 : 0;
|
|
51
|
+
const byteLength = (b64.length / 4) * 3 - padding;
|
|
52
|
+
const out = new Uint8Array(byteLength);
|
|
53
|
+
let outIdx = 0;
|
|
54
|
+
for (let i = 0; i < b64.length; i += 4) {
|
|
55
|
+
const c0 = B64_LOOKUP[b64[i]];
|
|
56
|
+
const c1 = B64_LOOKUP[b64[i + 1]];
|
|
57
|
+
const c2 = b64[i + 2] === '=' ? 0 : B64_LOOKUP[b64[i + 2]];
|
|
58
|
+
const c3 = b64[i + 3] === '=' ? 0 : B64_LOOKUP[b64[i + 3]];
|
|
59
|
+
if (outIdx < byteLength)
|
|
60
|
+
out[outIdx++] = (c0 << 2) | (c1 >> 4);
|
|
61
|
+
if (outIdx < byteLength)
|
|
62
|
+
out[outIdx++] = ((c1 & 0x0f) << 4) | (c2 >> 2);
|
|
63
|
+
if (outIdx < byteLength)
|
|
64
|
+
out[outIdx++] = ((c2 & 0x03) << 6) | c3;
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
const textEncoder = new TextEncoder();
|
|
69
|
+
const textDecoder = new TextDecoder();
|
|
70
|
+
export function utf8ToBytes(s) {
|
|
71
|
+
return textEncoder.encode(s);
|
|
72
|
+
}
|
|
73
|
+
export function bytesToUtf8(bytes) {
|
|
74
|
+
return textDecoder.decode(bytes);
|
|
75
|
+
}
|
|
76
|
+
export function sha256Bytes(bytes) {
|
|
77
|
+
return sha256(bytes);
|
|
78
|
+
}
|
|
79
|
+
export function sha256Hex(bytes) {
|
|
80
|
+
return bytesToHex(sha256(bytes));
|
|
81
|
+
}
|
|
82
|
+
/** Cryptographically secure random bytes via the platform's WebCrypto. */
|
|
83
|
+
export function randomBytes(length) {
|
|
84
|
+
const out = new Uint8Array(length);
|
|
85
|
+
globalThis.crypto.getRandomValues(out);
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=encoding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"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"}
|
package/dist/github.js
CHANGED
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
* The optional `token` is **purely for rate-limit headroom** — it
|
|
11
11
|
* carries zero special access. Unauth'd: 60 req/hr; with token: 5000.
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
13
|
+
import { sha256Hex as sha256HexOfBytes, utf8ToBytes } from './encoding.js';
|
|
14
14
|
import { PassportsignError } from './errors.js';
|
|
15
15
|
const DEFAULT_BASE_URL = 'https://api.github.com';
|
|
16
16
|
const GIST_LIST_PER_PAGE = 100;
|
|
17
17
|
function sha256Hex(content) {
|
|
18
|
-
return
|
|
18
|
+
return sha256HexOfBytes(utf8ToBytes(content));
|
|
19
19
|
}
|
|
20
20
|
function authHeaders(token) {
|
|
21
21
|
return {
|
package/dist/github.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,17 +6,23 @@
|
|
|
6
6
|
* SQLite cache + bind orchestrator (no Rekor yet).
|
|
7
7
|
*/
|
|
8
8
|
export { canonicalize, canonicalSha256Hex, } from './canonical.js';
|
|
9
|
-
export { IN_TOTO_STATEMENT_TYPE, PASSPORTSIGN_PREDICATE_TYPE, buildStatement, type BuildStatementInput, type DisclosureLevel, type PassportsignPredicate, type PassportsignStatement, } from './statement.js';
|
|
10
|
-
export { BUNDLE_FORMAT_VERSION, BundleValidationError,
|
|
9
|
+
export { IN_TOTO_STATEMENT_TYPE, PASSPORTSIGN_PREDICATE_TYPE, PASSPORTSIGN_REVOCATION_PREDICATE_TYPE, buildRevocationStatement, buildStatement, type BuildRevocationStatementInput, type BuildStatementInput, type DisclosureLevel, type PassportsignPredicate, type PassportsignRevocationPredicate, type PassportsignRevocationStatement, type PassportsignStatement, } from './statement.js';
|
|
10
|
+
export { BUNDLE_FORMAT_VERSION, BundleValidationError, assembleBundle, validateBundle, type PassportsignBundle, type RekorBundleFields, } from './bundle.js';
|
|
11
|
+
export { readBundle, writeBundle } from './bundle-fs.js';
|
|
11
12
|
export { ERROR_CODES, PassportsignError, type ErrorCode, } from './errors.js';
|
|
12
13
|
export { NONCE_BYTES, NONCE_BASE32_LENGTH, base32Encode, generateNonce, } from './nonce.js';
|
|
13
14
|
export { checkGistControl, type CheckGistOptions, type GistEvidence, } from './github.js';
|
|
14
15
|
export { prepareBinding, type PrepareBindingDeps, type PrepareBindingInit, type PrepareBindingInput, type PreparedBinding, } from './bind.js';
|
|
15
16
|
export { DSSE_VERSION, IN_TOTO_PAYLOAD_TYPE, pae, signEnvelope, type DsseEnvelope, type DsseSignature, type SignEnvelopeResult, } from './dsse.js';
|
|
17
|
+
export { p1363ToDer, signEnvelopeWeb, type SignEnvelopeWebResult, } from './dsse-web.js';
|
|
16
18
|
export { DEFAULT_REKOR_BASE_URL, PublicSigstoreRekorClient, buildIntotoEntryBody, type InclusionProof, type PublicSigstoreRekorClientOptions, type RekorClient, type RekorEntryResponse, } from './log/rekor.js';
|
|
17
|
-
export { submitBinding, type SubmitBindingDeps, type SubmitBindingResult, } from './submit.js';
|
|
19
|
+
export { submitBinding, type SubmitBindingDeps, type SubmitBindingResult, type SubmittableStatement, } from './submit.js';
|
|
20
|
+
export { prepareRevocation, type PrepareRevocationInput, type PreparedRevocation, } from './revoke.js';
|
|
18
21
|
export { hashLeaf, hashPair, verifyConsistency, verifyInclusion, } from './merkle.js';
|
|
19
22
|
export { packSdkPayload, unpackSdkPayload, type PackedSdkPayload, type SdkPayload, } from './sdk-payload.js';
|
|
20
23
|
export { renderBadgeMarkdown, renderBadgeSvg, type BadgeInput, } from './badge.js';
|
|
24
|
+
export { PROFILE_INDEX_FILENAME, PROFILE_INDEX_VERSION, ProfileIndexValidationError, addBinding, addRevocation, createProfileIndex, fetchProfileIndex, mergeProfileIndexes, profileIndexUrl, validateProfileIndex, type FetchProfileIndexOptions, type ProfileIndex, type ProfileIndexBinding, type ProfileIndexRevocation, } from './profile-index.js';
|
|
25
|
+
export { EntryParseError, STALENESS_WINDOW_MS, classifyBindings, parseIntotoEntry, type BindingState, type ClassifiedBinding, type ClassifyBindingsInput, type InTotoStatement, type ParsedIntotoEntry, } from './classify.js';
|
|
26
|
+
export { lookupBindings, lookupFromIndex, type LookupBindingsDeps, type LookupDeps, type LookupEntryProblem, type LookupResult, } from './lookup.js';
|
|
21
27
|
export { verifyBundle, type BundleVerifyResult, type CheckResult, type SdkVerifier, type SdkVerifyInput, type SdkVerifyResult, type VerifyBundleDeps, } from './verifier.js';
|
|
22
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
* SQLite cache + bind orchestrator (no Rekor yet).
|
|
7
7
|
*/
|
|
8
8
|
export { canonicalize, canonicalSha256Hex, } from './canonical.js';
|
|
9
|
-
export { IN_TOTO_STATEMENT_TYPE, PASSPORTSIGN_PREDICATE_TYPE, buildStatement, } from './statement.js';
|
|
10
|
-
export { BUNDLE_FORMAT_VERSION, BundleValidationError,
|
|
9
|
+
export { IN_TOTO_STATEMENT_TYPE, PASSPORTSIGN_PREDICATE_TYPE, PASSPORTSIGN_REVOCATION_PREDICATE_TYPE, buildRevocationStatement, buildStatement, } from './statement.js';
|
|
10
|
+
export { BUNDLE_FORMAT_VERSION, BundleValidationError, assembleBundle, validateBundle, } from './bundle.js';
|
|
11
|
+
export { readBundle, writeBundle } from './bundle-fs.js';
|
|
11
12
|
export { ERROR_CODES, PassportsignError, } from './errors.js';
|
|
12
13
|
export { NONCE_BYTES, NONCE_BASE32_LENGTH, base32Encode, generateNonce, } from './nonce.js';
|
|
13
14
|
export { checkGistControl, } from './github.js';
|
|
@@ -18,10 +19,15 @@ export { checkGistControl, } from './github.js';
|
|
|
18
19
|
// directly. The v0 CLI doesn't use the cache; rebuild is v1 work.
|
|
19
20
|
export { prepareBinding, } from './bind.js';
|
|
20
21
|
export { DSSE_VERSION, IN_TOTO_PAYLOAD_TYPE, pae, signEnvelope, } from './dsse.js';
|
|
22
|
+
export { p1363ToDer, signEnvelopeWeb, } from './dsse-web.js';
|
|
21
23
|
export { DEFAULT_REKOR_BASE_URL, PublicSigstoreRekorClient, buildIntotoEntryBody, } from './log/rekor.js';
|
|
22
24
|
export { submitBinding, } from './submit.js';
|
|
25
|
+
export { prepareRevocation, } from './revoke.js';
|
|
23
26
|
export { hashLeaf, hashPair, verifyConsistency, verifyInclusion, } from './merkle.js';
|
|
24
27
|
export { packSdkPayload, unpackSdkPayload, } from './sdk-payload.js';
|
|
25
28
|
export { renderBadgeMarkdown, renderBadgeSvg, } from './badge.js';
|
|
29
|
+
export { PROFILE_INDEX_FILENAME, PROFILE_INDEX_VERSION, ProfileIndexValidationError, addBinding, addRevocation, createProfileIndex, fetchProfileIndex, mergeProfileIndexes, profileIndexUrl, validateProfileIndex, } from './profile-index.js';
|
|
30
|
+
export { EntryParseError, STALENESS_WINDOW_MS, classifyBindings, parseIntotoEntry, } from './classify.js';
|
|
31
|
+
export { lookupBindings, lookupFromIndex, } from './lookup.js';
|
|
26
32
|
export { verifyBundle, } from './verifier.js';
|
|
27
33
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,sCAAsC,EACtC,wBAAwB,EACxB,cAAc,GAQf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,cAAc,GAGf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EACL,WAAW,EACX,iBAAiB,GAElB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gBAAgB,GAGjB,MAAM,aAAa,CAAC;AAErB,sEAAsE;AACtE,0EAA0E;AAC1E,sEAAsE;AACtE,qEAAqE;AACrE,kEAAkE;AAElE,OAAO,EACL,cAAc,GAKf,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,GAAG,EACH,YAAY,GAIb,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,UAAU,EACV,eAAe,GAEhB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,GAKrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,aAAa,GAId,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,GAGlB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,cAAc,EACd,gBAAgB,GAGjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,mBAAmB,EACnB,cAAc,GAEf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,GAKrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GAMjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,eAAe,GAKhB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,GAOb,MAAM,eAAe,CAAC"}
|
package/dist/log/rekor.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* All HTTP failures surface as
|
|
9
9
|
* `PassportsignError('log_submission_failed', …)` to match spec §4.
|
|
10
10
|
*/
|
|
11
|
-
import { type DsseEnvelope } from '../dsse.js';
|
|
11
|
+
import { type DsseEnvelope } from '../dsse-common.js';
|
|
12
12
|
export interface InclusionProof {
|
|
13
13
|
checkpoint: string;
|
|
14
14
|
hashes: string[];
|
package/dist/log/rekor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rekor.d.ts","sourceRoot":"","sources":["../../src/log/rekor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"rekor.d.ts","sourceRoot":"","sources":["../../src/log/rekor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,WAAW,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC5C,YAAY,EAAE;QACZ,cAAc,EAAE,cAAc,CAAC;QAC/B,wDAAwD;QACxD,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6FAA6F;IAC7F,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IACpC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC1F;AAED,MAAM,WAAW,gCAAgC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AAEnE,qBAAa,yBAA0B,YAAW,WAAW;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAE7B,IAAI,GAAE,gCAAqC;IAKjD,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAKjE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsBnD,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAoCnC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;YA2ChF,SAAS;CAyBxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAqDpE"}
|
package/dist/log/rekor.js
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* All HTTP failures surface as
|
|
9
9
|
* `PassportsignError('log_submission_failed', …)` to match spec §4.
|
|
10
10
|
*/
|
|
11
|
-
import { createHash } from 'node:crypto';
|
|
12
11
|
import { canonicalize } from '../canonical.js';
|
|
13
|
-
import {} from '../dsse.js';
|
|
12
|
+
import {} from '../dsse-common.js';
|
|
13
|
+
import { base64ToBytes, bytesToBase64, sha256Hex, utf8ToBytes } from '../encoding.js';
|
|
14
14
|
import { PassportsignError } from '../errors.js';
|
|
15
15
|
export const DEFAULT_REKOR_BASE_URL = 'https://rekor.sigstore.dev';
|
|
16
16
|
export class PublicSigstoreRekorClient {
|
|
@@ -140,8 +140,7 @@ export function buildIntotoEntryBody(envelope) {
|
|
|
140
140
|
}
|
|
141
141
|
const sig0 = envelope.signatures[0];
|
|
142
142
|
// payloadHash = sha256 of raw payload bytes.
|
|
143
|
-
const
|
|
144
|
-
const payloadHashHex = createHash('sha256').update(payloadBytes).digest('hex');
|
|
143
|
+
const payloadHashHex = sha256Hex(base64ToBytes(envelope.payload));
|
|
145
144
|
// envelopeHash = sha256 of canonical JSON of {payloadType, payload-base64,
|
|
146
145
|
// signatures:[{sig-base64, publicKey: PEM-string [, keyid]}]} — note
|
|
147
146
|
// publicKey is the raw PEM string for this hash (not base64).
|
|
@@ -157,13 +156,11 @@ export function buildIntotoEntryBody(envelope) {
|
|
|
157
156
|
payload: envelope.payload,
|
|
158
157
|
signatures: [sigForHash],
|
|
159
158
|
};
|
|
160
|
-
const envelopeHashHex =
|
|
161
|
-
.update(canonicalize(envelopeForHash))
|
|
162
|
-
.digest('hex');
|
|
159
|
+
const envelopeHashHex = sha256Hex(canonicalize(envelopeForHash));
|
|
163
160
|
// Build the actual submission body.
|
|
164
161
|
const sigItem = {
|
|
165
|
-
sig:
|
|
166
|
-
publicKey:
|
|
162
|
+
sig: bytesToBase64(utf8ToBytes(sig0.sig)),
|
|
163
|
+
publicKey: bytesToBase64(utf8ToBytes(sig0.publicKey)),
|
|
167
164
|
};
|
|
168
165
|
if (sig0.keyid && sig0.keyid.length > 0) {
|
|
169
166
|
sigItem['keyid'] = sig0.keyid;
|
|
@@ -175,7 +172,7 @@ export function buildIntotoEntryBody(envelope) {
|
|
|
175
172
|
content: {
|
|
176
173
|
envelope: {
|
|
177
174
|
payloadType: envelope.payloadType,
|
|
178
|
-
payload:
|
|
175
|
+
payload: bytesToBase64(utf8ToBytes(envelope.payload)),
|
|
179
176
|
signatures: [sigItem],
|
|
180
177
|
},
|
|
181
178
|
hash: { algorithm: 'sha256', value: envelopeHashHex },
|
package/dist/log/rekor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rekor.js","sourceRoot":"","sources":["../../src/log/rekor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"rekor.js","sourceRoot":"","sources":["../../src/log/rekor.ts"],"names":[],"mappings":"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"}
|
package/dist/lookup.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a user's published bindings: index file → Rekor entries →
|
|
3
|
+
* integrity + sanity checks → state classification.
|
|
4
|
+
*
|
|
5
|
+
* This is the shared read pipeline behind `passportsign list` and the
|
|
6
|
+
* hosted badge service. The index file is user-controlled, so nothing
|
|
7
|
+
* from it is trusted: every referenced entry is fetched from the log,
|
|
8
|
+
* its attestation integrity-checked ({@link parseIntotoEntry}), its
|
|
9
|
+
* inclusion proof verified, and its subject/predicateType checked
|
|
10
|
+
* against what the index claimed it was.
|
|
11
|
+
*/
|
|
12
|
+
import { type ClassifiedBinding } from './classify.js';
|
|
13
|
+
import { type ProfileIndex } from './profile-index.js';
|
|
14
|
+
import { type RekorClient } from './log/rekor.js';
|
|
15
|
+
export interface LookupDeps {
|
|
16
|
+
rekor: RekorClient;
|
|
17
|
+
/** Epoch ms for staleness classification; defaults to the current time. */
|
|
18
|
+
now?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface LookupEntryProblem {
|
|
21
|
+
uuid: string;
|
|
22
|
+
error: string;
|
|
23
|
+
}
|
|
24
|
+
export interface LookupResult {
|
|
25
|
+
index: ProfileIndex | null;
|
|
26
|
+
classified: ClassifiedBinding[];
|
|
27
|
+
/** Entries the log could not return (network, 404). */
|
|
28
|
+
unreachable: LookupEntryProblem[];
|
|
29
|
+
/** Entries that failed integrity or sanity checks — treat as hostile index content. */
|
|
30
|
+
invalid: LookupEntryProblem[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Run the lookup pipeline over an already-obtained index (e.g. the
|
|
34
|
+
* user's file merged with an operator overlay).
|
|
35
|
+
*/
|
|
36
|
+
export declare function lookupFromIndex(index: ProfileIndex, deps: LookupDeps): Promise<LookupResult>;
|
|
37
|
+
export interface LookupBindingsDeps extends LookupDeps {
|
|
38
|
+
/** Injectable fetch for the index file request. */
|
|
39
|
+
fetch?: typeof fetch;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Fetch the user's published `passportsign-index.json` and resolve it.
|
|
43
|
+
* `index: null` in the result means the user has not published one.
|
|
44
|
+
*/
|
|
45
|
+
export declare function lookupBindings(githubUsername: string, deps: LookupBindingsDeps): Promise<LookupResult>;
|
|
46
|
+
//# sourceMappingURL=lookup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../src/lookup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,gBAAgB,CAAC;AAE3E,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,uDAAuD;IACvD,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,uFAAuF;IACvF,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAsED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,YAAY,CAAC,CA8BvB;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,YAAY,CAAC,CAQvB"}
|