@naylence/advanced-security 0.4.3 → 0.4.5

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.
Files changed (32) hide show
  1. package/dist/browser/index.cjs +204 -18
  2. package/dist/browser/index.mjs +203 -17
  3. package/dist/cjs/naylence/fame/expr/builtins.js +1 -1
  4. package/dist/cjs/naylence/fame/expr/builtins.js.map +1 -1
  5. package/dist/cjs/naylence/fame/security/auth/policy/advanced-authorization-policy.js +35 -13
  6. package/dist/cjs/naylence/fame/security/auth/policy/advanced-authorization-policy.js.map +1 -1
  7. package/dist/cjs/naylence/fame/security/auth/policy/expr-builtins.js +166 -2
  8. package/dist/cjs/naylence/fame/security/auth/policy/expr-builtins.js.map +1 -1
  9. package/dist/cjs/naylence/fame/security/auth/policy/index.js +1 -1
  10. package/dist/cjs/naylence/fame/security/auth/policy/index.js.map +1 -1
  11. package/dist/cjs/version.js +2 -2
  12. package/dist/esm/naylence/fame/expr/builtins.js +1 -1
  13. package/dist/esm/naylence/fame/expr/builtins.js.map +1 -1
  14. package/dist/esm/naylence/fame/security/auth/policy/advanced-authorization-policy.js +35 -13
  15. package/dist/esm/naylence/fame/security/auth/policy/advanced-authorization-policy.js.map +1 -1
  16. package/dist/esm/naylence/fame/security/auth/policy/expr-builtins.js +166 -2
  17. package/dist/esm/naylence/fame/security/auth/policy/expr-builtins.js.map +1 -1
  18. package/dist/esm/naylence/fame/security/auth/policy/index.js +1 -1
  19. package/dist/esm/naylence/fame/security/auth/policy/index.js.map +1 -1
  20. package/dist/esm/version.js +2 -2
  21. package/dist/node/index.cjs +206 -18
  22. package/dist/node/index.mjs +204 -18
  23. package/dist/node/node.cjs +206 -18
  24. package/dist/node/node.mjs +204 -18
  25. package/dist/types/naylence/fame/security/auth/policy/advanced-authorization-policy.d.ts +1 -1
  26. package/dist/types/naylence/fame/security/auth/policy/advanced-authorization-policy.d.ts.map +1 -1
  27. package/dist/types/naylence/fame/security/auth/policy/expr-builtins.d.ts +71 -1
  28. package/dist/types/naylence/fame/security/auth/policy/expr-builtins.d.ts.map +1 -1
  29. package/dist/types/naylence/fame/security/auth/policy/index.d.ts +1 -1
  30. package/dist/types/naylence/fame/security/auth/policy/index.d.ts.map +1 -1
  31. package/dist/types/version.d.ts +1 -1
  32. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  var factory = require('@naylence/factory');
4
4
  var runtime = require('@naylence/runtime');
5
- var sha256 = require('@noble/hashes/sha256');
5
+ var sha2 = require('@noble/hashes/sha2');
6
6
  var core = require('@naylence/core');
7
7
  var asn1Schema = require('@peculiar/asn1-schema');
8
8
  var asn1Csr = require('@peculiar/asn1-csr');
@@ -572,12 +572,12 @@ async function registerAdvancedSecurityFactories(registrar = factory.Registry, o
572
572
  }
573
573
 
574
574
  // This file is auto-generated during build - do not edit manually
575
- // Generated from package.json version: 0.4.3
575
+ // Generated from package.json version: 0.4.5
576
576
  /**
577
577
  * The package version, injected at build time.
578
578
  * @internal
579
579
  */
580
- const VERSION = '0.4.3';
580
+ const VERSION = '0.4.5';
581
581
 
582
582
  async function registerAdvancedSecurityPluginFactories(registrar = factory.Registry) {
583
583
  await registerAdvancedSecurityFactories(registrar);
@@ -1921,7 +1921,7 @@ const secure_hash = (args) => {
1921
1921
  }
1922
1922
  // Use generateFingerprintSync from @naylence/core
1923
1923
  // This provides SHA-256 hashing, base62 encoding, and profanity filtering
1924
- return core.generateFingerprintSync(input_str, length, sha256.sha256);
1924
+ return core.generateFingerprintSync(input_str, length, sha2.sha256);
1925
1925
  };
1926
1926
  // ============================================================
1927
1927
  // Pattern Helpers (BSL-only)
