@nexart/ai-execution 0.8.0 → 0.9.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/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as CreateSnapshotParams, A as AiExecutionSnapshotV1, V as VerificationResult, a as CerMeta, B as BundleDeclaration, b as CerAiExecutionBundle, c as CertifyDecisionParams, R as RunBuilderOptions, S as StepParams, d as RunSummary, e as AttestOptions, f as AttestationResult, g as SanitizeStorageOptions, h as AttestationReceipt, N as NodeKeysDocument, i as NodeReceiptVerifyResult, j as SignedAttestationReceipt, k as CerVerifyCode, l as AiefVerifyResult, T as ToolEvent, m as RunSummaryVerifyResult, n as AiefProfile } from './types-CcqCDPrD.cjs';
2
- export { o as AiExecutionParameters, p as AttestationReceiptResult, q as ClientDefaults, r as NexArtClient, P as ProviderCallParams, s as ProviderCallResult, t as ProviderConfig, u as RedactionEnvelope, W as WrappedExecutionParams, v as WrappedExecutionResult } from './types-CcqCDPrD.cjs';
1
+ import { C as CreateSnapshotParams, A as AiExecutionSnapshotV1, V as VerificationResult, a as CerMeta, B as BundleDeclaration, b as CerAiExecutionBundle, c as CertifyDecisionParams, R as RunBuilderOptions, S as StepParams, d as RunSummary, e as AttestOptions, f as AttestationResult, g as SanitizeStorageOptions, h as AttestationReceipt, N as NodeKeysDocument, i as NodeReceiptVerifyResult, j as SignedAttestationReceipt, k as CerVerifyCode, l as AiefVerifyResult, T as ToolEvent, m as RunSummaryVerifyResult, n as AiefProfile } from './types-C5t12OK8.cjs';
2
+ export { o as AiExecutionParameters, p as AttestationReceiptResult, q as ClientDefaults, r as NexArtClient, P as ProviderCallParams, s as ProviderCallResult, t as ProviderConfig, u as RedactionEnvelope, W as WrappedExecutionParams, v as WrappedExecutionResult } from './types-C5t12OK8.cjs';
3
3
  export { wrapProvider } from './providers/wrap.cjs';
4
4
 
