@fastly/remix-server-runtime 2.1.1 → 3.0.0-beta.1
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/crypto.d.ts +3 -2
- package/build/src/crypto.d.ts.map +1 -1
- package/build/src/crypto.js +24 -43
- package/build/src/crypto.js.map +1 -1
- package/package.json +1 -1
package/build/src/crypto.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export declare
|
|
1
|
+
import type { SignFunction, UnsignFunction } from "@remix-run/server-runtime";
|
|
2
|
+
export declare const sign: SignFunction;
|
|
3
|
+
export declare const unsign: UnsignFunction;
|
|
3
4
|
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAI9E,eAAO,MAAM,IAAI,EAAE,YAUlB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,cAWpB,CAAC"}
|
package/build/src/crypto.js
CHANGED
|
@@ -1,54 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright Fastly, Inc.
|
|
4
|
-
* Licensed under the MIT license. See LICENSE file for details.
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
-
if (mod && mod.__esModule) return mod;
|
|
24
|
-
var result = {};
|
|
25
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
-
__setModuleDefault(result, mod);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
3
|
exports.unsign = exports.sign = void 0;
|
|
31
|
-
const crypto = __importStar(require("crypto"));
|
|
32
4
|
const encoder = new TextEncoder();
|
|
33
|
-
async
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return
|
|
39
|
-
}
|
|
40
|
-
async function sign(value, secret) {
|
|
41
|
-
let hash = await calculateHash(value, secret);
|
|
42
|
-
return value + '.' + hash;
|
|
43
|
-
}
|
|
5
|
+
const sign = async (value, secret) => {
|
|
6
|
+
let key = await createKey(secret, ["sign"]);
|
|
7
|
+
let data = encoder.encode(value);
|
|
8
|
+
let signature = await crypto.subtle.sign("HMAC", key, data);
|
|
9
|
+
let hash = btoa(String.fromCharCode(...new Uint8Array(signature))).replace(/=+$/, "");
|
|
10
|
+
return value + "." + hash;
|
|
11
|
+
};
|
|
44
12
|
exports.sign = sign;
|
|
45
|
-
async
|
|
13
|
+
const unsign = async (signed, secret) => {
|
|
46
14
|
let index = signed.lastIndexOf(".");
|
|
47
15
|
let value = signed.slice(0, index);
|
|
48
16
|
let hash = signed.slice(index + 1);
|
|
49
|
-
let
|
|
50
|
-
|
|
17
|
+
let key = await createKey(secret, ["verify"]);
|
|
18
|
+
let data = encoder.encode(value);
|
|
19
|
+
let signature = byteStringToUint8Array(atob(hash));
|
|
20
|
+
let valid = await crypto.subtle.verify("HMAC", key, signature, data);
|
|
51
21
|
return valid ? value : false;
|
|
52
|
-
}
|
|
22
|
+
};
|
|
53
23
|
exports.unsign = unsign;
|
|
24
|
+
async function createKey(secret, usages) {
|
|
25
|
+
let key = await crypto.subtle.importKey("raw", encoder.encode(secret), { name: "HMAC", hash: "SHA-256" }, false, usages);
|
|
26
|
+
return key;
|
|
27
|
+
}
|
|
28
|
+
function byteStringToUint8Array(byteString) {
|
|
29
|
+
let array = new Uint8Array(byteString.length);
|
|
30
|
+
for (let i = 0; i < byteString.length; i++) {
|
|
31
|
+
array[i] = byteString.charCodeAt(i);
|
|
32
|
+
}
|
|
33
|
+
return array;
|
|
34
|
+
}
|
|
54
35
|
//# sourceMappingURL=crypto.js.map
|
package/build/src/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":";;;AAMA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAE3B,MAAM,IAAI,GAAiB,KAAK,EAAE,KAAa,EAAE,MAAc,EAAE,EAAE;IACxE,IAAI,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CACxE,KAAK,EACL,EAAE,CACH,CAAC;IAEF,OAAO,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC;AAC5B,CAAC,CAAC;AAVW,QAAA,IAAI,QAUf;AAEK,MAAM,MAAM,GAAmB,KAAK,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE;IAC7E,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACnC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAEnC,IAAI,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,IAAI,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAErE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/B,CAAC,CAAC;AAXW,QAAA,MAAM,UAWjB;AAEF,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,MAA2B;IAE3B,IAAI,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACrC,KAAK,EACL,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EACtB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EACjC,KAAK,EACL,MAAM,CACP,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAkB;IAChD,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACrC;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/*\n * Copyright Fastly, Inc.\n * Licensed under the MIT license. See LICENSE file for details.\n */\nimport type { SignFunction, UnsignFunction } from \"@remix-run/server-runtime\";\n\nconst encoder = new TextEncoder();\n\nexport const sign: SignFunction = async (value: string, secret: string) => {\n let key = await createKey(secret, [\"sign\"]);\n let data = encoder.encode(value);\n let signature = await crypto.subtle.sign(\"HMAC\", key, data);\n let hash = btoa(String.fromCharCode(...new Uint8Array(signature))).replace(\n /=+$/,\n \"\"\n );\n\n return value + \".\" + hash;\n};\n\nexport const unsign: UnsignFunction = async (signed: string, secret: string) => {\n let index = signed.lastIndexOf(\".\");\n let value = signed.slice(0, index);\n let hash = signed.slice(index + 1);\n\n let key = await createKey(secret, [\"verify\"]);\n let data = encoder.encode(value);\n let signature = byteStringToUint8Array(atob(hash));\n let valid = await crypto.subtle.verify(\"HMAC\", key, signature, data);\n\n return valid ? value : false;\n};\n\nasync function createKey(\n secret: string,\n usages: CryptoKey[\"usages\"]\n): Promise<CryptoKey> {\n let key = await crypto.subtle.importKey(\n \"raw\",\n encoder.encode(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n usages\n );\n\n return key;\n}\n\nfunction byteStringToUint8Array(byteString: string): Uint8Array {\n let array = new Uint8Array(byteString.length);\n\n for (let i = 0; i < byteString.length; i++) {\n array[i] = byteString.charCodeAt(i);\n }\n\n return array;\n}\n"]}
|