PostgreSQL authentication helpers for the pelt I/O edge (epic E4).
Pure functions and small state machines that turn backend auth challenges into frontend
PasswordMessage bytes via build_password(). SCRAM-SHA-256 uses only
stdlibhashlib / hmac / secrets— no channel binding (asyncpg parity; anyio
lacksserver-end-point). MD5 and cleartext cover legacy/dev servers.
data.drivers._pelt._auth
| Name | Type | Default | Description |
|---|---|---|---|
type
|
|
— | |
qualified_name
|
|
— | |
element_type
|
|
— | |
description
|
|
— | |
source_file
|
|
— | |
line_number
|
|
— | |
is_autodoc
|
|
— | |
autodoc_element
|
|
— | |
_autodoc_template
|
|
— | |
_autodoc_url_path
|
|
— | |
_autodoc_page_type
|
|
— | |
title
|
|
— | |
doc_content_hash
|
|
— |
Symbols on this page
SCRAMHi()— PBKDF2-HMAC-SHA256.
Parser=...,s=...,i=...from a server-first message.
Incremental SCRAM-SHA-256 client exchange (no channel binding).
Respond toAuthenticationCleartextPassword.
Respond toAuthenticationMD5Password.
Build the frontend bytes for one auth challenge.
Returns(password_message_bytes, updated_scram_client). scrammust be reused
across the SASL continue/final rounds on the same connection.
_hi
function
def _hi(password: bytes, salt: bytes, iterations: int) -> bytes
SCRAMHi()— PBKDF2-HMAC-SHA256.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
password
|
bytes
|
— | |
salt
|
bytes
|
— | |
iterations
|
int
|
— |
_parse_server_first
function
def _parse_server_first(data: bytes) -> tuple[str, bytes, int]
Parser=...,s=...,i=...from a server-first message.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
data
|
bytes
|
— |
ScramSha256Client
class
Incremental SCRAM-SHA-256 client exchange (no channel binding).
build_cleartext_password
function
def build_cleartext_password(password: str) -> bytes
Respond toAuthenticationCleartextPassword.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
password
|
str
|
— |
build_md5_password
function
def build_md5_password(*, user: str, password: str, salt: bytes) -> bytes
Respond toAuthenticationMD5Password.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
user
|
str
|
— | |
password
|
str
|
— | |
salt
|
bytes
|
— |
respond_to_auth
function
def respond_to_auth(request: AuthRequest, *, user: str, password: str, scram: ScramSha256Client | None = None) -> tuple[bytes, ScramSha256Client | None]
Build the frontend bytes for one auth challenge.
Returns(password_message_bytes, updated_scram_client). scrammust be reused
across the SASL continue/final rounds on the same connection.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
request
|
AuthRequest
|
— | |
user
|
str
|
— | |
password
|
str
|
— | |
scram
|
ScramSha256Client | None
|
None
|
View source · /home/runner/work/chirp/chirp/site/../src/chirp/data/drivers/_pelt/_auth.py:1