@api-client/core 0.18.50 → 0.18.52
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/build/src/models/store/Permission.d.ts +12 -1
- package/build/src/models/store/Permission.d.ts.map +1 -1
- package/build/src/models/store/Permission.js +52 -2
- package/build/src/models/store/Permission.js.map +1 -1
- package/build/src/runtime/http-engine/ntlm/MD4.js +3 -3
- package/build/src/runtime/http-engine/ntlm/MD4.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/data/models/example-generator-api.json +10 -10
- package/package.json +2 -2
- package/src/models/store/Permission.ts +57 -2
- package/src/runtime/http-engine/ntlm/MD4.ts +3 -3
- package/tests/unit/models/store/Permission.spec.ts +278 -0
|
@@ -11,6 +11,8 @@ export type PermissionRole = 'owner' | 'reader' | 'commenter' | 'writer';
|
|
|
11
11
|
* A predefined set of rules that can be used to determine the source of the permission.
|
|
12
12
|
* - `direct_user_grant`: The permission is granted directly to the user.
|
|
13
13
|
* - `creator_default_owner`: The permission is granted to the creator of the item as the default owner.
|
|
14
|
+
* - `parent_owner_editor_rule`: The object is placed in a folder and the owner of the folder
|
|
15
|
+
* has automatically granted role to the object.
|
|
14
16
|
*/
|
|
15
17
|
export type PermissionSourceRule = 'direct_user_grant' | 'creator_default_owner' | 'parent_owner_editor_rule';
|
|
16
18
|
interface IBasePermission {
|
|
@@ -196,7 +198,16 @@ export declare class Permission {
|
|
|
196
198
|
* Link to the `Permission.hasRole(minimumLevel, currentRole)`.
|
|
197
199
|
* @see {@link Permission.hasRole}
|
|
198
200
|
*/
|
|
199
|
-
hasRole(minimumLevel: PermissionRole
|
|
201
|
+
hasRole(minimumLevel: PermissionRole): boolean;
|
|
202
|
+
/**
|
|
203
|
+
* Checks if the user has the required role in the list of permissions.
|
|
204
|
+
* The permissions list must be filtered for the user, user's organization, and user's groups.
|
|
205
|
+
*
|
|
206
|
+
* @param minimumLevel The minimum requested role
|
|
207
|
+
* @param permissions The list of permissions to check.
|
|
208
|
+
* @returns True if the user has the required role.
|
|
209
|
+
*/
|
|
210
|
+
static hasRoleIn(minimumLevel: PermissionRole, permissions: IPermission[]): boolean;
|
|
200
211
|
toJSON(): IPermission;
|
|
201
212
|
}
|
|
202
213
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Permission.d.ts","sourceRoot":"","sources":["../../../../src/models/store/Permission.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,oBAAoB,CAAA;AAErC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,CAAA;AAC9D;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAA;AAExE
|
|
1
|
+
{"version":3,"file":"Permission.d.ts","sourceRoot":"","sources":["../../../../src/models/store/Permission.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,oBAAoB,CAAA;AAErC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,CAAA;AAC9D;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAA;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,uBAAuB,GAAG,0BAA0B,CAAA;AAE7G,UAAU,eAAe;IACvB;;;;;;OAMG;IACH,IAAI,EAAE,cAAc,CAAA;IACpB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,IAAI,EAAE,cAAc,CAAA;IACpB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,UAAU,EAAE,oBAAoB,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,IAAI,EAAE,OAAO,IAAI,CAAA;IACjB;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,qBAAa,UAAU;IACrB,IAAI,SAAO;IACX;;;OAGG;IACH,GAAG,SAAK;IACR;;;;;;OAMG;IACH,IAAI,EAAE,cAAc,CAAS;IAC7B;;;OAGG;IACH,SAAS,SAAK;IACd;;OAEG;IACH,IAAI,EAAE,cAAc,CAAW;IAC/B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,UAAU,SAAK;IAEf;;OAEG;IACH,MAAM,SAAK;IACX;;;;;;;OAOG;IACH,KAAK,SAAI;IACT;;;OAGG;IACH,UAAU,EAAE,oBAAoB,CAAsB;IAEtD;;;;;;;OAOG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU;IAevG;;;;;;;OAOG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU;IAezG;;;;;;OAMG;IACH,MAAM,CAAC,oBAAoB,CACzB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,GACjB,UAAU;IAeb;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,UAAU;gBAQxC,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW;IAsBxC,GAAG,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAqC5B,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAQ5C;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,cAAc,GAAG,OAAO;IAUnF;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO;IAM1E;;;OAGG;IACH,OAAO,CAAC,YAAY,EAAE,cAAc,GAAG,OAAO;IAI9C;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO;IA6CnF,MAAM,IAAI,WAAW;CAoBtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IACV;;OAEG;IACH,IAAI,EAAE,cAAc,CAAA;CACrB;AAED,UAAU,kBAAkB;IAC1B;;;;;;OAMG;IACH,KAAK,EAAE,cAAc,CAAA;IACrB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB,EAAE,kBAAkB;IAC/E,EAAE,EAAE,KAAK,CAAA;CACV;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,EAAE,EAAE,QAAQ,CAAA;CACb;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB,EAAE,kBAAkB;IAClF,EAAE,EAAE,QAAQ,CAAA;IACZ;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,sBAAsB,CAAA"}
|
|
@@ -227,8 +227,58 @@ export class Permission {
|
|
|
227
227
|
* Link to the `Permission.hasRole(minimumLevel, currentRole)`.
|
|
228
228
|
* @see {@link Permission.hasRole}
|
|
229
229
|
*/
|
|
230
|
-
hasRole(minimumLevel
|
|
231
|
-
return Permission.hasRole(minimumLevel,
|
|
230
|
+
hasRole(minimumLevel) {
|
|
231
|
+
return Permission.hasRole(minimumLevel, this.role);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Checks if the user has the required role in the list of permissions.
|
|
235
|
+
* The permissions list must be filtered for the user, user's organization, and user's groups.
|
|
236
|
+
*
|
|
237
|
+
* @param minimumLevel The minimum requested role
|
|
238
|
+
* @param permissions The list of permissions to check.
|
|
239
|
+
* @returns True if the user has the required role.
|
|
240
|
+
*/
|
|
241
|
+
static hasRoleIn(minimumLevel, permissions) {
|
|
242
|
+
if (!permissions || !permissions.length) {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
// 1. Sort/Group permissions by depth (ascending).
|
|
246
|
+
// We want to process the closest permissions first.
|
|
247
|
+
const sorted = [...permissions].sort((a, b) => a.depth - b.depth);
|
|
248
|
+
const closestDepth = sorted[0].depth;
|
|
249
|
+
const closestPermissions = sorted.filter((p) => p.depth === closestDepth);
|
|
250
|
+
// 2. Specificity: User > Group > Organization
|
|
251
|
+
let effectivePermission;
|
|
252
|
+
// Check for user permissions
|
|
253
|
+
const userPermissions = closestPermissions.filter((p) => p.type === 'user');
|
|
254
|
+
if (userPermissions.length) {
|
|
255
|
+
// Pick highest role if multiple user permissions exist at same depth (unlikely but safe)
|
|
256
|
+
effectivePermission = userPermissions.sort((a, b) => {
|
|
257
|
+
return orderedRoles.indexOf(b.role) - orderedRoles.indexOf(a.role);
|
|
258
|
+
})[0];
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
// Check for group permissions
|
|
262
|
+
const groupPermissions = closestPermissions.filter((p) => p.type === 'group');
|
|
263
|
+
if (groupPermissions.length) {
|
|
264
|
+
effectivePermission = groupPermissions.sort((a, b) => {
|
|
265
|
+
return orderedRoles.indexOf(b.role) - orderedRoles.indexOf(a.role);
|
|
266
|
+
})[0];
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
// Check for organization permissions
|
|
270
|
+
const orgPermissions = closestPermissions.filter((p) => p.type === 'organization');
|
|
271
|
+
if (orgPermissions.length) {
|
|
272
|
+
effectivePermission = orgPermissions.sort((a, b) => {
|
|
273
|
+
return orderedRoles.indexOf(b.role) - orderedRoles.indexOf(a.role);
|
|
274
|
+
})[0];
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
if (!effectivePermission) {
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
return Permission.hasRole(minimumLevel, effectivePermission.role);
|
|
232
282
|
}
|
|
233
283
|
toJSON() {
|
|
234
284
|
const result = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Permission.js","sourceRoot":"","sources":["../../../../src/models/store/Permission.ts"],"names":[],"mappings":"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","sourcesContent":["import { nanoid } from '../../nanoid.js'\n\nexport const Kind = 'Core#Permission'\n\nexport type PermissionType = 'user' | 'group' | 'organization'\n/**\n * - `owner`: Full control over the item.\n * - `writer`: Can view, comment, and edit the item.\n * - `commenter`: Can view and comment on the item.\n * - `reader`: Can only view the item.\n */\nexport type PermissionRole = 'owner' | 'reader' | 'commenter' | 'writer'\nconst orderedRoles: PermissionRole[] = ['reader', 'commenter', 'writer', 'owner']\n/**\n * A predefined set of rules that can be used to determine the source of the permission.\n * - `direct_user_grant`: The permission is granted directly to the user.\n * - `creator_default_owner`: The permission is granted to the creator of the item as the default owner.\n */\nexport type PermissionSourceRule = 'direct_user_grant' | 'creator_default_owner' | 'parent_owner_editor_rule'\n\ninterface IBasePermission {\n /**\n * The type of the permission.\n *\n * - `user` can access the file by a specific user\n * - `group` can access the file by a group of users\n * - `organization` the object can be searched by anyone within the organization.\n */\n type: PermissionType\n /**\n * It represents the ID of the entity (user, group,or organization)\n * that is being granted the permission on a file or folder.\n */\n granteeId: string\n /**\n * The store id of the entity that is being granted the permission.\n */\n itemId: string\n /**\n * The role granted by this permission.\n */\n role: PermissionRole\n /**\n * The \"pretty\" name to render with the permission.\n *\n * - `user` type - user's full name\n * - `group` type - the name of the group\n * - `organization` type - no render name\n */\n displayName?: string\n /**\n * Optional expiration date of the permission. This is the timestamp when the permission expires.\n * When creating / updating the permission the expiration date must:\n *\n * - be used on a user or a group\n * - the time must be in the future\n */\n expirationTime?: number\n /**\n * The store id of the user that added this permission.\n */\n addingUser: string\n /**\n * The depth of the permission in the hierarchy.\n * When `0` it means that the permissions do not use inheritance.\n * When `1` it means the permission is set on the item itself.\n * When `2` it means the permission is set on the parent item.\n * When `3` it means the permission is set on the grandparent item, and so on.\n * This is used to determine the depth of the permission in the hierarchy.\n */\n depth: number\n /**\n * The source rule of the permission.\n * This is used to determine how the permission was granted.\n */\n sourceRule: PermissionSourceRule\n}\n\n/**\n * A schema describing a permission to a store object.\n */\nexport interface IPermission extends IBasePermission {\n kind: typeof Kind\n /**\n * The data store key of the permission.\n * This property is generated by the store and is not writable.\n */\n key: string\n}\n\nexport class Permission {\n kind = Kind\n /**\n * The data store key of the permission.\n * This property is generated by the store and is not writable.\n */\n key = ''\n /**\n * The type of the permission.\n *\n * - `user` can access the file by a specific user\n * - `group` can access the file by a group of users\n * - - `organization` the object can be searched by anyone within the organization.\n */\n type: PermissionType = 'user'\n /**\n * It represents the ID of the entity (user, group, or organization)\n * that is being granted the permission on a file or folder.\n */\n granteeId = ''\n /**\n * The role granted by this permission.\n */\n role: PermissionRole = 'reader'\n /**\n * The \"pretty\" name to render with the permission.\n *\n * - `user` type - user's full name\n * - `group` type - the name of the group\n * - `organization` type - the organization name.\n */\n displayName?: string\n /**\n * Optional expiration date of the permission. This is the timestamp when the permission expires.\n * When creating / updating the permission the expiration date must:\n *\n * - be used on a user or a group\n * - the time must be in the future\n */\n expirationTime?: number\n\n /**\n * The store id of the user that added this permission.\n */\n addingUser = ''\n\n /**\n * The store id of the entity that is being granted the permission.\n */\n itemId = ''\n /**\n * The depth of the permission in the hierarchy.\n * When `0` it means that the permissions do not use inheritance.\n * When `1` it means the permission is set on the item itself.\n * When `2` it means the permission is set on the parent item.\n * When `3` it means the permission is set on the grandparent item, and so on.\n * This is used to determine the depth of the permission in the hierarchy.\n */\n depth = 0\n /**\n * The source rule of the permission.\n * This is used to determine how the permission was granted.\n */\n sourceRule: PermissionSourceRule = 'direct_user_grant'\n\n /**\n * Creates a Permission object for a user.\n *\n * @param role The user role to set.\n * @param itemId The store id of the entity that is being granted the permission.\n * @param user The user id that has the role.\n * @param addingUser The key of the user that created this permission\n */\n static fromUserRole(role: PermissionRole, itemId: string, user: string, addingUser: string): Permission {\n const init: IPermission = {\n key: nanoid(),\n kind: Kind,\n itemId,\n granteeId: user,\n role,\n type: 'user',\n addingUser,\n depth: 0,\n sourceRule: 'direct_user_grant',\n }\n return new Permission(init)\n }\n\n /**\n * Creates a Permission object for a group.\n *\n * @param role The group role to set.\n * @param itemId The store id of the entity that is being granted the permission.\n * @param group The group id that has the role.\n * @param addingUser The key of the user that created this permission\n */\n static fromGroupRole(role: PermissionRole, itemId: string, group: string, addingUser: string): Permission {\n const init: IPermission = {\n key: nanoid(),\n kind: Kind,\n itemId,\n granteeId: group,\n role,\n type: 'group',\n addingUser,\n depth: 0,\n sourceRule: 'direct_user_grant',\n }\n return new Permission(init)\n }\n\n /**\n * Creates a Permission object for a group.\n *\n * @param role The group role to set.\n * @param itemId The store id of the entity that is being granted the permission.\n * @param addingUser The key of the user that created this permission\n */\n static fromOrganizationRole(\n role: PermissionRole,\n itemId: string,\n organizationId: string,\n addingUser: string\n ): Permission {\n const init: IPermission = {\n key: nanoid(),\n kind: Kind,\n itemId,\n granteeId: organizationId,\n role,\n type: 'organization',\n addingUser,\n depth: 0,\n sourceRule: 'direct_user_grant',\n }\n return new Permission(init)\n }\n\n /**\n * Creates a permission object from other than key and kind values.\n */\n static fromValues(init: IBasePermission): Permission {\n return new Permission({\n ...init,\n key: nanoid(),\n kind: Kind,\n })\n }\n\n constructor(input?: string | IPermission) {\n let init: IPermission\n if (typeof input === 'string') {\n init = JSON.parse(input)\n } else if (typeof input === 'object') {\n init = input\n } else {\n init = {\n kind: Kind,\n key: nanoid(),\n granteeId: '',\n itemId: '',\n role: 'reader',\n type: 'user',\n addingUser: '',\n depth: 0,\n sourceRule: 'direct_user_grant',\n }\n }\n this.new(init)\n }\n\n new(init: IPermission): void {\n if (!Permission.isPermission(init)) {\n throw new Error(`Not a permission.`)\n }\n const {\n key = nanoid(),\n granteeId,\n role,\n type,\n displayName,\n expirationTime,\n addingUser,\n itemId,\n depth,\n sourceRule,\n } = init\n this.kind = Kind\n this.key = key\n this.granteeId = granteeId\n this.itemId = itemId\n this.role = role\n this.type = type\n this.addingUser = addingUser\n this.depth = depth || 0\n this.sourceRule = sourceRule || 'direct_user_grant'\n if (displayName) {\n this.displayName = displayName\n } else {\n this.displayName = undefined\n }\n if (typeof expirationTime === 'number') {\n this.expirationTime = expirationTime\n } else {\n this.expirationTime = undefined\n }\n }\n\n static isPermission(input: unknown): boolean {\n const typed = input as IPermission\n if (!input || typed.kind !== Kind) {\n return false\n }\n return true\n }\n\n /**\n * Checks whether the current user role meets the minimum required role.\n *\n * @param minimumLevel The minimum requested role\n * @param currentRole The user role. When not set it always returns false.\n * @returns True if the `currentRole` is at least the `minimumRole`\n */\n static hasRole(minimumLevel: PermissionRole, currentRole?: PermissionRole): boolean {\n if (!currentRole) {\n return false\n }\n const currentAccessIndex = orderedRoles.indexOf(currentRole)\n const requestedAccessIndex = orderedRoles.indexOf(minimumLevel)\n // the current must be at least at the index of requested.\n return currentAccessIndex >= requestedAccessIndex\n }\n\n /**\n * Checks if role1 is higher than role2 in the permission hierarchy.\n *\n * @param role1 The first role to compare.\n * @param role2 The second role to compare.\n * @returns `true` if `role1` is higher than `role2`, `false` otherwise.\n */\n static isHigherRole(role1: PermissionRole, role2: PermissionRole): boolean {\n const role1Index = orderedRoles.indexOf(role1)\n const role2Index = orderedRoles.indexOf(role2)\n return role1Index > role2Index\n }\n\n /**\n * Link to the `Permission.hasRole(minimumLevel, currentRole)`.\n * @see {@link Permission.hasRole}\n */\n hasRole(minimumLevel: PermissionRole, currentRole: PermissionRole): boolean {\n return Permission.hasRole(minimumLevel, currentRole)\n }\n\n toJSON(): IPermission {\n const result: IPermission = {\n kind: Kind,\n key: this.key,\n role: this.role,\n type: this.type,\n addingUser: this.addingUser,\n granteeId: this.granteeId,\n itemId: this.itemId,\n depth: this.depth,\n sourceRule: this.sourceRule,\n }\n if (this.displayName) {\n result.displayName = this.displayName\n }\n if (this.expirationTime) {\n result.expirationTime = this.expirationTime\n }\n return result\n }\n}\n\n/**\n * This is used in the communication with the backend to add/change user's access to the resource.\n */\nexport interface IAccessOperation {\n /**\n * The user, group, or organization id that this permission affects.\n */\n id: string\n /**\n * The permission type: user, group, or organization\n */\n type: PermissionType\n}\n\ninterface IUpdatingOperation {\n /**\n * The level that the user or the group has access to:\n * - owner\n * - reader\n * - commenter\n * - writer\n */\n value: PermissionRole\n /**\n * The timestamp when the permission expires.\n */\n expirationTime?: number\n}\n\nexport interface IAccessAddOperation extends IAccessOperation, IUpdatingOperation {\n op: 'add'\n}\n\nexport interface IAccessRemoveOperation extends IAccessOperation {\n op: 'remove'\n}\n\nexport interface IAccessUpdateOperation extends IAccessOperation, IUpdatingOperation {\n op: 'update'\n /**\n * The ID of the permission to update.\n */\n id: string\n}\n\nexport type AccessOperation = IAccessAddOperation | IAccessRemoveOperation | IAccessUpdateOperation\n"]}
|
|
1
|
+
{"version":3,"file":"Permission.js","sourceRoot":"","sources":["../../../../src/models/store/Permission.ts"],"names":[],"mappings":"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","sourcesContent":["import { nanoid } from '../../nanoid.js'\n\nexport const Kind = 'Core#Permission'\n\nexport type PermissionType = 'user' | 'group' | 'organization'\n/**\n * - `owner`: Full control over the item.\n * - `writer`: Can view, comment, and edit the item.\n * - `commenter`: Can view and comment on the item.\n * - `reader`: Can only view the item.\n */\nexport type PermissionRole = 'owner' | 'reader' | 'commenter' | 'writer'\nconst orderedRoles: PermissionRole[] = ['reader', 'commenter', 'writer', 'owner']\n/**\n * A predefined set of rules that can be used to determine the source of the permission.\n * - `direct_user_grant`: The permission is granted directly to the user.\n * - `creator_default_owner`: The permission is granted to the creator of the item as the default owner.\n * - `parent_owner_editor_rule`: The object is placed in a folder and the owner of the folder\n * has automatically granted role to the object.\n */\nexport type PermissionSourceRule = 'direct_user_grant' | 'creator_default_owner' | 'parent_owner_editor_rule'\n\ninterface IBasePermission {\n /**\n * The type of the permission.\n *\n * - `user` can access the file by a specific user\n * - `group` can access the file by a group of users\n * - `organization` the object can be searched by anyone within the organization.\n */\n type: PermissionType\n /**\n * It represents the ID of the entity (user, group,or organization)\n * that is being granted the permission on a file or folder.\n */\n granteeId: string\n /**\n * The store id of the entity that is being granted the permission.\n */\n itemId: string\n /**\n * The role granted by this permission.\n */\n role: PermissionRole\n /**\n * The \"pretty\" name to render with the permission.\n *\n * - `user` type - user's full name\n * - `group` type - the name of the group\n * - `organization` type - no render name\n */\n displayName?: string\n /**\n * Optional expiration date of the permission. This is the timestamp when the permission expires.\n * When creating / updating the permission the expiration date must:\n *\n * - be used on a user or a group\n * - the time must be in the future\n */\n expirationTime?: number\n /**\n * The store id of the user that added this permission.\n */\n addingUser: string\n /**\n * The depth of the permission in the hierarchy.\n * When `0` it means that the permissions do not use inheritance.\n * When `1` it means the permission is set on the item itself.\n * When `2` it means the permission is set on the parent item.\n * When `3` it means the permission is set on the grandparent item, and so on.\n * This is used to determine the depth of the permission in the hierarchy.\n */\n depth: number\n /**\n * The source rule of the permission.\n * This is used to determine how the permission was granted.\n */\n sourceRule: PermissionSourceRule\n}\n\n/**\n * A schema describing a permission to a store object.\n */\nexport interface IPermission extends IBasePermission {\n kind: typeof Kind\n /**\n * The data store key of the permission.\n * This property is generated by the store and is not writable.\n */\n key: string\n}\n\nexport class Permission {\n kind = Kind\n /**\n * The data store key of the permission.\n * This property is generated by the store and is not writable.\n */\n key = ''\n /**\n * The type of the permission.\n *\n * - `user` can access the file by a specific user\n * - `group` can access the file by a group of users\n * - - `organization` the object can be searched by anyone within the organization.\n */\n type: PermissionType = 'user'\n /**\n * It represents the ID of the entity (user, group, or organization)\n * that is being granted the permission on a file or folder.\n */\n granteeId = ''\n /**\n * The role granted by this permission.\n */\n role: PermissionRole = 'reader'\n /**\n * The \"pretty\" name to render with the permission.\n *\n * - `user` type - user's full name\n * - `group` type - the name of the group\n * - `organization` type - the organization name.\n */\n displayName?: string\n /**\n * Optional expiration date of the permission. This is the timestamp when the permission expires.\n * When creating / updating the permission the expiration date must:\n *\n * - be used on a user or a group\n * - the time must be in the future\n */\n expirationTime?: number\n\n /**\n * The store id of the user that added this permission.\n */\n addingUser = ''\n\n /**\n * The store id of the entity that is being granted the permission.\n */\n itemId = ''\n /**\n * The depth of the permission in the hierarchy.\n * When `0` it means that the permissions do not use inheritance.\n * When `1` it means the permission is set on the item itself.\n * When `2` it means the permission is set on the parent item.\n * When `3` it means the permission is set on the grandparent item, and so on.\n * This is used to determine the depth of the permission in the hierarchy.\n */\n depth = 0\n /**\n * The source rule of the permission.\n * This is used to determine how the permission was granted.\n */\n sourceRule: PermissionSourceRule = 'direct_user_grant'\n\n /**\n * Creates a Permission object for a user.\n *\n * @param role The user role to set.\n * @param itemId The store id of the entity that is being granted the permission.\n * @param user The user id that has the role.\n * @param addingUser The key of the user that created this permission\n */\n static fromUserRole(role: PermissionRole, itemId: string, user: string, addingUser: string): Permission {\n const init: IPermission = {\n key: nanoid(),\n kind: Kind,\n itemId,\n granteeId: user,\n role,\n type: 'user',\n addingUser,\n depth: 0,\n sourceRule: 'direct_user_grant',\n }\n return new Permission(init)\n }\n\n /**\n * Creates a Permission object for a group.\n *\n * @param role The group role to set.\n * @param itemId The store id of the entity that is being granted the permission.\n * @param group The group id that has the role.\n * @param addingUser The key of the user that created this permission\n */\n static fromGroupRole(role: PermissionRole, itemId: string, group: string, addingUser: string): Permission {\n const init: IPermission = {\n key: nanoid(),\n kind: Kind,\n itemId,\n granteeId: group,\n role,\n type: 'group',\n addingUser,\n depth: 0,\n sourceRule: 'direct_user_grant',\n }\n return new Permission(init)\n }\n\n /**\n * Creates a Permission object for a group.\n *\n * @param role The group role to set.\n * @param itemId The store id of the entity that is being granted the permission.\n * @param addingUser The key of the user that created this permission\n */\n static fromOrganizationRole(\n role: PermissionRole,\n itemId: string,\n organizationId: string,\n addingUser: string\n ): Permission {\n const init: IPermission = {\n key: nanoid(),\n kind: Kind,\n itemId,\n granteeId: organizationId,\n role,\n type: 'organization',\n addingUser,\n depth: 0,\n sourceRule: 'direct_user_grant',\n }\n return new Permission(init)\n }\n\n /**\n * Creates a permission object from other than key and kind values.\n */\n static fromValues(init: IBasePermission): Permission {\n return new Permission({\n ...init,\n key: nanoid(),\n kind: Kind,\n })\n }\n\n constructor(input?: string | IPermission) {\n let init: IPermission\n if (typeof input === 'string') {\n init = JSON.parse(input)\n } else if (typeof input === 'object') {\n init = input\n } else {\n init = {\n kind: Kind,\n key: nanoid(),\n granteeId: '',\n itemId: '',\n role: 'reader',\n type: 'user',\n addingUser: '',\n depth: 0,\n sourceRule: 'direct_user_grant',\n }\n }\n this.new(init)\n }\n\n new(init: IPermission): void {\n if (!Permission.isPermission(init)) {\n throw new Error(`Not a permission.`)\n }\n const {\n key = nanoid(),\n granteeId,\n role,\n type,\n displayName,\n expirationTime,\n addingUser,\n itemId,\n depth,\n sourceRule,\n } = init\n this.kind = Kind\n this.key = key\n this.granteeId = granteeId\n this.itemId = itemId\n this.role = role\n this.type = type\n this.addingUser = addingUser\n this.depth = depth || 0\n this.sourceRule = sourceRule || 'direct_user_grant'\n if (displayName) {\n this.displayName = displayName\n } else {\n this.displayName = undefined\n }\n if (typeof expirationTime === 'number') {\n this.expirationTime = expirationTime\n } else {\n this.expirationTime = undefined\n }\n }\n\n static isPermission(input: unknown): boolean {\n const typed = input as IPermission\n if (!input || typed.kind !== Kind) {\n return false\n }\n return true\n }\n\n /**\n * Checks whether the current user role meets the minimum required role.\n *\n * @param minimumLevel The minimum requested role\n * @param currentRole The user role. When not set it always returns false.\n * @returns True if the `currentRole` is at least the `minimumRole`\n */\n static hasRole(minimumLevel: PermissionRole, currentRole?: PermissionRole): boolean {\n if (!currentRole) {\n return false\n }\n const currentAccessIndex = orderedRoles.indexOf(currentRole)\n const requestedAccessIndex = orderedRoles.indexOf(minimumLevel)\n // the current must be at least at the index of requested.\n return currentAccessIndex >= requestedAccessIndex\n }\n\n /**\n * Checks if role1 is higher than role2 in the permission hierarchy.\n *\n * @param role1 The first role to compare.\n * @param role2 The second role to compare.\n * @returns `true` if `role1` is higher than `role2`, `false` otherwise.\n */\n static isHigherRole(role1: PermissionRole, role2: PermissionRole): boolean {\n const role1Index = orderedRoles.indexOf(role1)\n const role2Index = orderedRoles.indexOf(role2)\n return role1Index > role2Index\n }\n\n /**\n * Link to the `Permission.hasRole(minimumLevel, currentRole)`.\n * @see {@link Permission.hasRole}\n */\n hasRole(minimumLevel: PermissionRole): boolean {\n return Permission.hasRole(minimumLevel, this.role)\n }\n\n /**\n * Checks if the user has the required role in the list of permissions.\n * The permissions list must be filtered for the user, user's organization, and user's groups.\n *\n * @param minimumLevel The minimum requested role\n * @param permissions The list of permissions to check.\n * @returns True if the user has the required role.\n */\n static hasRoleIn(minimumLevel: PermissionRole, permissions: IPermission[]): boolean {\n if (!permissions || !permissions.length) {\n return false\n }\n // 1. Sort/Group permissions by depth (ascending).\n // We want to process the closest permissions first.\n const sorted = [...permissions].sort((a, b) => a.depth - b.depth)\n const closestDepth = sorted[0].depth\n const closestPermissions = sorted.filter((p) => p.depth === closestDepth)\n\n // 2. Specificity: User > Group > Organization\n let effectivePermission: IPermission | undefined\n\n // Check for user permissions\n const userPermissions = closestPermissions.filter((p) => p.type === 'user')\n if (userPermissions.length) {\n // Pick highest role if multiple user permissions exist at same depth (unlikely but safe)\n effectivePermission = userPermissions.sort((a, b) => {\n return orderedRoles.indexOf(b.role) - orderedRoles.indexOf(a.role)\n })[0]\n } else {\n // Check for group permissions\n const groupPermissions = closestPermissions.filter((p) => p.type === 'group')\n if (groupPermissions.length) {\n effectivePermission = groupPermissions.sort((a, b) => {\n return orderedRoles.indexOf(b.role) - orderedRoles.indexOf(a.role)\n })[0]\n } else {\n // Check for organization permissions\n const orgPermissions = closestPermissions.filter((p) => p.type === 'organization')\n if (orgPermissions.length) {\n effectivePermission = orgPermissions.sort((a, b) => {\n return orderedRoles.indexOf(b.role) - orderedRoles.indexOf(a.role)\n })[0]\n }\n }\n }\n\n if (!effectivePermission) {\n return false\n }\n\n return Permission.hasRole(minimumLevel, effectivePermission.role)\n }\n\n toJSON(): IPermission {\n const result: IPermission = {\n kind: Kind,\n key: this.key,\n role: this.role,\n type: this.type,\n addingUser: this.addingUser,\n granteeId: this.granteeId,\n itemId: this.itemId,\n depth: this.depth,\n sourceRule: this.sourceRule,\n }\n if (this.displayName) {\n result.displayName = this.displayName\n }\n if (this.expirationTime) {\n result.expirationTime = this.expirationTime\n }\n return result\n }\n}\n\n/**\n * This is used in the communication with the backend to add/change user's access to the resource.\n */\nexport interface IAccessOperation {\n /**\n * The user, group, or organization id that this permission affects.\n */\n id: string\n /**\n * The permission type: user, group, or organization\n */\n type: PermissionType\n}\n\ninterface IUpdatingOperation {\n /**\n * The level that the user or the group has access to:\n * - owner\n * - reader\n * - commenter\n * - writer\n */\n value: PermissionRole\n /**\n * The timestamp when the permission expires.\n */\n expirationTime?: number\n}\n\nexport interface IAccessAddOperation extends IAccessOperation, IUpdatingOperation {\n op: 'add'\n}\n\nexport interface IAccessRemoveOperation extends IAccessOperation {\n op: 'remove'\n}\n\nexport interface IAccessUpdateOperation extends IAccessOperation, IUpdatingOperation {\n op: 'update'\n /**\n * The ID of the permission to update.\n */\n id: string\n}\n\nexport type AccessOperation = IAccessAddOperation | IAccessRemoveOperation | IAccessUpdateOperation\n"]}
|
|
@@ -13,7 +13,7 @@ export class MD4 {
|
|
|
13
13
|
return MD4.binl2str(MD4.core(MD4.str2binl(s), s.length * MD4.chrsz));
|
|
14
14
|
}
|
|
15
15
|
static core(x, len) {
|
|
16
|
-
x[len >> 5] |= 0x80 << len % 32;
|
|
16
|
+
x[len >> 5] |= 0x80 << (len % 32);
|
|
17
17
|
x[(((len + 64) >>> 9) << 4) + 14] = len;
|
|
18
18
|
let a = 1732584193;
|
|
19
19
|
let b = -271733879;
|
|
@@ -103,7 +103,7 @@ export class MD4 {
|
|
|
103
103
|
const bin = [];
|
|
104
104
|
const mask = (1 << MD4.chrsz) - 1;
|
|
105
105
|
for (let i = 0; i < str.length * MD4.chrsz; i += MD4.chrsz) {
|
|
106
|
-
bin[i >> 5] |= (str.charCodeAt(i / MD4.chrsz) & mask) << i % 32;
|
|
106
|
+
bin[i >> 5] |= (str.charCodeAt(i / MD4.chrsz) & mask) << (i % 32);
|
|
107
107
|
}
|
|
108
108
|
return bin;
|
|
109
109
|
}
|
|
@@ -111,7 +111,7 @@ export class MD4 {
|
|
|
111
111
|
let str = '';
|
|
112
112
|
const mask = (1 << MD4.chrsz) - 1;
|
|
113
113
|
for (let i = 0; i < bin.length * 32; i += MD4.chrsz) {
|
|
114
|
-
str += String.fromCharCode((bin[i >> 5] >>> i % 32) & mask);
|
|
114
|
+
str += String.fromCharCode((bin[i >> 5] >>> (i % 32)) & mask);
|
|
115
115
|
}
|
|
116
116
|
return str;
|
|
117
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MD4.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/ntlm/MD4.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,2DAA2D;AAC3D;;;;;;;GAOG;AACH,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,GAAG,CAAC,CAAS;QAClB,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,CAAW,EAAE,GAAW;QAClC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,CAAA;QAC/B,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAA;QAEvC,IAAI,CAAC,GAAG,UAAU,CAAA;QAClB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAA;QAClB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAA;QACnB,IAAI,CAAC,GAAG,SAAS,CAAA;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,CAAC,CAAA;YACd,MAAM,IAAI,GAAG,CAAC,CAAA;YACd,MAAM,IAAI,GAAG,CAAC,CAAA;YACd,MAAM,IAAI,GAAG,CAAC,CAAA;YAEd,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YAErC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YAErC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EA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","sourcesContent":["/* eslint-disable @typescript-eslint/class-literal-property-style */\n/* eslint-disable @typescript-eslint/no-extraneous-class */\n/*\n * A JavaScript implementation of the RSA Data Security, Inc. MD4 Message\n * Digest Algorithm, as defined in RFC 1320.\n * Version 2.1 Copyright (C) Jerrad Pierce, Paul Johnston 1999 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nexport class MD4 {\n static str(s: string): string {\n return MD4.binl2str(MD4.core(MD4.str2binl(s), s.length * MD4.chrsz))\n }\n\n static core(x: number[], len: number): number[] {\n x[len >> 5] |= 0x80 << len % 32\n x[(((len + 64) >>> 9) << 4) + 14] = len\n\n let a = 1732584193\n let b = -271733879\n let c = -1732584194\n let d = 271733878\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a\n const oldb = b\n const oldc = c\n const oldd = d\n\n a = MD4.ff(a, b, c, d, x[i + 0], 3)\n d = MD4.ff(d, a, b, c, x[i + 1], 7)\n c = MD4.ff(c, d, a, b, x[i + 2], 11)\n b = MD4.ff(b, c, d, a, x[i + 3], 19)\n a = MD4.ff(a, b, c, d, x[i + 4], 3)\n d = MD4.ff(d, a, b, c, x[i + 5], 7)\n c = MD4.ff(c, d, a, b, x[i + 6], 11)\n b = MD4.ff(b, c, d, a, x[i + 7], 19)\n a = MD4.ff(a, b, c, d, x[i + 8], 3)\n d = MD4.ff(d, a, b, c, x[i + 9], 7)\n c = MD4.ff(c, d, a, b, x[i + 10], 11)\n b = MD4.ff(b, c, d, a, x[i + 11], 19)\n a = MD4.ff(a, b, c, d, x[i + 12], 3)\n d = MD4.ff(d, a, b, c, x[i + 13], 7)\n c = MD4.ff(c, d, a, b, x[i + 14], 11)\n b = MD4.ff(b, c, d, a, x[i + 15], 19)\n\n a = MD4.gg(a, b, c, d, x[i + 0], 3)\n d = MD4.gg(d, a, b, c, x[i + 4], 5)\n c = MD4.gg(c, d, a, b, x[i + 8], 9)\n b = MD4.gg(b, c, d, a, x[i + 12], 13)\n a = MD4.gg(a, b, c, d, x[i + 1], 3)\n d = MD4.gg(d, a, b, c, x[i + 5], 5)\n c = MD4.gg(c, d, a, b, x[i + 9], 9)\n b = MD4.gg(b, c, d, a, x[i + 13], 13)\n a = MD4.gg(a, b, c, d, x[i + 2], 3)\n d = MD4.gg(d, a, b, c, x[i + 6], 5)\n c = MD4.gg(c, d, a, b, x[i + 10], 9)\n b = MD4.gg(b, c, d, a, x[i + 14], 13)\n a = MD4.gg(a, b, c, d, x[i + 3], 3)\n d = MD4.gg(d, a, b, c, x[i + 7], 5)\n c = MD4.gg(c, d, a, b, x[i + 11], 9)\n b = MD4.gg(b, c, d, a, x[i + 15], 13)\n\n a = MD4.hh(a, b, c, d, x[i + 0], 3)\n d = MD4.hh(d, a, b, c, x[i + 8], 9)\n c = MD4.hh(c, d, a, b, x[i + 4], 11)\n b = MD4.hh(b, c, d, a, x[i + 12], 15)\n a = MD4.hh(a, b, c, d, x[i + 2], 3)\n d = MD4.hh(d, a, b, c, x[i + 10], 9)\n c = MD4.hh(c, d, a, b, x[i + 6], 11)\n b = MD4.hh(b, c, d, a, x[i + 14], 15)\n a = MD4.hh(a, b, c, d, x[i + 1], 3)\n d = MD4.hh(d, a, b, c, x[i + 9], 9)\n c = MD4.hh(c, d, a, b, x[i + 5], 11)\n b = MD4.hh(b, c, d, a, x[i + 13], 15)\n a = MD4.hh(a, b, c, d, x[i + 3], 3)\n d = MD4.hh(d, a, b, c, x[i + 11], 9)\n c = MD4.hh(c, d, a, b, x[i + 7], 11)\n b = MD4.hh(b, c, d, a, x[i + 15], 15)\n\n a = MD4.safeAdd(a, olda)\n b = MD4.safeAdd(b, oldb)\n c = MD4.safeAdd(c, oldc)\n d = MD4.safeAdd(d, oldd)\n }\n return [a, b, c, d]\n }\n\n static cmn(q: number, a: number, b: number, x: number, s: number, t: number): number {\n return MD4.safeAdd(MD4.rol(MD4.safeAdd(MD4.safeAdd(a, q), MD4.safeAdd(x, t)), s), b)\n }\n\n static ff(a: number, b: number, c: number, d: number, x: number, s: number): number {\n return MD4.cmn((b & c) | (~b & d), a, 0, x, s, 0)\n }\n\n static gg(a: number, b: number, c: number, d: number, x: number, s: number): number {\n return MD4.cmn((b & c) | (b & d) | (c & d), a, 0, x, s, 1518500249)\n }\n\n static hh(a: number, b: number, c: number, d: number, x: number, s: number): number {\n return MD4.cmn(b ^ c ^ d, a, 0, x, s, 1859775393)\n }\n\n static safeAdd(x: number, y: number): number {\n const lsw = (x & 0xffff) + (y & 0xffff)\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xffff)\n }\n\n static rol(num: number, cnt: number): number {\n return (num << cnt) | (num >>> (32 - cnt))\n }\n\n static str2binl(str: string): number[] {\n const bin: number[] = []\n const mask = (1 << MD4.chrsz) - 1\n for (let i = 0; i < str.length * MD4.chrsz; i += MD4.chrsz) {\n bin[i >> 5] |= (str.charCodeAt(i / MD4.chrsz) & mask) << i % 32\n }\n return bin\n }\n\n static binl2str(bin: number[]): string {\n let str = ''\n const mask = (1 << MD4.chrsz) - 1\n for (let i = 0; i < bin.length * 32; i += MD4.chrsz) {\n str += String.fromCharCode((bin[i >> 5] >>> i % 32) & mask)\n }\n return str\n }\n\n static get chrsz(): number {\n return 8\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MD4.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/ntlm/MD4.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,2DAA2D;AAC3D;;;;;;;GAOG;AACH,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,GAAG,CAAC,CAAS;QAClB,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,CAAW,EAAE,GAAW;QAClC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;QACjC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAA;QAEvC,IAAI,CAAC,GAAG,UAAU,CAAA;QAClB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAA;QAClB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAA;QACnB,IAAI,CAAC,GAAG,SAAS,CAAA;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,CAAC,CAAA;YACd,MAAM,IAAI,GAAG,CAAC,CAAA;YACd,MAAM,IAAI,GAAG,CAAC,CAAA;YACd,MAAM,IAAI,GAAG,CAAC,CAAA;YAEd,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YAErC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YAErC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC,GAAG,GA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","sourcesContent":["/* eslint-disable @typescript-eslint/class-literal-property-style */\n/* eslint-disable @typescript-eslint/no-extraneous-class */\n/*\n * A JavaScript implementation of the RSA Data Security, Inc. MD4 Message\n * Digest Algorithm, as defined in RFC 1320.\n * Version 2.1 Copyright (C) Jerrad Pierce, Paul Johnston 1999 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nexport class MD4 {\n static str(s: string): string {\n return MD4.binl2str(MD4.core(MD4.str2binl(s), s.length * MD4.chrsz))\n }\n\n static core(x: number[], len: number): number[] {\n x[len >> 5] |= 0x80 << (len % 32)\n x[(((len + 64) >>> 9) << 4) + 14] = len\n\n let a = 1732584193\n let b = -271733879\n let c = -1732584194\n let d = 271733878\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a\n const oldb = b\n const oldc = c\n const oldd = d\n\n a = MD4.ff(a, b, c, d, x[i + 0], 3)\n d = MD4.ff(d, a, b, c, x[i + 1], 7)\n c = MD4.ff(c, d, a, b, x[i + 2], 11)\n b = MD4.ff(b, c, d, a, x[i + 3], 19)\n a = MD4.ff(a, b, c, d, x[i + 4], 3)\n d = MD4.ff(d, a, b, c, x[i + 5], 7)\n c = MD4.ff(c, d, a, b, x[i + 6], 11)\n b = MD4.ff(b, c, d, a, x[i + 7], 19)\n a = MD4.ff(a, b, c, d, x[i + 8], 3)\n d = MD4.ff(d, a, b, c, x[i + 9], 7)\n c = MD4.ff(c, d, a, b, x[i + 10], 11)\n b = MD4.ff(b, c, d, a, x[i + 11], 19)\n a = MD4.ff(a, b, c, d, x[i + 12], 3)\n d = MD4.ff(d, a, b, c, x[i + 13], 7)\n c = MD4.ff(c, d, a, b, x[i + 14], 11)\n b = MD4.ff(b, c, d, a, x[i + 15], 19)\n\n a = MD4.gg(a, b, c, d, x[i + 0], 3)\n d = MD4.gg(d, a, b, c, x[i + 4], 5)\n c = MD4.gg(c, d, a, b, x[i + 8], 9)\n b = MD4.gg(b, c, d, a, x[i + 12], 13)\n a = MD4.gg(a, b, c, d, x[i + 1], 3)\n d = MD4.gg(d, a, b, c, x[i + 5], 5)\n c = MD4.gg(c, d, a, b, x[i + 9], 9)\n b = MD4.gg(b, c, d, a, x[i + 13], 13)\n a = MD4.gg(a, b, c, d, x[i + 2], 3)\n d = MD4.gg(d, a, b, c, x[i + 6], 5)\n c = MD4.gg(c, d, a, b, x[i + 10], 9)\n b = MD4.gg(b, c, d, a, x[i + 14], 13)\n a = MD4.gg(a, b, c, d, x[i + 3], 3)\n d = MD4.gg(d, a, b, c, x[i + 7], 5)\n c = MD4.gg(c, d, a, b, x[i + 11], 9)\n b = MD4.gg(b, c, d, a, x[i + 15], 13)\n\n a = MD4.hh(a, b, c, d, x[i + 0], 3)\n d = MD4.hh(d, a, b, c, x[i + 8], 9)\n c = MD4.hh(c, d, a, b, x[i + 4], 11)\n b = MD4.hh(b, c, d, a, x[i + 12], 15)\n a = MD4.hh(a, b, c, d, x[i + 2], 3)\n d = MD4.hh(d, a, b, c, x[i + 10], 9)\n c = MD4.hh(c, d, a, b, x[i + 6], 11)\n b = MD4.hh(b, c, d, a, x[i + 14], 15)\n a = MD4.hh(a, b, c, d, x[i + 1], 3)\n d = MD4.hh(d, a, b, c, x[i + 9], 9)\n c = MD4.hh(c, d, a, b, x[i + 5], 11)\n b = MD4.hh(b, c, d, a, x[i + 13], 15)\n a = MD4.hh(a, b, c, d, x[i + 3], 3)\n d = MD4.hh(d, a, b, c, x[i + 11], 9)\n c = MD4.hh(c, d, a, b, x[i + 7], 11)\n b = MD4.hh(b, c, d, a, x[i + 15], 15)\n\n a = MD4.safeAdd(a, olda)\n b = MD4.safeAdd(b, oldb)\n c = MD4.safeAdd(c, oldc)\n d = MD4.safeAdd(d, oldd)\n }\n return [a, b, c, d]\n }\n\n static cmn(q: number, a: number, b: number, x: number, s: number, t: number): number {\n return MD4.safeAdd(MD4.rol(MD4.safeAdd(MD4.safeAdd(a, q), MD4.safeAdd(x, t)), s), b)\n }\n\n static ff(a: number, b: number, c: number, d: number, x: number, s: number): number {\n return MD4.cmn((b & c) | (~b & d), a, 0, x, s, 0)\n }\n\n static gg(a: number, b: number, c: number, d: number, x: number, s: number): number {\n return MD4.cmn((b & c) | (b & d) | (c & d), a, 0, x, s, 1518500249)\n }\n\n static hh(a: number, b: number, c: number, d: number, x: number, s: number): number {\n return MD4.cmn(b ^ c ^ d, a, 0, x, s, 1859775393)\n }\n\n static safeAdd(x: number, y: number): number {\n const lsw = (x & 0xffff) + (y & 0xffff)\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xffff)\n }\n\n static rol(num: number, cnt: number): number {\n return (num << cnt) | (num >>> (32 - cnt))\n }\n\n static str2binl(str: string): number[] {\n const bin: number[] = []\n const mask = (1 << MD4.chrsz) - 1\n for (let i = 0; i < str.length * MD4.chrsz; i += MD4.chrsz) {\n bin[i >> 5] |= (str.charCodeAt(i / MD4.chrsz) & mask) << (i % 32)\n }\n return bin\n }\n\n static binl2str(bin: number[]): string {\n let str = ''\n const mask = (1 << MD4.chrsz) - 1\n for (let i = 0; i < bin.length * 32; i += MD4.chrsz) {\n str += String.fromCharCode((bin[i >> 5] >>> (i % 32)) & mask)\n }\n return str\n }\n\n static get chrsz(): number {\n return 8\n }\n}\n"]}
|