index.js 2.0 KB

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