@effect/sql-pg 4.0.0-rc.111 → 4.0.0-rc.112
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/ai-docs/package.json +1 -1
- package/dist/PgAuth.d.ts +69 -0
- package/dist/PgAuth.d.ts.map +1 -0
- package/dist/PgAuth.js +202 -0
- package/dist/PgAuth.js.map +1 -0
- package/dist/PgProtocol.d.ts +750 -0
- package/dist/PgProtocol.d.ts.map +1 -0
- package/dist/PgProtocol.js +1160 -0
- package/dist/PgProtocol.js.map +1 -0
- package/dist/PgTypes.d.ts +361 -0
- package/dist/PgTypes.d.ts.map +1 -0
- package/dist/PgTypes.js +1514 -0
- package/dist/PgTypes.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/package.json +8 -4
- package/src/PgAuth.ts +287 -0
- package/src/PgProtocol.ts +1820 -0
- package/src/PgTypes.ts +1930 -0
- package/src/index.ts +15 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PgTypes.js","names":[],"sources":["../src/PgTypes.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 4.0.0
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* @since 4.0.0
|
|
6
|
+
*/
|
|
7
|
+
export * as PgAuth from "./PgAuth.ts";
|
|
4
8
|
/**
|
|
5
9
|
* @since 4.0.0
|
|
6
10
|
*/
|
|
@@ -9,4 +13,12 @@ export * as PgClient from "./PgClient.ts";
|
|
|
9
13
|
* @since 4.0.0
|
|
10
14
|
*/
|
|
11
15
|
export * as PgMigrator from "./PgMigrator.ts";
|
|
16
|
+
/**
|
|
17
|
+
* @since 4.0.0
|
|
18
|
+
*/
|
|
19
|
+
export * as PgProtocol from "./PgProtocol.ts";
|
|
20
|
+
/**
|
|
21
|
+
* @since 4.0.0
|
|
22
|
+
*/
|
|
23
|
+
export * as PgTypes from "./PgTypes.ts";
|
|
12
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
* @since 4.0.0
|
|
3
3
|
*/
|
|
4
4
|
// @barrel: Auto-generated exports. Do not edit manually.
|
|
5
|
+
/**
|
|
6
|
+
* @since 4.0.0
|
|
7
|
+
*/
|
|
8
|
+
export * as PgAuth from "./PgAuth.js";
|
|
5
9
|
/**
|
|
6
10
|
* @since 4.0.0
|
|
7
11
|
*/
|
|
@@ -10,4 +14,12 @@ export * as PgClient from "./PgClient.js";
|
|
|
10
14
|
* @since 4.0.0
|
|
11
15
|
*/
|
|
12
16
|
export * as PgMigrator from "./PgMigrator.js";
|
|
17
|
+
/**
|
|
18
|
+
* @since 4.0.0
|
|
19
|
+
*/
|
|
20
|
+
export * as PgProtocol from "./PgProtocol.js";
|
|
21
|
+
/**
|
|
22
|
+
* @since 4.0.0
|
|
23
|
+
*/
|
|
24
|
+
export * as PgTypes from "./PgTypes.js";
|
|
13
25
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAK,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAK,UAAU,MAAM,iBAAiB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAK,MAAM,MAAM,aAAa;AAErC;;;AAGA,OAAO,KAAK,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAK,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAK,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAK,OAAO,MAAM,cAAc","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/sql-pg",
|
|
3
|
-
"version": "4.0.0-rc.
|
|
3
|
+
"version": "4.0.0-rc.112",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "A PostgreSQL toolkit for Effect",
|
|
@@ -48,12 +48,15 @@
|
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@testcontainers/postgresql": "^12.1.0",
|
|
51
|
-
"@types/pg": "^8.
|
|
51
|
+
"@types/pg": "^8.23.1",
|
|
52
52
|
"@types/pg-cursor": "^2.7.2",
|
|
53
|
-
"
|
|
53
|
+
"pg-protocol": "^1.16.0",
|
|
54
|
+
"postgres": "^3.4.9",
|
|
55
|
+
"tinybench": "^6.1.3",
|
|
56
|
+
"effect": "^4.0.0-rc.112"
|
|
54
57
|
},
|
|
55
58
|
"peerDependencies": {
|
|
56
|
-
"effect": "^4.0.0-rc.
|
|
59
|
+
"effect": "^4.0.0-rc.112"
|
|
57
60
|
},
|
|
58
61
|
"dependencies": {
|
|
59
62
|
"pg": "^8.23.0",
|
|
@@ -63,6 +66,7 @@
|
|
|
63
66
|
"pg-types": "^4.1.0"
|
|
64
67
|
},
|
|
65
68
|
"scripts": {
|
|
69
|
+
"benchmark:codec": "node benchmark/PgCodec.ts",
|
|
66
70
|
"codegen": "effect-utils codegen",
|
|
67
71
|
"build": "tsc -b tsconfig.json && pnpm babel",
|
|
68
72
|
"babel": "babel dist --plugins annotate-pure-calls --out-dir dist --source-maps",
|
package/src/PgAuth.ts
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Password authentication for the PostgreSQL protocol: MD5 and
|
|
3
|
+
* SCRAM-SHA-256.
|
|
4
|
+
*
|
|
5
|
+
* Message framing lives in `PgProtocol` - SASL payloads travel as opaque
|
|
6
|
+
* bytes - so this module only computes what goes inside them. Cleartext
|
|
7
|
+
* authentication needs nothing from here; send the password as a
|
|
8
|
+
* `PasswordMessage`.
|
|
9
|
+
*
|
|
10
|
+
* `SCRAM-SHA-256-PLUS` is not implemented: channel binding needs the TLS
|
|
11
|
+
* socket, which this codec does not own. Passwords are used as UTF-8 without
|
|
12
|
+
* SASLprep normalisation, so non-ASCII passwords that require normalisation
|
|
13
|
+
* are not supported.
|
|
14
|
+
*
|
|
15
|
+
* @since 4.0.0
|
|
16
|
+
*/
|
|
17
|
+
import * as Data from "effect/Data"
|
|
18
|
+
import * as Encoding from "effect/Encoding"
|
|
19
|
+
import * as Result from "effect/Result"
|
|
20
|
+
import { createHash, createHmac, pbkdf2Sync } from "node:crypto"
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Failure returned when an authentication exchange cannot be completed.
|
|
24
|
+
*
|
|
25
|
+
* @category errors
|
|
26
|
+
* @since 4.0.0
|
|
27
|
+
*/
|
|
28
|
+
export class AuthError extends Data.TaggedError("PgAuthError")<{
|
|
29
|
+
readonly message: string
|
|
30
|
+
}> {}
|
|
31
|
+
|
|
32
|
+
const fail = (message: string): never => {
|
|
33
|
+
throw new AuthError({ message })
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const result = <A>(evaluate: () => A): Result.Result<A, AuthError> => {
|
|
37
|
+
try {
|
|
38
|
+
return Result.succeed(evaluate())
|
|
39
|
+
} catch (error) {
|
|
40
|
+
if (error instanceof AuthError) return Result.fail(error)
|
|
41
|
+
throw error
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const textEncoder = new TextEncoder()
|
|
46
|
+
const textDecoder = new TextDecoder("utf-8", { fatal: true })
|
|
47
|
+
|
|
48
|
+
const bytesOf = (value: Uint8Array): Uint8Array => Uint8Array.from(value)
|
|
49
|
+
|
|
50
|
+
const sha256 = (data: Uint8Array): Uint8Array => bytesOf(createHash("sha256").update(data).digest())
|
|
51
|
+
|
|
52
|
+
const hmacSha256 = (key: Uint8Array, data: Uint8Array): Uint8Array =>
|
|
53
|
+
bytesOf(createHmac("sha256", key).update(data).digest())
|
|
54
|
+
|
|
55
|
+
const xor = (left: Uint8Array, right: Uint8Array): Uint8Array => {
|
|
56
|
+
const result = new Uint8Array(left.length)
|
|
57
|
+
for (let i = 0; i < left.length; i++) {
|
|
58
|
+
result[i] = left[i] ^ right[i]
|
|
59
|
+
}
|
|
60
|
+
return result
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const toBase64 = (bytes: Uint8Array): string => Encoding.encodeBase64(bytes)
|
|
64
|
+
|
|
65
|
+
const fromBase64 = (text: string, field: string): Uint8Array => {
|
|
66
|
+
const decoded = Encoding.decodeBase64(text)
|
|
67
|
+
if (Result.isFailure(decoded)) {
|
|
68
|
+
return fail(`Invalid base64 in SCRAM attribute "${field}"`)
|
|
69
|
+
}
|
|
70
|
+
return decoded.success
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const decodeUtf8 = (bytes: Uint8Array, what: string): string => {
|
|
74
|
+
try {
|
|
75
|
+
return textDecoder.decode(bytes)
|
|
76
|
+
} catch {
|
|
77
|
+
return fail(`Invalid UTF-8 in ${what}`)
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Computes the password string for an `AuthenticationMD5Password` challenge:
|
|
83
|
+
* `"md5" + md5(md5(password + user) + salt)`. Send the result verbatim as a
|
|
84
|
+
* `PasswordMessage`.
|
|
85
|
+
*
|
|
86
|
+
* @category MD5
|
|
87
|
+
* @since 4.0.0
|
|
88
|
+
*/
|
|
89
|
+
const md5PasswordUnsafe = (options: {
|
|
90
|
+
readonly user: string
|
|
91
|
+
readonly password: string
|
|
92
|
+
readonly salt: Uint8Array
|
|
93
|
+
}): string => {
|
|
94
|
+
if (options.salt.length !== 4) {
|
|
95
|
+
return fail(`PostgreSQL MD5 salt must be exactly 4 bytes, received ${options.salt.length}`)
|
|
96
|
+
}
|
|
97
|
+
const inner = createHash("md5").update(textEncoder.encode(options.password + options.user)).digest("hex")
|
|
98
|
+
const outer = createHash("md5").update(textEncoder.encode(inner)).update(options.salt).digest("hex")
|
|
99
|
+
return `md5${outer}`
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export const md5Password = (options: {
|
|
103
|
+
readonly user: string
|
|
104
|
+
readonly password: string
|
|
105
|
+
readonly salt: Uint8Array
|
|
106
|
+
}): Result.Result<string, AuthError> => result(() => md5PasswordUnsafe(options))
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* The only SASL mechanism this module implements.
|
|
110
|
+
*
|
|
111
|
+
* @category SCRAM
|
|
112
|
+
* @since 4.0.0
|
|
113
|
+
*/
|
|
114
|
+
export const SCRAM_SHA_256 = "SCRAM-SHA-256"
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* State after the client's first message, awaiting the server's challenge.
|
|
118
|
+
*
|
|
119
|
+
* @category SCRAM
|
|
120
|
+
* @since 4.0.0
|
|
121
|
+
*/
|
|
122
|
+
export interface ScramFirst {
|
|
123
|
+
readonly _tag: "ScramFirst"
|
|
124
|
+
readonly password: string
|
|
125
|
+
readonly clientNonce: string
|
|
126
|
+
readonly clientFirstMessageBare: string
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* State after the client's final message, awaiting the server signature.
|
|
131
|
+
*
|
|
132
|
+
* @category SCRAM
|
|
133
|
+
* @since 4.0.0
|
|
134
|
+
*/
|
|
135
|
+
export interface ScramFinal {
|
|
136
|
+
readonly _tag: "ScramFinal"
|
|
137
|
+
readonly serverSignature: Uint8Array
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* The SCRAM exchange state.
|
|
142
|
+
*
|
|
143
|
+
* @category SCRAM
|
|
144
|
+
* @since 4.0.0
|
|
145
|
+
*/
|
|
146
|
+
export type ScramState = ScramFirst | ScramFinal
|
|
147
|
+
|
|
148
|
+
const GS2_HEADER = "n,,"
|
|
149
|
+
/** Base64 of the GS2 header, the `c=` attribute value without channel binding. */
|
|
150
|
+
const CHANNEL_BINDING = "biws"
|
|
151
|
+
|
|
152
|
+
const parseAttributes = (message: string): Map<string, string> => {
|
|
153
|
+
const attributes = new Map<string, string>()
|
|
154
|
+
for (const part of message.split(",")) {
|
|
155
|
+
const separator = part.indexOf("=")
|
|
156
|
+
if (separator < 1) {
|
|
157
|
+
return fail(`Malformed SCRAM attribute: "${part}"`)
|
|
158
|
+
}
|
|
159
|
+
const key = part.slice(0, separator)
|
|
160
|
+
if (attributes.has(key)) {
|
|
161
|
+
return fail(`Duplicate SCRAM attribute "${key}"`)
|
|
162
|
+
}
|
|
163
|
+
attributes.set(key, part.slice(separator + 1))
|
|
164
|
+
}
|
|
165
|
+
return attributes
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const attribute = (attributes: Map<string, string>, key: string): string =>
|
|
169
|
+
attributes.get(key) ?? fail(`Missing SCRAM attribute "${key}"`)
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Starts a SCRAM-SHA-256 exchange. The `nonce` must be a fresh, random,
|
|
173
|
+
* printable ASCII string chosen by the caller; this module never generates
|
|
174
|
+
* randomness.
|
|
175
|
+
*
|
|
176
|
+
* The successful result contains the `initialResponse` bytes for a
|
|
177
|
+
* `SASLInitialResponse` message with mechanism `SCRAM_SHA_256`.
|
|
178
|
+
*
|
|
179
|
+
* @category SCRAM
|
|
180
|
+
* @since 4.0.0
|
|
181
|
+
*/
|
|
182
|
+
const scramInitUnsafe = (options: {
|
|
183
|
+
readonly password: string
|
|
184
|
+
readonly nonce: string
|
|
185
|
+
}): { readonly state: ScramFirst; readonly response: Uint8Array } => {
|
|
186
|
+
if (!/^[\x21-\x2b\x2d-\x7e]+$/.test(options.nonce)) {
|
|
187
|
+
return fail("SCRAM nonce must contain only printable ASCII characters other than comma")
|
|
188
|
+
}
|
|
189
|
+
const clientFirstMessageBare = `n=,r=${options.nonce}`
|
|
190
|
+
return {
|
|
191
|
+
state: {
|
|
192
|
+
_tag: "ScramFirst",
|
|
193
|
+
password: options.password,
|
|
194
|
+
clientNonce: options.nonce,
|
|
195
|
+
clientFirstMessageBare
|
|
196
|
+
},
|
|
197
|
+
response: textEncoder.encode(GS2_HEADER + clientFirstMessageBare)
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export const scramInit = (options: {
|
|
202
|
+
readonly password: string
|
|
203
|
+
readonly nonce: string
|
|
204
|
+
}): Result.Result<{ readonly state: ScramFirst; readonly response: Uint8Array }, AuthError> =>
|
|
205
|
+
result(() => scramInitUnsafe(options))
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Answers an `AuthenticationSASLContinue` challenge.
|
|
209
|
+
*
|
|
210
|
+
* The successful result contains the payload bytes for a `SASLResponse`
|
|
211
|
+
* message.
|
|
212
|
+
*
|
|
213
|
+
* @category SCRAM
|
|
214
|
+
* @since 4.0.0
|
|
215
|
+
*/
|
|
216
|
+
const scramContinueUnsafe = (
|
|
217
|
+
state: ScramFirst,
|
|
218
|
+
challenge: Uint8Array
|
|
219
|
+
): { readonly state: ScramFinal; readonly response: Uint8Array } => {
|
|
220
|
+
const serverFirstMessage = decodeUtf8(challenge, "the SCRAM server-first-message")
|
|
221
|
+
const attributes = parseAttributes(serverFirstMessage)
|
|
222
|
+
const nonce = attribute(attributes, "r")
|
|
223
|
+
if (!nonce.startsWith(state.clientNonce) || nonce.length === state.clientNonce.length) {
|
|
224
|
+
return fail("SCRAM server nonce does not extend the client nonce")
|
|
225
|
+
}
|
|
226
|
+
const saltText = attribute(attributes, "s")
|
|
227
|
+
if (saltText.length === 0) {
|
|
228
|
+
return fail("SCRAM salt must not be empty")
|
|
229
|
+
}
|
|
230
|
+
const salt = fromBase64(saltText, "s")
|
|
231
|
+
const iterationText = attribute(attributes, "i")
|
|
232
|
+
const iterations = Number(iterationText)
|
|
233
|
+
if (!/^[1-9]\d*$/.test(iterationText) || !Number.isSafeInteger(iterations) || iterations > 0x7fffffff) {
|
|
234
|
+
return fail(`Invalid SCRAM iteration count: ${iterationText}`)
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
const saltedPassword = bytesOf(
|
|
238
|
+
pbkdf2Sync(textEncoder.encode(state.password), salt, iterations, 32, "sha256")
|
|
239
|
+
)
|
|
240
|
+
const clientKey = hmacSha256(saltedPassword, textEncoder.encode("Client Key"))
|
|
241
|
+
const storedKey = sha256(clientKey)
|
|
242
|
+
const clientFinalMessageWithoutProof = `c=${CHANNEL_BINDING},r=${nonce}`
|
|
243
|
+
const authMessage = textEncoder.encode(
|
|
244
|
+
`${state.clientFirstMessageBare},${serverFirstMessage},${clientFinalMessageWithoutProof}`
|
|
245
|
+
)
|
|
246
|
+
const clientProof = xor(clientKey, hmacSha256(storedKey, authMessage))
|
|
247
|
+
const serverKey = hmacSha256(saltedPassword, textEncoder.encode("Server Key"))
|
|
248
|
+
|
|
249
|
+
return {
|
|
250
|
+
state: {
|
|
251
|
+
_tag: "ScramFinal",
|
|
252
|
+
serverSignature: hmacSha256(serverKey, authMessage)
|
|
253
|
+
},
|
|
254
|
+
response: textEncoder.encode(`${clientFinalMessageWithoutProof},p=${toBase64(clientProof)}`)
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export const scramContinue = (
|
|
259
|
+
state: ScramFirst,
|
|
260
|
+
challenge: Uint8Array
|
|
261
|
+
): Result.Result<{ readonly state: ScramFinal; readonly response: Uint8Array }, AuthError> =>
|
|
262
|
+
result(() => scramContinueUnsafe(state, challenge))
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Verifies the server signature carried by `AuthenticationSASLFinal`. Returns
|
|
266
|
+
* `Result.void` on success and an `AuthError` failure when the server could
|
|
267
|
+
* not prove that it knows the stored key.
|
|
268
|
+
*
|
|
269
|
+
* @category SCRAM
|
|
270
|
+
* @since 4.0.0
|
|
271
|
+
*/
|
|
272
|
+
const scramFinishUnsafe = (state: ScramFinal, challenge: Uint8Array): void => {
|
|
273
|
+
const attributes = parseAttributes(decodeUtf8(challenge, "the SCRAM server-final-message"))
|
|
274
|
+
const error = attributes.get("e")
|
|
275
|
+
if (error !== undefined) {
|
|
276
|
+
fail(`SCRAM authentication failed: ${error}`)
|
|
277
|
+
}
|
|
278
|
+
const signature = fromBase64(attribute(attributes, "v"), "v")
|
|
279
|
+
if (toBase64(state.serverSignature) !== toBase64(signature)) {
|
|
280
|
+
fail("SCRAM server signature mismatch")
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export const scramFinish = (
|
|
285
|
+
state: ScramFinal,
|
|
286
|
+
challenge: Uint8Array
|
|
287
|
+
): Result.Result<void, AuthError> => result(() => scramFinishUnsafe(state, challenge))
|