Skip to content

Commit 3bb620f

Browse files
authored
🤖 Merge PR DefinitelyTyped#70287 Add phc-format types by @filiafobico
1 parent 4190e90 commit 3bb620f

5 files changed

Lines changed: 267 additions & 0 deletions

File tree

types/phc__format/.npmignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*
2+
!**/*.d.ts
3+
!**/*.d.cts
4+
!**/*.d.mts
5+
!**/*.d.*.ts

types/phc__format/index.d.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/// <reference types="node" />
2+
3+
export interface PhcFormatObject {
4+
id: string;
5+
version?: number;
6+
params?: Record<string, string | number>;
7+
salt?: Buffer;
8+
hash?: Buffer;
9+
}
10+
11+
/**
12+
* Generates a PHC string using the data provided.
13+
* @param {PhcFormatObject} opts Object that holds the data needed to generate the PHC
14+
* string.
15+
* @param {string} opts.id Symbolic name for the function.
16+
* @param {Number} [opts.version] The version of the function.
17+
* @param {Object} [opts.params] Parameters of the function.
18+
* @param {Buffer} [opts.salt] The salt as a binary buffer.
19+
* @param {Buffer} [opts.hash] The hash as a binary buffer.
20+
* @return {string} The hash string adhering to the PHC format.
21+
*/
22+
export function serialize(opts: PhcFormatObject): string;
23+
24+
/**
25+
* Parses data from a PHC string.
26+
* @param {string} phcstr A PHC string to parse.
27+
* @return {Object} The object containing the data parsed from the PHC string.
28+
*/
29+
export function deserialize(phcstr: string): PhcFormatObject;

