@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.
- package/dist/browser/index.cjs +204 -18
- package/dist/browser/index.mjs +203 -17
- package/dist/cjs/naylence/fame/expr/builtins.js +1 -1
- package/dist/cjs/naylence/fame/expr/builtins.js.map +1 -1
- package/dist/cjs/naylence/fame/security/auth/policy/advanced-authorization-policy.js +35 -13
- package/dist/cjs/naylence/fame/security/auth/policy/advanced-authorization-policy.js.map +1 -1
- package/dist/cjs/naylence/fame/security/auth/policy/expr-builtins.js +166 -2
- package/dist/cjs/naylence/fame/security/auth/policy/expr-builtins.js.map +1 -1
- package/dist/cjs/naylence/fame/security/auth/policy/index.js +1 -1
- package/dist/cjs/naylence/fame/security/auth/policy/index.js.map +1 -1
- package/dist/cjs/version.js +2 -2
- package/dist/esm/naylence/fame/expr/builtins.js +1 -1
- package/dist/esm/naylence/fame/expr/builtins.js.map +1 -1
- package/dist/esm/naylence/fame/security/auth/policy/advanced-authorization-policy.js +35 -13
- package/dist/esm/naylence/fame/security/auth/policy/advanced-authorization-policy.js.map +1 -1
- package/dist/esm/naylence/fame/security/auth/policy/expr-builtins.js +166 -2
- package/dist/esm/naylence/fame/security/auth/policy/expr-builtins.js.map +1 -1
- package/dist/esm/naylence/fame/security/auth/policy/index.js +1 -1
- package/dist/esm/naylence/fame/security/auth/policy/index.js.map +1 -1
- package/dist/esm/version.js +2 -2
- package/dist/node/index.cjs +206 -18
- package/dist/node/index.mjs +204 -18
- package/dist/node/node.cjs +206 -18
- package/dist/node/node.mjs +204 -18
- package/dist/types/naylence/fame/security/auth/policy/advanced-authorization-policy.d.ts +1 -1
- package/dist/types/naylence/fame/security/auth/policy/advanced-authorization-policy.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/auth/policy/expr-builtins.d.ts +71 -1
- package/dist/types/naylence/fame/security/auth/policy/expr-builtins.d.ts.map +1 -1
- package/dist/types/naylence/fame/security/auth/policy/index.d.ts +1 -1
- package/dist/types/naylence/fame/security/auth/policy/index.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/browser/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var factory = require('@naylence/factory');
|
|
4
4
|
var runtime = require('@naylence/runtime');
|
|
5
|
-
var
|
|
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.
|
|
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.
|
|
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,
|
|
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(
|
|
2476
|
-
|
|
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
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
:
|
|
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:
|
|
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
|
|
2856
|
-
functionRegistry = functions;
|
|
3042
|
+
const functions = functionRegistry;
|
|
2857
3043
|
const evalContext = {
|
|
2858
3044
|
bindings: expressionBindings,
|
|
2859
3045
|
limits: this.expressionLimits,
|
package/dist/browser/index.mjs
CHANGED
|
@@ -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/
|
|
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.
|
|
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.
|
|
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(
|
|
2474
|
-
|
|
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
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
:
|
|
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:
|
|
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
|
|
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/
|
|
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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"}
|