@lit-protocol/auth-helpers
Version:
This submodule manages permissions and capabilities related to accessing specific resources on the blockchain. It utilizes features from the 'siwe' and 'siwe-recap' libraries to verify and handle data, allowing users to encode and decode session capabilit
84 lines • 3.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RESOLVED_AUTH_CONTEXT_PREFIX = void 0;
exports.getRecapNamespaceAndAbility = getRecapNamespaceAndAbility;
exports.getLitAbilityFromRecap = getLitAbilityFromRecap;
const constants_1 = require("@lit-protocol/constants");
/**
* Map from a LitAbility to the Recap namespace and ability.
* @throws Error if the LitAbility is unknown
*/
function getRecapNamespaceAndAbility(litAbility) {
switch (litAbility) {
case constants_1.LIT_ABILITY.AccessControlConditionDecryption:
return {
recapNamespace: constants_1.LIT_NAMESPACE.Threshold,
recapAbility: constants_1.LIT_RECAP_ABILITY.Decryption,
};
case constants_1.LIT_ABILITY.AccessControlConditionSigning:
return {
recapNamespace: constants_1.LIT_NAMESPACE.Threshold,
recapAbility: constants_1.LIT_RECAP_ABILITY.Signing,
};
case constants_1.LIT_ABILITY.PKPSigning:
return {
recapNamespace: constants_1.LIT_NAMESPACE.Threshold,
recapAbility: constants_1.LIT_RECAP_ABILITY.Signing,
};
case constants_1.LIT_ABILITY.PaymentDelegation:
return {
recapNamespace: constants_1.LIT_NAMESPACE.Auth,
recapAbility: constants_1.LIT_RECAP_ABILITY.Auth,
};
case constants_1.LIT_ABILITY.LitActionExecution:
return {
recapNamespace: constants_1.LIT_NAMESPACE.Threshold,
recapAbility: constants_1.LIT_RECAP_ABILITY.Execution,
};
default:
throw new constants_1.InvalidArgumentException({
info: {
litAbility,
},
}, `Unknown LitAbility`);
}
}
exports.RESOLVED_AUTH_CONTEXT_PREFIX = 'lit-resolvedauthcontext://';
const PAYMENT_DELEGATION_PREFIX = 'lit-paymentdelegation://';
const PKP_PREFIX = 'lit-pkp://';
const ACC_PREFIX = 'lit-accesscontrolcondition://';
/**
* Reverse mapping from Recap namespace/ability to LitAbility.
* Returns null when the recap entry only carries metadata (eg. resolved auth context).
*/
function getLitAbilityFromRecap(params) {
const { recapNamespace, recapAbility, resourceKey } = params;
if (recapNamespace === constants_1.LIT_NAMESPACE.Threshold) {
if (recapAbility === constants_1.LIT_RECAP_ABILITY.Decryption) {
return constants_1.LIT_ABILITY.AccessControlConditionDecryption;
}
if (recapAbility === constants_1.LIT_RECAP_ABILITY.Execution) {
return constants_1.LIT_ABILITY.LitActionExecution;
}
if (recapAbility === constants_1.LIT_RECAP_ABILITY.Signing) {
if (resourceKey.startsWith(PKP_PREFIX)) {
return constants_1.LIT_ABILITY.PKPSigning;
}
if (resourceKey.startsWith(ACC_PREFIX)) {
return constants_1.LIT_ABILITY.AccessControlConditionSigning;
}
}
}
if (recapNamespace === constants_1.LIT_NAMESPACE.Auth &&
recapAbility === constants_1.LIT_RECAP_ABILITY.Auth) {
if (resourceKey.startsWith(PAYMENT_DELEGATION_PREFIX)) {
return constants_1.LIT_ABILITY.PaymentDelegation;
}
if (resourceKey.startsWith(exports.RESOLVED_AUTH_CONTEXT_PREFIX)) {
// Resolved auth context entries only contain metadata.
return null;
}
}
return null;
}
//# sourceMappingURL=utils.js.map