@@ -2461,8 +2461,86 @@ function evaluateAsBoolean(ast, context) {
2461
2461
  * Null handling semantics:
2462
2462
  * - Scope predicate builtins (has_scope, has_any_scope, has_all_scopes)
2463
2463
  * return `false` when passed `null` for required args.
2464
+ * - Security predicate builtins (is_signed, is_encrypted, is_encrypted_at_least)
2465
+ * return `false` when the envelope lacks the required security posture.
2464
2466
  * - Wrong non-null types still raise BuiltinError to surface real bugs.
2465
2467
  */
2468
+ /**
2469
+ * Valid encryption levels for is_encrypted_at_least comparisons.
2470
+ */
2471
+ const VALID_ENCRYPTION_LEVELS = [
2472
+ "plaintext",
2473
+ "channel",
2474
+ "sealed",
2475
+ ];
2476
+ /**
2477
+ * Encryption level ordering for comparison.
2478
+ * Higher number = stronger encryption.
2479
+ */
2480
+ const ENCRYPTION_LEVEL_ORDER = {
2481
+ plaintext: 0,
2482
+ channel: 1,
2483
+ sealed: 2,
2484
+ };
2485
+ /**
2486
+ * Normalizes an encryption algorithm string to an EncryptionLevel.
2487
+ *
2488
+ * Mapping rules:
2489
+ * - null/undefined => "plaintext" (no encryption present)
2490
+ * - alg contains "-channel" => "channel" (e.g., "chacha20-poly1305-channel")
2491
+ * - alg contains "-sealed" => "sealed" (explicit sealed marker)
2492
+ * - alg matches ECDH-ES pattern with AEAD cipher => "sealed" (e.g., "ECDH-ES+A256GCM")
2493
+ * - otherwise => "unknown"
2494
+ *
2495
+ * Currently supported algorithms:
2496
+ * - Channel: "chacha20-poly1305-channel"
2497
+ * - Sealed: "ECDH-ES+A256GCM"
2498
+ *
2499
+ * This helper is centralized to ensure consistent mapping across TS and Python.
2500
+ */
2501
+ function normalizeEncryptionLevelFromAlg(alg) {
2502
+ if (alg === null || alg === undefined) {
2503
+ return "plaintext";
2504
+ }
2505
+ const algLower = alg.toLowerCase();
2506
+ // Check for channel encryption (e.g., "chacha20-poly1305-channel")
2507
+ // Must check before other patterns since channel suffix is explicit
2508
+ if (algLower.includes("-channel")) {
2509
+ return "channel";
2510
+ }
2511
+ // Check for explicit sealed marker
2512
+ if (algLower.includes("-sealed")) {
2513
+ return "sealed";
2514
+ }
2515
+ // ECDH-ES key agreement with AEAD cipher => sealed encryption
2516
+ // Pattern: "ECDH-ES+A256GCM", "ECDH-ES+A128GCM", etc.
2517
+ if (algLower.startsWith("ecdh-es") && algLower.includes("+a")) {
2518
+ return "sealed";
2519
+ }
2520
+ return "unknown";
2521
+ }
2522
+ /**
2523
+ * Creates security bindings from an envelope's sec header.
2524
+ * Exposes only metadata, never raw values like sig.val or enc.val.
2525
+ */
2526
+ function createSecurityBindings(sec) {
2527
+ const sigPresent = sec?.sig !== undefined;
2528
+ const encPresent = sec?.enc !== undefined;
2529
+ return {
2530
+ sig: {
2531
+ present: sigPresent,
2532
+ kid: sec?.sig?.kid ?? null,
2533
+ },
2534
+ enc: {
2535
+ present: encPresent,
2536
+ alg: sec?.enc?.alg ?? null,
2537
+ kid: sec?.enc?.kid ?? null,
2538
+ level: encPresent
2539
+ ? normalizeEncryptionLevelFromAlg(sec?.enc?.alg ?? null)
2540
+ : "plaintext",
2541
+ },
2542
+ };
2543
+ }
2466
2544
  /**
2467
2545
  * Checks if a value is null.
2468
2546
  */
@@ -2471,9 +2549,21 @@ function isNull(value) {
2471
2549
  }
2472
2550
  /**
2473
2551
  * Creates a function registry with auth helpers installed.
2552
+ *
2553
+ * This registry extends the base builtins with:
2554
+ * - Scope builtins: has_scope, has_any_scope, has_all_scopes
2555
+ * - Security builtins: is_signed, encryption_level, is_encrypted, is_encrypted_at_least
2474
2556
  */
2475
- function createAuthFunctionRegistry(grantedScopes = []) {
2476
- const scopes = grantedScopes ?? [];
2557
+ function createAuthFunctionRegistry(grantedScopesOrOptions = []) {
2558
+ // Handle both old signature (array) and new signature (options object)
2559
+ const options = Array.isArray(grantedScopesOrOptions)
2560
+ ? { grantedScopes: grantedScopesOrOptions }
2561
+ : grantedScopesOrOptions;
2562
+ const scopes = options.grantedScopes ?? [];
2563
+ const secBindings = options.securityBindings ?? {
2564
+ sig: { present: false},
2565
+ enc: { level: "plaintext" },
2566
+ };
2477
2567
  /**
2478
2568
  * Checks if any granted scope matches a pattern (using glob syntax).
2479
2569
  */
@@ -2529,11 +2619,85 @@ function createAuthFunctionRegistry(grantedScopes = []) {
2529
2619
  }
2530
2620
  return values.every((scope) => matchesScope(scope));
2531
2621
  };
2622
+ // ============================================================
2623
+ // Security posture builtins
2624
+ // ============================================================
2625
+ /**
2626
+ * is_signed() -> bool
2627
+ *
2628
+ * Returns true if the envelope has a signature present.
2629
+ * No arguments required.
2630
+ */
2631
+ const is_signed = (args) => {
2632
+ assertArgCount(args, 0, "is_signed");
2633
+ return secBindings.sig.present;
2634
+ };
2635
+ /**
2636
+ * encryption_level() -> string
2637
+ *
2638
+ * Returns the normalized encryption level: "plaintext" | "channel" | "sealed" | "unknown"
2639
+ * No arguments required.
2640
+ */
2641
+ const encryption_level = (args) => {
2642
+ assertArgCount(args, 0, "encryption_level");
2643
+ return secBindings.enc.level;
2644
+ };
2645
+ /**
2646
+ * is_encrypted() -> bool
2647
+ *
2648
+ * Returns true if the encryption level is not "plaintext".
2649
+ * This means the envelope has some form of encryption (channel, sealed, or unknown).
2650
+ * No arguments required.
2651
+ */
2652
+ const is_encrypted = (args) => {
2653
+ assertArgCount(args, 0, "is_encrypted");
2654
+ return secBindings.enc.level !== "plaintext";
2655
+ };
2656
+ /**
2657
+ * is_encrypted_at_least(level: string) -> bool
2658
+ *
2659
+ * Returns true if the envelope's encryption level meets or exceeds the required level.
2660
+ *
2661
+ * Level ordering: plaintext < channel < sealed
2662
+ *
2663
+ * Special handling:
2664
+ * - "unknown" encryption level does NOT satisfy "channel" or "sealed" (conservative)
2665
+ * - "plaintext" is always satisfied (any envelope meets at least plaintext)
2666
+ * - null argument => false (predicate-style)
2667
+ * - invalid level string => BuiltinError
2668
+ */
2669
+ const is_encrypted_at_least = (args) => {
2670
+ assertArgCount(args, 1, "is_encrypted_at_least");
2671
+ const requiredLevel = getArg(args, 0, "is_encrypted_at_least");
2672
+ // Null-tolerant: return false if level is null
2673
+ if (!assertStringOrNull(requiredLevel, "level", "is_encrypted_at_least")) {
2674
+ return false;
2675
+ }
2676
+ // Validate required level
2677
+ if (!VALID_ENCRYPTION_LEVELS.includes(requiredLevel)) {
2678
+ throw new BuiltinError("is_encrypted_at_least", `level must be one of: ${VALID_ENCRYPTION_LEVELS.join(", ")}; got "${requiredLevel}"`);
2679
+ }
2680
+ const currentLevel = secBindings.enc.level;
2681
+ const requiredOrder = ENCRYPTION_LEVEL_ORDER[requiredLevel] ?? 0;
2682
+ const currentOrder = ENCRYPTION_LEVEL_ORDER[currentLevel];
2683
+ // If current level is "unknown", it only satisfies "plaintext"
2684
+ if (currentOrder === undefined) {
2685
+ // "unknown" is treated as NOT meeting channel/sealed requirements
2686
+ return requiredOrder === 0; // Only plaintext is satisfied by unknown
2687
+ }
2688
+ return currentOrder >= requiredOrder;
2689
+ };
2532
2690
  return new Map([
2533
2691
  ...BUILTIN_FUNCTIONS,
2692
+ // Scope builtins
2534
2693
  ["has_scope", has_scope],
2535
2694
  ["has_any_scope", has_any_scope],
2536
2695
  ["has_all_scopes", has_all_scopes],
2696
+ // Security posture builtins
2697
+ ["is_signed", is_signed],
2698
+ ["encryption_level", encryption_level],
2699
+ ["is_encrypted", is_encrypted],
2700
+ ["is_encrypted_at_least", is_encrypted_at_least],
2537
2701
  ]);
2538
2702
  }
2539
2703
  /**
@@ -2612,6 +2776,9 @@ const VALID_FRAME_TYPES = [
2612
2776
  "CreditUpdate",
2613
2777
  "KeyAnnounce",
2614
2778
  "KeyRequest",
2779
+ "SecureOpen",
2780
+ "SecureAccept",
2781
+ "SecureClose",
2615
2782
  ];
2616
2783
  /**
2617
2784
  * Simple console logger implementation.
@@ -2673,19 +2840,33 @@ function extractClaims(context) {
2673
2840
  }
2674
2841
  /**
2675
2842
  * Creates a safe envelope subset for expression bindings.
2843
+ *
2844
+ * Exposes:
2845
+ * - id, sid, traceId, corrId, flowId, to
2846
+ * - frame: { type }
2847
+ * - sec: { sig: { present, kid }, enc: { present, alg, kid, level } }
2848
+ *
2849
+ * IMPORTANT: Does NOT expose raw security values (sig.val, enc.val).
2676
2850
  */
2677
2851
  function createEnvelopeBindings(envelope) {
2678
2852
  const frame = envelope.frame;
2679
2853
  const envelopeRecord = envelope;
2854
+ const sec = envelopeRecord.sec;
2855
+ const securityBindings = createSecurityBindings(sec);
2680
2856
  return {
2681
- id: envelope.id ?? null,
2682
- traceId: envelopeRecord.traceId ?? null,
2683
- corrId: envelopeRecord.corrId ?? null,
2684
- flowId: envelopeRecord.flowId ?? null,
2685
- to: extractAddress(envelope) ?? null,
2686
- frame: frame
2687
- ? { type: frame.type ?? null }
2688
- : { type: null },
2857
+ bindings: {
2858
+ id: envelope.id ?? null,
2859
+ sid: envelopeRecord.sid ?? null,
2860
+ traceId: envelopeRecord.traceId ?? null,
2861
+ corrId: envelopeRecord.corrId ?? null,
2862
+ flowId: envelopeRecord.flowId ?? null,
2863
+ to: extractAddress(envelope) ?? null,
2864
+ frame: frame
2865
+ ? { type: frame.type ?? null }
2866
+ : { type: null },
2867
+ sec: securityBindings,
2868
+ },
2869
+ securityBindings,
2689
2870
  };
2690
2871
  }
2691
2872
  /**
@@ -2839,11 +3020,12 @@ class AdvancedAuthorizationPolicy {
2839
3020
  continue;
2840
3021
  }
2841
3022
  if (rule.whenAst) {
2842
- // Lazy initialization of expression bindings
3023
+ // Lazy initialization of expression bindings and security context
2843
3024
  if (!expressionBindings) {
3025
+ const envelopeResult = createEnvelopeBindings(envelope);
2844
3026
  expressionBindings = {
2845
3027
  claims: extractClaims(context),
2846
- envelope: createEnvelopeBindings(envelope),
3028
+ envelope: envelopeResult.bindings,
2847
3029
  delivery: createDeliveryBindings(context, resolvedAction),
2848
3030
  node: createNodeBindings(node),
2849
3031
  time: {
@@ -2851,9 +3033,13 @@ class AdvancedAuthorizationPolicy {
2851
3033
  now_iso: new Date().toISOString(),
2852
3034
  },
2853
3035
  };
3036
+ // Create function registry with security bindings for security builtins
3037
+ functionRegistry = createAuthFunctionRegistry({
3038
+ grantedScopes,
3039
+ securityBindings: envelopeResult.securityBindings,
3040
+ });
2854
3041
  }
2855
- const functions = functionRegistry ?? createAuthFunctionRegistry(grantedScopes);
2856
- functionRegistry = functions;
3042
+ const functions = functionRegistry;
2857
3043
  const evalContext = {
2858
3044
  bindings: expressionBindings,
2859
3045
  limits: this.expressionLimits,
@@ -1,6 +1,6 @@
1
1
  import { ExtensionManager, Expressions, Registry, AbstractResourceFactory } from '@naylence/factory';
2
2
  import { ENCRYPTION_MANAGER_FACTORY_BASE_TYPE, getLogger, registerProfile, SECURITY_MANAGER_FACTORY_BASE_TYPE, KNOWN_POLICY_FIELDS, VALID_EFFECTS, compileGlobOnlyScopeRequirement, KNOWN_RULE_FIELDS, VALID_ACTIONS, compileGlobPattern, VALID_ORIGIN_TYPES, AUTHORIZATION_POLICY_FACTORY_BASE_TYPE, AuthorizationPolicyFactory, EncryptionResult, urlsafeBase64Decode, sealedDecrypt, sealedEncrypt, FIXED_PREFIX_LEN, urlsafeBase64Encode, EncryptionManagerFactory, requireCryptoSupport, SECURE_CHANNEL_MANAGER_FACTORY_BASE_TYPE, SecureChannelManagerFactory, ENVELOPE_SIGNER_FACTORY_BASE_TYPE, EnvelopeSignerFactory, SigningConfigClass, validateSigningKey, JWKValidationError, decodeBase64Url, canonicalJson, secureDigest, frameDigest, immutableHeaders, encodeUtf8, ENVELOPE_VERIFIER_FACTORY_BASE_TYPE, EnvelopeVerifierFactory, TrustStoreProviderFactory, TaskSpawner, getKeyStore, DefaultKeyManager, validateJwkComplete, currentTraceId, DeliveryOriginType, KEY_MANAGER_FACTORY_BASE_TYPE, KeyManagerFactory, KeyStoreFactory, BaseNodeEventListener, LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE, LoadBalancerStickinessManagerFactory, REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE, ReplicaStickinessManagerFactory, color, AnsiColor, validateHostLogicals, HTTP_CONNECTION_GRANT_TYPE, formatTimestamp, jsonDumps, WELCOME_SERVICE_FACTORY_BASE_TYPE, WelcomeServiceFactory, NodePlacementStrategyFactory, TransportProvisionerFactory, TokenIssuerFactory, AuthorizerFactory, validateHostLogical, AuthInjectionStrategyFactory, CERTIFICATE_MANAGER_FACTORY_BASE_TYPE, CertificateManagerFactory, TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE } from '@naylence/runtime';
3
- import { sha256 } from '@noble/hashes/sha256';
3
+ import { sha256 } from '@noble/hashes/sha2';
4
4
  import { generateFingerprintSync, localDeliveryContext, createFameEnvelope, generateId, formatAddress, FameAddress, SigningMaterial, DeliveryOriginType as DeliveryOriginType$1 } from '@naylence/core';
5
5
  import { AsnConvert, OctetString } from '@peculiar/asn1-schema';
6
6
  import { Attributes, CertificationRequestInfo, CertificationRequest } from '@peculiar/asn1-csr';
@@ -570,12 +570,12 @@ async function registerAdvancedSecurityFactories(registrar = Registry, options)
570
570
  }
571
571
 
572
572
  // This file is auto-generated during build - do not edit manually
573
- // Generated from package.json version: 0.4.3
573
+ // Generated from package.json version: 0.4.5
574
574
  /**
575
575
  * The package version, injected at build time.
576
576
  * @internal
577
577
  */
578
- const VERSION = '0.4.3';
578
+ const VERSION = '0.4.5';
579
579
 
580
580
  async function registerAdvancedSecurityPluginFactories(registrar = Registry) {
581
581
  await registerAdvancedSecurityFactories(registrar);
@@ -2459,8 +2459,86 @@ function evaluateAsBoolean(ast, context) {
2459
2459
  * Null handling semantics:
2460
2460
  * - Scope predicate builtins (has_scope, has_any_scope, has_all_scopes)
2461
2461
  * return `false` when passed `null` for required args.
2462
+ * - Security predicate builtins (is_signed, is_encrypted, is_encrypted_at_least)
2463
+ * return `false` when the envelope lacks the required security posture.
2462
2464
  * - Wrong non-null types still raise BuiltinError to surface real bugs.
2463
2465
  */
2466
+ /**
2467
+ * Valid encryption levels for is_encrypted_at_least comparisons.
2468
+ */
2469
+ const VALID_ENCRYPTION_LEVELS = [
2470
+ "plaintext",
2471
+ "channel",
2472
+ "sealed",
2473
+ ];
2474
+ /**
2475
+ * Encryption level ordering for comparison.
2476
+ * Higher number = stronger encryption.
2477
+ */
2478
+ const ENCRYPTION_LEVEL_ORDER = {
2479
+ plaintext: 0,
2480
+ channel: 1,
2481
+ sealed: 2,
2482
+ };
2483
+ /**
2484
+ * Normalizes an encryption algorithm string to an EncryptionLevel.
2485
+ *
2486
+ * Mapping rules:
2487
+ * - null/undefined => "plaintext" (no encryption present)
2488
+ * - alg contains "-channel" => "channel" (e.g., "chacha20-poly1305-channel")
2489
+ * - alg contains "-sealed" => "sealed" (explicit sealed marker)
2490
+ * - alg matches ECDH-ES pattern with AEAD cipher => "sealed" (e.g., "ECDH-ES+A256GCM")
2491
+ * - otherwise => "unknown"
2492
+ *
2493
+ * Currently supported algorithms:
2494
+ * - Channel: "chacha20-poly1305-channel"
2495
+ * - Sealed: "ECDH-ES+A256GCM"
2496
+ *
2497
+ * This helper is centralized to ensure consistent mapping across TS and Python.
2498
+ */
2499
+ function normalizeEncryptionLevelFromAlg(alg) {
2500
+ if (alg === null || alg === undefined) {
2501
+ return "plaintext";
2502
+ }
2503
+ const algLower = alg.toLowerCase();
2504
+ // Check for channel encryption (e.g., "chacha20-poly1305-channel")
2505
+ // Must check before other patterns since channel suffix is explicit
2506
+ if (algLower.includes("-channel")) {
2507
+ return "channel";
2508
+ }
2509
+ // Check for explicit sealed marker
2510
+ if (algLower.includes("-sealed")) {
2511
+ return "sealed";
2512
+ }
2513
+ // ECDH-ES key agreement with AEAD cipher => sealed encryption
2514
+ // Pattern: "ECDH-ES+A256GCM", "ECDH-ES+A128GCM", etc.
2515
+ if (algLower.startsWith("ecdh-es") && algLower.includes("+a")) {
2516
+ return "sealed";
2517
+ }
2518
+ return "unknown";
2519
+ }
2520
+ /**
2521
+ * Creates security bindings from an envelope's sec header.
2522
+ * Exposes only metadata, never raw values like sig.val or enc.val.
2523
+ */
2524
+ function createSecurityBindings(sec) {
2525
+ const sigPresent = sec?.sig !== undefined;
2526
+ const encPresent = sec?.enc !== undefined;
2527
+ return {
2528
+ sig: {
2529
+ present: sigPresent,
2530
+ kid: sec?.sig?.kid ?? null,
2531
+ },
2532
+ enc: {
2533
+ present: encPresent,
2534
+ alg: sec?.enc?.alg ?? null,
2535
+ kid: sec?.enc?.kid ?? null,
2536
+ level: encPresent
2537
+ ? normalizeEncryptionLevelFromAlg(sec?.enc?.alg ?? null)
2538
+ : "plaintext",
2539
+ },
2540
+ };
2541
+ }
2464
2542
  /**
2465
2543
  * Checks if a value is null.
2466
2544
  */
@@ -2469,9 +2547,21 @@ function isNull(value) {
2469
2547
  }
2470
2548
  /**
2471
2549
  * Creates a function registry with auth helpers installed.
2550
+ *
2551
+ * This registry extends the base builtins with:
2552
+ * - Scope builtins: has_scope, has_any_scope, has_all_scopes
2553
+ * - Security builtins: is_signed, encryption_level, is_encrypted, is_encrypted_at_least
2472
2554
  */
2473
- function createAuthFunctionRegistry(grantedScopes = []) {
2474
- const scopes = grantedScopes ?? [];
2555
+ function createAuthFunctionRegistry(grantedScopesOrOptions = []) {
2556
+ // Handle both old signature (array) and new signature (options object)
2557
+ const options = Array.isArray(grantedScopesOrOptions)
2558
+ ? { grantedScopes: grantedScopesOrOptions }
2559
+ : grantedScopesOrOptions;
2560
+ const scopes = options.grantedScopes ?? [];
2561
+ const secBindings = options.securityBindings ?? {
2562
+ sig: { present: false},
2563
+ enc: { level: "plaintext" },
2564
+ };
2475
2565
  /**
2476
2566
  * Checks if any granted scope matches a pattern (using glob syntax).
2477
2567
  */
@@ -2527,11 +2617,85 @@ function createAuthFunctionRegistry(grantedScopes = []) {
2527
2617
  }
2528
2618
  return values.every((scope) => matchesScope(scope));
2529
2619
  };
2620
+ // ============================================================
2621
+ // Security posture builtins
2622
+ // ============================================================
2623
+ /**
2624
+ * is_signed() -> bool
2625
+ *
2626
+ * Returns true if the envelope has a signature present.
2627
+ * No arguments required.
2628
+ */
2629
+ const is_signed = (args) => {
2630
+ assertArgCount(args, 0, "is_signed");
2631
+ return secBindings.sig.present;
2632
+ };
2633
+ /**
2634
+ * encryption_level() -> string
2635
+ *
2636
+ * Returns the normalized encryption level: "plaintext" | "channel" | "sealed" | "unknown"
2637
+ * No arguments required.
2638
+ */
2639
+ const encryption_level = (args) => {
2640
+ assertArgCount(args, 0, "encryption_level");
2641
+ return secBindings.enc.level;
2642
+ };
2643
+ /**
2644
+ * is_encrypted() -> bool
2645
+ *
2646
+ * Returns true if the encryption level is not "plaintext".
2647
+ * This means the envelope has some form of encryption (channel, sealed, or unknown).
2648
+ * No arguments required.
2649
+ */
2650
+ const is_encrypted = (args) => {
2651
+ assertArgCount(args, 0, "is_encrypted");
2652
+ return secBindings.enc.level !== "plaintext";
2653
+ };
2654
+ /**
2655
+ * is_encrypted_at_least(level: string) -> bool
2656
+ *
2657
+ * Returns true if the envelope's encryption level meets or exceeds the required level.
2658
+ *
2659
+ * Level ordering: plaintext < channel < sealed
2660
+ *
2661
+ * Special handling:
2662
+ * - "unknown" encryption level does NOT satisfy "channel" or "sealed" (conservative)
2663
+ * - "plaintext" is always satisfied (any envelope meets at least plaintext)
2664
+ * - null argument => false (predicate-style)
2665
+ * - invalid level string => BuiltinError
2666
+ */
2667
+ const is_encrypted_at_least = (args) => {
2668
+ assertArgCount(args, 1, "is_encrypted_at_least");
2669
+ const requiredLevel = getArg(args, 0, "is_encrypted_at_least");
2670
+ // Null-tolerant: return false if level is null
2671
+ if (!assertStringOrNull(requiredLevel, "level", "is_encrypted_at_least")) {
2672
+ return false;
2673
+ }
2674
+ // Validate required level
2675
+ if (!VALID_ENCRYPTION_LEVELS.includes(requiredLevel)) {
2676
+ throw new BuiltinError("is_encrypted_at_least", `level must be one of: ${VALID_ENCRYPTION_LEVELS.join(", ")}; got "${requiredLevel}"`);
2677
+ }
2678
+ const currentLevel = secBindings.enc.level;
2679
+ const requiredOrder = ENCRYPTION_LEVEL_ORDER[requiredLevel] ?? 0;
2680
+ const currentOrder = ENCRYPTION_LEVEL_ORDER[currentLevel];
2681
+ // If current level is "unknown", it only satisfies "plaintext"
2682
+ if (currentOrder === undefined) {
2683
+ // "unknown" is treated as NOT meeting channel/sealed requirements
2684
+ return requiredOrder === 0; // Only plaintext is satisfied by unknown
2685
+ }
2686
+ return currentOrder >= requiredOrder;
2687
+ };
2530
2688
  return new Map([
2531
2689
  ...BUILTIN_FUNCTIONS,
2690
+ // Scope builtins
2532
2691
  ["has_scope", has_scope],
2533
2692
  ["has_any_scope", has_any_scope],
2534
2693
  ["has_all_scopes", has_all_scopes],
2694
+ // Security posture builtins
2695
+ ["is_signed", is_signed],
2696
+ ["encryption_level", encryption_level],
2697
+ ["is_encrypted", is_encrypted],
2698
+ ["is_encrypted_at_least", is_encrypted_at_least],
2535
2699
  ]);
2536
2700
  }
2537
2701
  /**
@@ -2610,6 +2774,9 @@ const VALID_FRAME_TYPES = [
2610
2774
  "CreditUpdate",
2611
2775
  "KeyAnnounce",
2612
2776
  "KeyRequest",
2777
+ "SecureOpen",
2778
+ "SecureAccept",
2779
+ "SecureClose",
2613
2780
  ];
2614
2781
  /**
2615
2782
  * Simple console logger implementation.
@@ -2671,19 +2838,33 @@ function extractClaims(context) {
2671
2838
  }
2672
2839
  /**
2673
2840
  * Creates a safe envelope subset for expression bindings.
2841
+ *
2842
+ * Exposes:
2843
+ * - id, sid, traceId, corrId, flowId, to
2844
+ * - frame: { type }
2845
+ * - sec: { sig: { present, kid }, enc: { present, alg, kid, level } }
2846
+ *
2847
+ * IMPORTANT: Does NOT expose raw security values (sig.val, enc.val).
2674
2848
  */
2675
2849
  function createEnvelopeBindings(envelope) {
2676
2850
  const frame = envelope.frame;
2677
2851
  const envelopeRecord = envelope;
2852
+ const sec = envelopeRecord.sec;
2853
+ const securityBindings = createSecurityBindings(sec);
2678
2854
  return {
2679
- id: envelope.id ?? null,
2680
- traceId: envelopeRecord.traceId ?? null,
2681
- corrId: envelopeRecord.corrId ?? null,
2682
- flowId: envelopeRecord.flowId ?? null,
2683
- to: extractAddress(envelope) ?? null,
2684
- frame: frame
2685
- ? { type: frame.type ?? null }
2686
- : { type: null },
2855
+ bindings: {
2856
+ id: envelope.id ?? null,
2857
+ sid: envelopeRecord.sid ?? null,
2858
+ traceId: envelopeRecord.traceId ?? null,
2859
+ corrId: envelopeRecord.corrId ?? null,
2860
+ flowId: envelopeRecord.flowId ?? null,
2861
+ to: extractAddress(envelope) ?? null,
2862
+ frame: frame
2863
+ ? { type: frame.type ?? null }
2864
+ : { type: null },
2865
+ sec: securityBindings,
2866
+ },
2867
+ securityBindings,
2687
2868
  };
2688
2869
  }
2689
2870
  /**
@@ -2837,11 +3018,12 @@ class AdvancedAuthorizationPolicy {
2837
3018
  continue;
2838
3019
  }
2839
3020
  if (rule.whenAst) {
2840
- // Lazy initialization of expression bindings
3021
+ // Lazy initialization of expression bindings and security context
2841
3022
  if (!expressionBindings) {
3023
+ const envelopeResult = createEnvelopeBindings(envelope);
2842
3024
  expressionBindings = {
2843
3025
  claims: extractClaims(context),
2844
- envelope: createEnvelopeBindings(envelope),
3026
+ envelope: envelopeResult.bindings,
2845
3027
  delivery: createDeliveryBindings(context, resolvedAction),
2846
3028
  node: createNodeBindings(node),
2847
3029
  time: {
@@ -2849,9 +3031,13 @@ class AdvancedAuthorizationPolicy {
2849
3031
  now_iso: new Date().toISOString(),
2850
3032
  },
2851
3033
  };
3034
+ // Create function registry with security bindings for security builtins
3035
+ functionRegistry = createAuthFunctionRegistry({
3036
+ grantedScopes,
3037
+ securityBindings: envelopeResult.securityBindings,
3038
+ });
2852
3039
  }
2853
- const functions = functionRegistry ?? createAuthFunctionRegistry(grantedScopes);
2854
- functionRegistry = functions;
3040
+ const functions = functionRegistry;
2855
3041
  const evalContext = {
2856
3042
  bindings: expressionBindings,
2857
3043
  limits: this.expressionLimits,
@@ -12,7 +12,7 @@
12
12
  * - Non-predicate operations (arithmetic, comparisons) remain strict.
13
13
  */
14
14
  import { BuiltinError, EvaluationError } from "./errors.js";
15
- import { sha256 } from '@noble/hashes/sha256';
15
+ import { sha256 } from '@noble/hashes/sha2';
16
16
  import { generateFingerprintSync } from '@naylence/core';
17
17
  import { checkGlobPatternLength, checkRegexPatternLength, } from "./limits.js";
18
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../../../../src/naylence/fame/expr/builtins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../../../../src/naylence/fame/expr/builtins.ts"],"names":[],"mappings":"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"}