5
5
  declare class CerVerificationError extends Error {
@@ -501,4 +501,68 @@ interface CertifyAndAttestRunResult {
501
501
  */
502
502
  declare function certifyAndAttestRun(steps: StepParams[], options?: CertifyAndAttestRunOptions): Promise<CertifyAndAttestRunResult>;
503
503
 
504
- export { AiExecutionSnapshotV1, AiefProfile, AiefVerifyResult, AttestOptions, AttestationReceipt, AttestationResult, BundleDeclaration, CerAiExecutionBundle, CerAttestationError, CerMeta, CerVerificationError, CerVerifyCode, CerVerifyCode as CerVerifyCodeType, type CertifyAndAttestRunOptions, type CertifyAndAttestRunResult, CertifyDecisionParams, CreateSnapshotParams, type ExportVerifiableRedactedOptions, type ExportVerifiableRedactedProvenance, type ExportVerifiableRedactedResult, type MakeToolEventParams, NodeKeysDocument, NodeReceiptVerifyResult, type ProfileValidationResult, type RedactBeforeSealPolicy, RunBuilder, RunBuilderOptions, RunSummary, RunSummaryVerifyResult, SanitizeStorageOptions, SignedAttestationReceipt, StepParams, ToolEvent, VerificationResult, type VerifyRunSummaryOptions, attest, attestIfNeeded, certifyAndAttestDecision, certifyAndAttestRun, certifyDecision, certifyDecisionFromProviderCall, computeInputHash, computeOutputHash, createClient, createSnapshot, exportCer, exportVerifiableRedacted, fetchNodeKeys, getAttestationReceipt, hasAttestation, hashCanonicalJson, hashToolOutput, hashUtf8, importCer, makeToolEvent, mapToAiefReason, redactBeforeSeal, sanitizeForAttestation, sanitizeForStamp, sanitizeForStorage, sealCer, selectNodeKey, sha256Hex, toCanonicalJson, validateProfile, verifyCer as verify, verifyAief, verifyBundleAttestation, verifyCer, verifyNodeReceiptSignature, verifyRunSummary, verifySnapshot };
504
+ /**
505
+ * CER Protocol verification types — v0.9.0
506
+ *
507
+ * These are the canonical structured verification types for the NexArt
508
+ * Certified Execution Record (CER) Protocol. All NexArt-compatible verifiers
509
+ * should produce a CerVerificationResult.
510
+ *
511
+ * NOTE: The existing VerificationResult type (ok/errors/code shape) is preserved
512
+ * for backward compatibility. CerVerificationResult is the new protocol-aligned type.
513
+ */
514
+ type VerificationStatus = 'VERIFIED' | 'FAILED' | 'NOT_FOUND';
515
+ type CheckStatus = 'PASS' | 'FAIL' | 'SKIPPED';
516
+ declare const ReasonCode: {
517
+ readonly BUNDLE_HASH_MISMATCH: "BUNDLE_HASH_MISMATCH";
518
+ readonly NODE_SIGNATURE_INVALID: "NODE_SIGNATURE_INVALID";
519
+ readonly NODE_SIGNATURE_MISSING: "NODE_SIGNATURE_MISSING";
520
+ readonly RECEIPT_HASH_MISMATCH: "RECEIPT_HASH_MISMATCH";
521
+ readonly SCHEMA_VERSION_UNSUPPORTED: "SCHEMA_VERSION_UNSUPPORTED";
522
+ readonly RECORD_NOT_FOUND: "RECORD_NOT_FOUND";
523
+ readonly BUNDLE_CORRUPTED: "BUNDLE_CORRUPTED";
524
+ };
525
+ type ReasonCode = typeof ReasonCode[keyof typeof ReasonCode];
526
+ /**
527
+ * Canonical protocol verification result.
528
+ *
529
+ * Produced by verifyAiCerBundleDetailed() and verifyCodeModeSnapshotDetailed().
530
+ * All checks that are not applicable to a given bundle type are SKIPPED (never FAIL).
531
+ */
532
+ interface CerVerificationResult {
533
+ status: VerificationStatus;
534
+ checks: {
535
+ bundleIntegrity: CheckStatus;
536
+ nodeSignature: CheckStatus;
537
+ receiptConsistency: CheckStatus;
538
+ };
539
+ reasonCodes: ReasonCode[];
540
+ certificateHash: string;
541
+ bundleType: string;
542
+ verifiedAt: string;
543
+ verifier: string;
544
+ }
545
+
546
+ /**
547
+ * verifyAiCerBundleDetailed — protocol-aligned AI CER verifier
548
+ *
549
+ * Returns a CerVerificationResult conforming to the CER Protocol spec.
550
+ * Wraps the existing verifyCer() + hasAttestation() helpers and maps
551
+ * their results into the structured protocol schema.
552
+ */
553
+
554
+ /**
555
+ * Verify a CER AI execution bundle and return a structured CerVerificationResult.
556
+ *
557
+ * - bundleIntegrity: PASS/FAIL based on certificateHash integrity
558
+ * - nodeSignature: PASS if attestation present and structurally valid; SKIPPED if absent
559
+ * - receiptConsistency: mirrors nodeSignature (SKIPPED when no attestation)
560
+ *
561
+ * Attestation is optional — its absence sets nodeSignature/receiptConsistency
562
+ * to SKIPPED, not FAIL.
563
+ *
564
+ * @param bundle - The raw CER bundle (typed as unknown for safety; validated internally)
565
+ */
566
+ declare function verifyAiCerBundleDetailed(bundle: unknown): CerVerificationResult;
567
+
568
+ export { AiExecutionSnapshotV1, AiefProfile, AiefVerifyResult, AttestOptions, AttestationReceipt, AttestationResult, BundleDeclaration, CerAiExecutionBundle, CerAttestationError, CerMeta, CerVerificationError, type CerVerificationResult, CerVerifyCode, CerVerifyCode as CerVerifyCodeType, type CertifyAndAttestRunOptions, type CertifyAndAttestRunResult, CertifyDecisionParams, type CheckStatus, CreateSnapshotParams, type ExportVerifiableRedactedOptions, type ExportVerifiableRedactedProvenance, type ExportVerifiableRedactedResult, type MakeToolEventParams, NodeKeysDocument, NodeReceiptVerifyResult, type ProfileValidationResult, ReasonCode, ReasonCode as ReasonCodeType, type RedactBeforeSealPolicy, RunBuilder, RunBuilderOptions, RunSummary, RunSummaryVerifyResult, SanitizeStorageOptions, SignedAttestationReceipt, StepParams, ToolEvent, VerificationResult, type VerificationStatus, type VerifyRunSummaryOptions, attest, attestIfNeeded, certifyAndAttestDecision, certifyAndAttestRun, certifyDecision, certifyDecisionFromProviderCall, computeInputHash, computeOutputHash, createClient, createSnapshot, exportCer, exportVerifiableRedacted, fetchNodeKeys, getAttestationReceipt, hasAttestation, hashCanonicalJson, hashToolOutput, hashUtf8, importCer, makeToolEvent, mapToAiefReason, redactBeforeSeal, sanitizeForAttestation, sanitizeForStamp, sanitizeForStorage, sealCer, selectNodeKey, sha256Hex, toCanonicalJson, validateProfile, verifyCer as verify, verifyAiCerBundleDetailed, verifyAief, verifyBundleAttestation, verifyCer, verifyNodeReceiptSignature, verifyRunSummary, verifySnapshot };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as CreateSnapshotParams, A as AiExecutionSnapshotV1, V as VerificationResult, a as CerMeta, B as BundleDeclaration, b as CerAiExecutionBundle, c as CertifyDecisionParams, R as RunBuilderOptions, S as StepParams, d as RunSummary, e as AttestOptions, f as AttestationResult, g as SanitizeStorageOptions, h as AttestationReceipt, N as NodeKeysDocument, i as NodeReceiptVerifyResult, j as SignedAttestationReceipt, k as CerVerifyCode, l as AiefVerifyResult, T as ToolEvent, m as RunSummaryVerifyResult, n as AiefProfile } from './types-CcqCDPrD.js';
2
- export { o as AiExecutionParameters, p as AttestationReceiptResult, q as ClientDefaults, r as NexArtClient, P as ProviderCallParams, s as ProviderCallResult, t as ProviderConfig, u as RedactionEnvelope, W as WrappedExecutionParams, v as WrappedExecutionResult } from './types-CcqCDPrD.js';
1
+ import { C as CreateSnapshotParams, A as AiExecutionSnapshotV1, V as VerificationResult, a as CerMeta, B as BundleDeclaration, b as CerAiExecutionBundle, c as CertifyDecisionParams, R as RunBuilderOptions, S as StepParams, d as RunSummary, e as AttestOptions, f as AttestationResult, g as SanitizeStorageOptions, h as AttestationReceipt, N as NodeKeysDocument, i as NodeReceiptVerifyResult, j as SignedAttestationReceipt, k as CerVerifyCode, l as AiefVerifyResult, T as ToolEvent, m as RunSummaryVerifyResult, n as AiefProfile } from './types-C5t12OK8.js';
2
+ export { o as AiExecutionParameters, p as AttestationReceiptResult, q as ClientDefaults, r as NexArtClient, P as ProviderCallParams, s as ProviderCallResult, t as ProviderConfig, u as RedactionEnvelope, W as WrappedExecutionParams, v as WrappedExecutionResult } from './types-C5t12OK8.js';
3
3
  export { wrapProvider } from './providers/wrap.js';
4
4
 
5
5
  declare class CerVerificationError extends Error {
@@ -501,4 +501,68 @@ interface CertifyAndAttestRunResult {
501
501
  */
502
502
  declare function certifyAndAttestRun(steps: StepParams[], options?: CertifyAndAttestRunOptions): Promise<CertifyAndAttestRunResult>;
503
503
 
504
- export { AiExecutionSnapshotV1, AiefProfile, AiefVerifyResult, AttestOptions, AttestationReceipt, AttestationResult, BundleDeclaration, CerAiExecutionBundle, CerAttestationError, CerMeta, CerVerificationError, CerVerifyCode, CerVerifyCode as CerVerifyCodeType, type CertifyAndAttestRunOptions, type CertifyAndAttestRunResult, CertifyDecisionParams, CreateSnapshotParams, type ExportVerifiableRedactedOptions, type ExportVerifiableRedactedProvenance, type ExportVerifiableRedactedResult, type MakeToolEventParams, NodeKeysDocument, NodeReceiptVerifyResult, type ProfileValidationResult, type RedactBeforeSealPolicy, RunBuilder, RunBuilderOptions, RunSummary, RunSummaryVerifyResult, SanitizeStorageOptions, SignedAttestationReceipt, StepParams, ToolEvent, VerificationResult, type VerifyRunSummaryOptions, attest, attestIfNeeded, certifyAndAttestDecision, certifyAndAttestRun, certifyDecision, certifyDecisionFromProviderCall, computeInputHash, computeOutputHash, createClient, createSnapshot, exportCer, exportVerifiableRedacted, fetchNodeKeys, getAttestationReceipt, hasAttestation, hashCanonicalJson, hashToolOutput, hashUtf8, importCer, makeToolEvent, mapToAiefReason, redactBeforeSeal, sanitizeForAttestation, sanitizeForStamp, sanitizeForStorage, sealCer, selectNodeKey, sha256Hex, toCanonicalJson, validateProfile, verifyCer as verify, verifyAief, verifyBundleAttestation, verifyCer, verifyNodeReceiptSignature, verifyRunSummary, verifySnapshot };
504
+ /**
505
+ * CER Protocol verification types — v0.9.0
506
+ *
507
+ * These are the canonical structured verification types for the NexArt
508
+ * Certified Execution Record (CER) Protocol. All NexArt-compatible verifiers
509
+ * should produce a CerVerificationResult.
510
+ *
511
+ * NOTE: The existing VerificationResult type (ok/errors/code shape) is preserved
512
+ * for backward compatibility. CerVerificationResult is the new protocol-aligned type.
513
+ */
514
+ type VerificationStatus = 'VERIFIED' | 'FAILED' | 'NOT_FOUND';
515
+ type CheckStatus = 'PASS' | 'FAIL' | 'SKIPPED';
516
+ declare const ReasonCode: {
517
+ readonly BUNDLE_HASH_MISMATCH: "BUNDLE_HASH_MISMATCH";
518
+ readonly NODE_SIGNATURE_INVALID: "NODE_SIGNATURE_INVALID";
519
+ readonly NODE_SIGNATURE_MISSING: "NODE_SIGNATURE_MISSING";
520
+ readonly RECEIPT_HASH_MISMATCH: "RECEIPT_HASH_MISMATCH";
521
+ readonly SCHEMA_VERSION_UNSUPPORTED: "SCHEMA_VERSION_UNSUPPORTED";
522
+ readonly RECORD_NOT_FOUND: "RECORD_NOT_FOUND";
523
+ readonly BUNDLE_CORRUPTED: "BUNDLE_CORRUPTED";
524
+ };
525
+ type ReasonCode = typeof ReasonCode[keyof typeof ReasonCode];
526
+ /**
527
+ * Canonical protocol verification result.
528
+ *
529
+ * Produced by verifyAiCerBundleDetailed() and verifyCodeModeSnapshotDetailed().
530
+ * All checks that are not applicable to a given bundle type are SKIPPED (never FAIL).
531
+ */
532
+ interface CerVerificationResult {
533
+ status: VerificationStatus;
534
+ checks: {
535
+ bundleIntegrity: CheckStatus;
536
+ nodeSignature: CheckStatus;
537
+ receiptConsistency: CheckStatus;
538
+ };
539
+ reasonCodes: ReasonCode[];
540
+ certificateHash: string;
541
+ bundleType: string;
542
+ verifiedAt: string;
543
+ verifier: string;
544
+ }
545
+
546
+ /**
547
+ * verifyAiCerBundleDetailed — protocol-aligned AI CER verifier
548
+ *
549
+ * Returns a CerVerificationResult conforming to the CER Protocol spec.
550
+ * Wraps the existing verifyCer() + hasAttestation() helpers and maps
551
+ * their results into the structured protocol schema.
552
+ */
553
+
554
+ /**
555
+ * Verify a CER AI execution bundle and return a structured CerVerificationResult.
556
+ *
557
+ * - bundleIntegrity: PASS/FAIL based on certificateHash integrity
558
+ * - nodeSignature: PASS if attestation present and structurally valid; SKIPPED if absent
559
+ * - receiptConsistency: mirrors nodeSignature (SKIPPED when no attestation)
560
+ *
561
+ * Attestation is optional — its absence sets nodeSignature/receiptConsistency
562
+ * to SKIPPED, not FAIL.
563
+ *
564
+ * @param bundle - The raw CER bundle (typed as unknown for safety; validated internally)
565
+ */
566
+ declare function verifyAiCerBundleDetailed(bundle: unknown): CerVerificationResult;
567
+
568
+ export { AiExecutionSnapshotV1, AiefProfile, AiefVerifyResult, AttestOptions, AttestationReceipt, AttestationResult, BundleDeclaration, CerAiExecutionBundle, CerAttestationError, CerMeta, CerVerificationError, type CerVerificationResult, CerVerifyCode, CerVerifyCode as CerVerifyCodeType, type CertifyAndAttestRunOptions, type CertifyAndAttestRunResult, CertifyDecisionParams, type CheckStatus, CreateSnapshotParams, type ExportVerifiableRedactedOptions, type ExportVerifiableRedactedProvenance, type ExportVerifiableRedactedResult, type MakeToolEventParams, NodeKeysDocument, NodeReceiptVerifyResult, type ProfileValidationResult, ReasonCode, ReasonCode as ReasonCodeType, type RedactBeforeSealPolicy, RunBuilder, RunBuilderOptions, RunSummary, RunSummaryVerifyResult, SanitizeStorageOptions, SignedAttestationReceipt, StepParams, ToolEvent, VerificationResult, type VerificationStatus, type VerifyRunSummaryOptions, attest, attestIfNeeded, certifyAndAttestDecision, certifyAndAttestRun, certifyDecision, certifyDecisionFromProviderCall, computeInputHash, computeOutputHash, createClient, createSnapshot, exportCer, exportVerifiableRedacted, fetchNodeKeys, getAttestationReceipt, hasAttestation, hashCanonicalJson, hashToolOutput, hashUtf8, importCer, makeToolEvent, mapToAiefReason, redactBeforeSeal, sanitizeForAttestation, sanitizeForStamp, sanitizeForStorage, sealCer, selectNodeKey, sha256Hex, toCanonicalJson, validateProfile, verifyCer as verify, verifyAiCerBundleDetailed, verifyAief, verifyBundleAttestation, verifyCer, verifyNodeReceiptSignature, verifyRunSummary, verifySnapshot };
package/dist/index.mjs CHANGED
@@ -382,7 +382,7 @@ function certifyDecision(params) {
382
382
  conversationId: params.conversationId,
383
383
  prevStepHash: params.prevStepHash
384
384
  });
385
- return sealCer(snapshot, { meta: params.meta });
385
+ return sealCer(snapshot, { createdAt: params.createdAt, meta: params.meta });
386
386
  }
387
387
 
388
388
  // src/run.ts
@@ -2463,10 +2463,91 @@ async function certifyAndAttestRun(steps, options) {
2463
2463
  finalStepHash: runSummary.finalStepHash
2464
2464
  };
2465
2465
  }