types/phc__format/package.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"private": true,
3+
"name": "@types/phc__format",
4+
"version": "1.0.9999",
5+
"projects": [
6+
"https://github.com/simonepri/phc-format#readme"
7+
],
8+
"dependencies": {
9+
"@types/node": "*"
10+
},
11+
"devDependencies": {
12+
"@types/phc__format": "workspace:."
13+
},
14+
"owners": [
15+
{
16+
"name": "Luic Oliveira",
17+
"githubUsername": "filiafobico"
18+
}
19+
]
20+
}
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
import { deserialize, serialize } from "@phc/format";
2+
3+
// same cases from https://github.com/simonepri/phc-format/blob/master/test/fixtures/serialize-deserialize.js
4+
function test_serialize() {
5+
serialize({
6+
id: "argon2i",
7+
params: { m: 120, t: 5000, p: 2 },
8+
});
9+
10+
serialize({
11+
id: "argon2i",
12+
params: { m: 120, t: 4294967295, p: 2 },
13+
});
14+
15+
serialize({
16+
id: "argon2i",
17+
params: { m: 2040, t: 5000, p: 255 },
18+
});
19+
20+
serialize({
21+
id: "argon2i",
22+
params: { m: 120, t: 5000, p: 2, keyid: "Hj5+dsK0" },
23+
});
24+
25+
serialize({
26+
id: "argon2i",
27+
params: { m: 120, t: 5000, p: 2, keyid: "Hj5+dsK0ZQ" },
28+
});
29+
30+
serialize({
31+
id: "argon2i",
32+
params: { m: 120, t: 5000, p: 2, keyid: "Hj5+dsK0ZQA" },
33+
});
34+
35+
serialize({
36+
id: "argon2i",
37+
params: { m: 120, t: 5000, p: 2, data: "sRlHhRmKUGzdOmXn01XmXygd5Kc" },
38+
});
39+
40+
serialize({
41+
id: "argon2i",
42+
params: {
43+
m: 120,
44+
t: 5000,
45+
p: 2,
46+
keyid: "Hj5+dsK0",
47+
data: "sRlHhRmKUGzdOmXn01XmXygd5Kc",
48+
},
49+
});
50+
51+
serialize({
52+
id: "argon2i",
53+
params: { m: 120, t: 5000, p: 2 },
54+
salt: Buffer.from("/LtFjH5rVL8", "base64"),
55+
});
56+
57+
serialize({
58+
id: "argon2i",
59+
params: { m: 120, t: 5000, p: 2 },
60+
salt: Buffer.from("4fXXG0spB92WPB1NitT8/OH0VKI", "base64"),
61+
});
62+
63+
serialize({
64+
id: "argon2i",
65+
params: { m: 120, t: 5000, p: 2 },
66+
salt: Buffer.from(
67+
"BwUgJHHQaynE+a4nZrYRzOllGSjjxuxNXxyNRUtI6Dlw/zlbt6PzOL8Onfqs6TcG",
68+
"base64",
69+
),
70+
});
71+
72+
serialize({
73+
id: "argon2i",
74+
params: { m: 120, t: 5000, p: 2, keyid: "Hj5+dsK0" },
75+
salt: Buffer.from("4fXXG0spB92WPB1NitT8/OH0VKI", "base64"),
76+
});
77+
78+
serialize({
79+
id: "argon2i",
80+
params: { m: 120, t: 5000, p: 2, data: "sRlHhRmKUGzdOmXn01XmXygd5Kc" },
81+
salt: Buffer.from("4fXXG0spB92WPB1NitT8/OH0VKI", "base64"),
82+
});
83+
84+
serialize({
85+
id: "argon2i",
86+
params: {
87+
m: 120,
88+
t: 5000,
89+
p: 2,
90+
keyid: "Hj5+dsK0",
91+
data: "sRlHhRmKUGzdOmXn01XmXygd5Kc",
92+
},
93+
salt: Buffer.from("4fXXG0spB92WPB1NitT8/OH0VKI", "base64"),
94+
});
95+
96+
serialize({
97+
id: "argon2i",
98+
params: { m: 120, t: 5000, p: 2 },
99+
salt: Buffer.from("4fXXG0spB92WPB1NitT8/OH0VKI", "base64"),
100+
hash: Buffer.from("iPBVuORECm5biUsjq33hn9/7BKqy9aPWKhFfK2haEsM", "base64"),
101+
});
102+
103+
serialize({
104+
id: "argon2i",
105+
params: { m: 120, t: 5000, p: 2, keyid: "Hj5+dsK0" },
106+
salt: Buffer.from("4fXXG0spB92WPB1NitT8/OH0VKI", "base64"),
107+
hash: Buffer.from("iPBVuORECm5biUsjq33hn9/7BKqy9aPWKhFfK2haEsM", "base64"),
108+
});
109+
110+
serialize({
111+
id: "argon2i",
112+
params: { m: 120, t: 5000, p: 2, data: "sRlHhRmKUGzdOmXn01XmXygd5Kc" },
113+
salt: Buffer.from("4fXXG0spB92WPB1NitT8/OH0VKI", "base64"),
114+
hash: Buffer.from("iPBVuORECm5biUsjq33hn9/7BKqy9aPWKhFfK2haEsM", "base64"),
115+
});
116+
117+
serialize({
118+
id: "argon2i",
119+
params: {
120+
m: 120,
121+
t: 5000,
122+
p: 2,
123+
keyid: "Hj5+dsK0",
124+
data: "sRlHhRmKUGzdOmXn01XmXygd5Kc",
125+
},
126+
salt: Buffer.from("4fXXG0spB92WPB1NitT8/OH0VKI", "base64"),
127+
hash: Buffer.from("iPBVuORECm5biUsjq33hn9/7BKqy9aPWKhFfK2haEsM", "base64"),
128+
});
129+
130+
serialize({
131+
id: "argon2i",
132+
params: {
133+
m: 120,
134+
t: 5000,
135+
p: 2,
136+
keyid: "Hj5+dsK0",
137+
data: "sRlHhRmKUGzdOmXn01XmXygd5Kc",
138+
},
139+
salt: Buffer.from("iHSDPHzUhPzK7rCcJgOFfg", "base64"),
140+
hash: Buffer.from("EkCWX6pSTqWruiR0", "base64"),
141+
});
142+
143+
serialize({
144+
id: "argon2i",
145+
params: {
146+
m: 120,
147+
t: 5000,
148+
p: 2,
149+
keyid: "Hj5+dsK0",
150+
data: "sRlHhRmKUGzdOmXn01XmXygd5Kc",
151+
},
152+
salt: Buffer.from("iHSDPHzUhPzK7rCcJgOFfg", "base64"),
153+
hash: Buffer.from(
154+
"J4moa2MM0/6uf3HbY2Tf5Fux8JIBTwIhmhxGRbsY14qhTltQt+Vw3b7tcJNEbk8ium8AQfZeD4tabCnNqfkD1g",
155+
"base64",
156+
),
157+
});
158+
159+
serialize({
160+
id: "scrypt",
161+
params: {
162+
ln: 1,
163+
r: 16,
164+
p: 1,
165+
},
166+
salt: Buffer.from("", "hex"),
167+
hash: Buffer.from(
168+
"d9ZXYjhleyA7GcpCwYoEl/FrSETjB0ro39/6P+3iFEL80Aad7QlI+DJqdToPyB8X6NPg+y4NNijPNeIMONGJBg",
169+
"base64",
170+
),
171+
});
172+
173+
serialize({
174+
id: "argon2i",
175+
version: 19,
176+
params: {
177+
m: 120,
178+
t: 5000,
179+
p: 2,
180+
keyid: "Hj5+dsK0",
181+
data: "sRlHhRmKUGzdOmXn01XmXygd5Kc",
182+
},
183+
salt: Buffer.from("iHSDPHzUhPzK7rCcJgOFfg", "base64"),
184+
hash: Buffer.from(
185+
"J4moa2MM0/6uf3HbY2Tf5Fux8JIBTwIhmhxGRbsY14qhTltQt+Vw3b7tcJNEbk8ium8AQfZeD4tabCnNqfkD1g",
186+
"base64",
187+
),
188+
});
189+
}
190+
191+
// same cases from https://github.com/simonepri/phc-format/blob/master/test/fixtures/serialize-deserialize.js
192+
function test_deserialize() {
193+
deserialize("$argon2i$m=120,t=5000,p=2,keyid=Hj5+dsK0,data=sRlHhRmKUGzdOmXn01XmXygd5Kc");
194+
}

types/phc__format/tsconfig.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"compilerOptions": {
3+
"module": "node16",
4+
"lib": [
5+
"es6"
6+
],
7+
"noImplicitAny": true,
8+
"noImplicitThis": true,
9+
"strictFunctionTypes": true,
10+
"strictNullChecks": true,
11+
"types": [],
12+
"noEmit": true,
13+
"forceConsistentCasingInFileNames": true
14+
},
15+
"files": [
16+
"index.d.ts",
17+
"phc__format-tests.ts"
18+
]
19+
}

0 commit comments

Comments
 (0)