@naylence/advanced-security 0.4.4 → 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 (31) hide show
  1. package/dist/browser/index.cjs +201 -18
  2. package/dist/browser/index.mjs +200 -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 +32 -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 +32 -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 +203 -18
  22. package/dist/node/index.mjs +201 -18
  23. package/dist/node/node.cjs +203 -18
  24. package/dist/node/node.mjs +201 -18
  25. package/dist/types/naylence/fame/security/auth/policy/advanced-authorization-policy.d.ts.map +1 -1
  26. package/dist/types/naylence/fame/security/auth/policy/expr-builtins.d.ts +71 -1
  27. package/dist/types/naylence/fame/security/auth/policy/expr-builtins.d.ts.map +1 -1
  28. package/dist/types/naylence/fame/security/auth/policy/index.d.ts +1 -1
  29. package/dist/types/naylence/fame/security/auth/policy/index.d.ts.map +1 -1
  30. package/dist/types/version.d.ts +1 -1
  31. 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.4
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.4';
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
  /**
@@ -2676,19 +2840,33 @@ function extractClaims(context) {
2676
2840
  }
2677
2841
  /**
2678
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).
2679
2850
  */
2680
2851
  function createEnvelopeBindings(envelope) {
2681
2852
  const frame = envelope.frame;
2682
2853
  const envelopeRecord = envelope;
2854
+ const sec = envelopeRecord.sec;
2855
+ const securityBindings = createSecurityBindings(sec);
2683
2856
  return {
2684
- id: envelope.id ?? null,
2685
- traceId: envelopeRecord.traceId ?? null,
2686
- corrId: envelopeRecord.corrId ?? null,
2687
- flowId: envelopeRecord.flowId ?? null,
2688
- to: extractAddress(envelope) ?? null,
2689
- frame: frame
2690
- ? { type: frame.type ?? null }
2691
- : { 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,
2692
2870
  };
2693
2871
  }
2694
2872
  /**
@@ -2842,11 +3020,12 @@ class AdvancedAuthorizationPolicy {
2842
3020
  continue;
2843
3021
  }
2844
3022
  if (rule.whenAst) {
2845
- // Lazy initialization of expression bindings
3023
+ // Lazy initialization of expression bindings and security context
2846
3024
  if (!expressionBindings) {
3025
+ const envelopeResult = createEnvelopeBindings(envelope);
2847
3026
  expressionBindings = {
2848
3027
  claims: extractClaims(context),
2849
- envelope: createEnvelopeBindings(envelope),
3028
+ envelope: envelopeResult.bindings,
2850
3029
  delivery: createDeliveryBindings(context, resolvedAction),
2851
3030
  node: createNodeBindings(node),
2852
3031
  time: {
@@ -2854,9 +3033,13 @@ class AdvancedAuthorizationPolicy {
2854
3033
  now_iso: new Date().toISOString(),
2855
3034
  },
2856
3035
  };
3036
+ // Create function registry with security bindings for security builtins
3037
+ functionRegistry = createAuthFunctionRegistry({
3038
+ grantedScopes,
3039
+ securityBindings: envelopeResult.securityBindings,
3040
+ });
2857
3041
  }
2858
- const functions = functionRegistry ?? createAuthFunctionRegistry(grantedScopes);
2859
- functionRegistry = functions;
3042
+ const functions = functionRegistry;
2860
3043
  const evalContext = {
2861
3044
  bindings: expressionBindings,
2862
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.4
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.4';
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
  /**
@@ -2674,19 +2838,33 @@ function extractClaims(context) {
2674
2838
  }
2675
2839
  /**
2676
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).
2677
2848
  */
2678
2849
  function createEnvelopeBindings(envelope) {
2679
2850
  const frame = envelope.frame;
2680
2851
  const envelopeRecord = envelope;
2852
+ const sec = envelopeRecord.sec;
2853
+ const securityBindings = createSecurityBindings(sec);
2681
2854
  return {
2682
- id: envelope.id ?? null,
2683
- traceId: envelopeRecord.traceId ?? null,
2684
- corrId: envelopeRecord.corrId ?? null,
2685
- flowId: envelopeRecord.flowId ?? null,
2686
- to: extractAddress(envelope) ?? null,
2687
- frame: frame
2688
- ? { type: frame.type ?? null }
2689
- : { 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,
2690
2868
  };
2691
2869
  }
2692
2870
  /**
@@ -2840,11 +3018,12 @@ class AdvancedAuthorizationPolicy {
2840
3018
  continue;
2841
3019
  }
2842
3020
  if (rule.whenAst) {
2843
- // Lazy initialization of expression bindings
3021
+ // Lazy initialization of expression bindings and security context
2844
3022
  if (!expressionBindings) {
3023
+ const envelopeResult = createEnvelopeBindings(envelope);
2845
3024
  expressionBindings = {
2846
3025
  claims: extractClaims(context),
2847
- envelope: createEnvelopeBindings(envelope),
3026
+ envelope: envelopeResult.bindings,
2848
3027
  delivery: createDeliveryBindings(context, resolvedAction),
2849
3028
  node: createNodeBindings(node),
2850
3029
  time: {
@@ -2852,9 +3031,13 @@ class AdvancedAuthorizationPolicy {
2852
3031
  now_iso: new Date().toISOString(),
2853
3032
  },
2854
3033
  };
3034
+ // Create function registry with security bindings for security builtins
3035
+ functionRegistry = createAuthFunctionRegistry({
3036
+ grantedScopes,
3037
+ securityBindings: envelopeResult.securityBindings,
3038
+ });
2855
3039
  }
2856
- const functions = functionRegistry ?? createAuthFunctionRegistry(grantedScopes);
2857
- functionRegistry = functions;
3040
+ const functions = functionRegistry;
2858
3041
  const evalContext = {
2859
3042
  bindings: expressionBindings,
2860
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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"}