2466
+
2467
+ // src/cerProtocol.ts
2468
+ var ReasonCode = {
2469
+ BUNDLE_HASH_MISMATCH: "BUNDLE_HASH_MISMATCH",
2470
+ NODE_SIGNATURE_INVALID: "NODE_SIGNATURE_INVALID",
2471
+ NODE_SIGNATURE_MISSING: "NODE_SIGNATURE_MISSING",
2472
+ RECEIPT_HASH_MISMATCH: "RECEIPT_HASH_MISMATCH",
2473
+ SCHEMA_VERSION_UNSUPPORTED: "SCHEMA_VERSION_UNSUPPORTED",
2474
+ RECORD_NOT_FOUND: "RECORD_NOT_FOUND",
2475
+ BUNDLE_CORRUPTED: "BUNDLE_CORRUPTED"
2476
+ };
2477
+
2478
+ // src/verifyDetailed.ts
2479
+ function mapCerCodeToReasonCodes(cerCode) {
2480
+ switch (cerCode) {
2481
+ case CerVerifyCode.CERTIFICATE_HASH_MISMATCH:
2482
+ case CerVerifyCode.SNAPSHOT_HASH_MISMATCH:
2483
+ case CerVerifyCode.INPUT_HASH_MISMATCH:
2484
+ case CerVerifyCode.OUTPUT_HASH_MISMATCH:
2485
+ return [ReasonCode.BUNDLE_HASH_MISMATCH];
2486
+ case CerVerifyCode.SCHEMA_ERROR:
2487
+ return [ReasonCode.SCHEMA_VERSION_UNSUPPORTED];
2488
+ case CerVerifyCode.CANONICALIZATION_ERROR:
2489
+ case CerVerifyCode.UNKNOWN_ERROR:
2490
+ case CerVerifyCode.INVALID_SHA256_FORMAT:
2491
+ return [ReasonCode.BUNDLE_CORRUPTED];
2492
+ case CerVerifyCode.ATTESTATION_INVALID_SIGNATURE:
2493
+ case CerVerifyCode.ATTESTATION_KEY_FORMAT_UNSUPPORTED:
2494
+ case CerVerifyCode.ATTESTATION_KEY_NOT_FOUND:
2495
+ return [ReasonCode.NODE_SIGNATURE_INVALID];
2496
+ case CerVerifyCode.ATTESTATION_MISSING:
2497
+ return [ReasonCode.NODE_SIGNATURE_MISSING];
2498
+ default:
2499
+ return [];
2500
+ }
2501
+ }
2502
+ function verifyAiCerBundleDetailed(bundle) {
2503
+ const verifiedAt = (/* @__PURE__ */ new Date()).toISOString();
2504
+ const verifier = "@nexart/ai-execution";
2505
+ if (!bundle || typeof bundle !== "object" || Array.isArray(bundle)) {
2506
+ return {
2507
+ status: "FAILED",
2508
+ checks: { bundleIntegrity: "FAIL", nodeSignature: "SKIPPED", receiptConsistency: "SKIPPED" },
2509
+ reasonCodes: [ReasonCode.BUNDLE_CORRUPTED],
2510
+ certificateHash: "",
2511
+ bundleType: "",
2512
+ verifiedAt,
2513
+ verifier
2514
+ };
2515
+ }
2516
+ const b = bundle;
2517
+ const bundleType = typeof b["bundleType"] === "string" ? b["bundleType"] : "";
2518
+ const certificateHash = typeof b["certificateHash"] === "string" ? b["certificateHash"] : "";
2519
+ if (bundleType !== "cer.ai.execution.v1") {
2520
+ return {
2521
+ status: "FAILED",
2522
+ checks: { bundleIntegrity: "FAIL", nodeSignature: "SKIPPED", receiptConsistency: "SKIPPED" },
2523
+ reasonCodes: [ReasonCode.SCHEMA_VERSION_UNSUPPORTED],
2524
+ certificateHash,
2525
+ bundleType,
2526
+ verifiedAt,
2527
+ verifier
2528
+ };
2529
+ }
2530
+ const cerResult = verifyCer(bundle);
2531
+ const bundleIntegrity = cerResult.ok ? "PASS" : "FAIL";
2532
+ const attestationPresent = hasAttestation(bundle);
2533
+ const nodeSignature = attestationPresent ? "PASS" : "SKIPPED";
2534
+ const receiptConsistency = attestationPresent ? "PASS" : "SKIPPED";
2535
+ const reasonCodes = cerResult.ok ? [] : mapCerCodeToReasonCodes(cerResult.code);
2536
+ return {
2537
+ status: cerResult.ok ? "VERIFIED" : "FAILED",
2538
+ checks: { bundleIntegrity, nodeSignature, receiptConsistency },
2539
+ reasonCodes,
2540
+ certificateHash,
2541
+ bundleType,
2542
+ verifiedAt,
2543
+ verifier
2544
+ };
2545
+ }
2466
2546
  export {
2467
2547
  CerAttestationError,
2468
2548
  CerVerificationError,
2469
2549
  CerVerifyCode,
2550
+ ReasonCode,
2470
2551
  RunBuilder,
2471
2552
  attest,
2472
2553
  attestIfNeeded,
@@ -2499,6 +2580,7 @@ export {
2499
2580
  toCanonicalJson,
2500
2581
  validateProfile,
2501
2582
  verifyCer as verify,
2583
+ verifyAiCerBundleDetailed,
2502
2584
  verifyAief,
2503
2585
  verifyBundleAttestation,
2504
2586
  verifyCer,