• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.signatureContent = exports.toSignedEntity = void 0;
4const core_1 = require("@sigstore/core");
5const dsse_1 = require("./dsse");
6const message_1 = require("./message");
7function toSignedEntity(bundle, artifact) {
8    const { tlogEntries, timestampVerificationData } = bundle.verificationMaterial;
9    const timestamps = [];
10    for (const entry of tlogEntries) {
11        timestamps.push({
12            $case: 'transparency-log',
13            tlogEntry: entry,
14        });
15    }
16    for (const ts of timestampVerificationData?.rfc3161Timestamps ?? []) {
17        timestamps.push({
18            $case: 'timestamp-authority',
19            timestamp: core_1.RFC3161Timestamp.parse(ts.signedTimestamp),
20        });
21    }
22    return {
23        signature: signatureContent(bundle, artifact),
24        key: key(bundle),
25        tlogEntries,
26        timestamps,
27    };
28}
29exports.toSignedEntity = toSignedEntity;
30function signatureContent(bundle, artifact) {
31    switch (bundle.content.$case) {
32        case 'dsseEnvelope':
33            return new dsse_1.DSSESignatureContent(bundle.content.dsseEnvelope);
34        case 'messageSignature':
35            return new message_1.MessageSignatureContent(bundle.content.messageSignature, artifact);
36    }
37}
38exports.signatureContent = signatureContent;
39function key(bundle) {
40    switch (bundle.verificationMaterial.content.$case) {
41        case 'publicKey':
42            return {
43                $case: 'public-key',
44                hint: bundle.verificationMaterial.content.publicKey.hint,
45            };
46        case 'x509CertificateChain':
47            return {
48                $case: 'certificate',
49                certificate: core_1.X509Certificate.parse(bundle.verificationMaterial.content.x509CertificateChain
50                    .certificates[0].rawBytes),
51            };
52        case 'certificate':
53            return {
54                $case: 'certificate',
55                certificate: core_1.X509Certificate.parse(bundle.verificationMaterial.content.certificate.rawBytes),
56            };
57    }
58}
59