spakky-cryptography
spakky-cryptography는 암호화 utility와 서명된AuthContextSnapshot전파를 제공합니다. Password hash 검증과 snapshot sign/verify capability를spakky-authprovider contribution으로 연결합니다.
유지되는 Utility
Key,Base64Encoder,Hash,HMACICryptor,ISignerAes,Gcm,Rsa,AsymmetricKeyArgon2PasswordEncoder,BcryptPasswordEncoder,Pbkdf2PasswordEncoder,ScryptPasswordEncoder
JWT/OIDC token 검증은 이 패키지의 범위 밖이며 spakky-oidc가 담당합니다.
설치
pip install spakky-cryptography
Auth snapshot propagation이나 password provider로 쓰려면 spakky-auth와 함께 로드합니다.
pip install spakky-auth spakky-cryptography
설정
CryptographyAuthProviderConfig는 SPAKKY_CRYPTOGRAPHY_ 접두사의 환경변수를 읽습니다.
| 환경변수 | 의미 | 기본값 |
|---|---|---|
SPAKKY_CRYPTOGRAPHY_SNAPSHOT_KEY |
snapshot HMAC key, URL-safe base64 문자열 | 런타임 생성 32-byte key |
SPAKKY_CRYPTOGRAPHY_SNAPSHOT_KEY_ID |
signed snapshot envelope에 들어갈 key id | spakky-cryptography:default |
SPAKKY_CRYPTOGRAPHY_SNAPSHOT_TTL |
새 snapshot 유효 기간. 환경변수로 지정할 때는 초 단위 숫자 또는 Pydantic duration 형식을 사용 | 300 |
SPAKKY_CRYPTOGRAPHY_VERIFICATION_AVAILABLE |
snapshot verification provider 가용성 | true |
SPAKKY_CRYPTOGRAPHY_PASSWORD_AVAILABLE |
password hash/verify provider 가용성 | true |
운영에서는 모든 프로세스가 같은 snapshot을 검증할 수 있도록 SNAPSHOT_KEY를 명시적으로 고정하세요. 기본 key는 프로세스 시작마다 생성되므로 단일 프로세스 개발용입니다.
Auth Provider Capability
플러그인은 다음 capability를 구현하는 CryptographyAuthProvider를 등록합니다.
AuthCapability.SNAPSHOT_SIGNAuthCapability.SNAPSHOT_VERIFYAuthCapability.PASSWORD_HASHAuthCapability.PASSWORD_VERIFY
Snapshot verification은 누락, invalid, expired envelope을 CHALLENGE decision으로
매핑합니다. Provider를 사용할 수 없는 상태는 ERROR로 매핑합니다.
플러그인 등록
Base plugin entry point는 CryptographyAuthProviderConfig, CryptographyAuthProvider를 등록하고 다음 port를 같은 provider 구현체에 binding합니다.
IAuthContextSnapshotSignerIAuthContextSnapshotVerifierIPasswordHasherIPasswordVerifier
Auth feature contribution entry point는 spakky.contributions.spakky.auth group에 AuthProviderContribution capability metadata를 등록합니다. spakky-auth의 startup validation은 이 metadata로 snapshot/password capability provider count를 검증합니다.
사용 예
import spakky.auth
import spakky.plugins.cryptography
from spakky.core.application.application import SpakkyApplication
from spakky.core.application.application_context import ApplicationContext
app = (
SpakkyApplication(ApplicationContext())
.load_plugins(
include={
spakky.auth.PLUGIN_NAME,
spakky.plugins.cryptography.PLUGIN_NAME,
}
)
.start()
)
개발 검증
패키지 단위 검증은 해당 패키지 디렉토리에서 실행합니다.
uv run ruff format .
uv run ruff check .
uv run pyrefly check
uv run pytest
pytest는 각 패키지 pyproject.toml의 coverage 설정을 사용합니다.
라이선스
MIT License
Metadata
Release files for spakky-cryptography 8.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| spakky_cryptography-8.1.0.tar.gz | 14.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| spakky_cryptography-8.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.6 kB
Release files / spakky_cryptography-8.1.0.tar.gz
| Download URL | spakky_cryptography-8.1.0.tar.gz |
|---|---|
| Size | 14.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
09f0e66138ae9c6afc75c446dab9d5b03938f4ed61231f90d3778b93a0e168ed
|
|
BLAKE2b-256 checksum How to use checksums |
3b36a8a2d98246926c544e181bfb17a9a7b7eabe94a532c0b12ba33b36b884ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.
Transparency logRelease files / spakky_cryptography-8.1.0-py3-none-any.whl
| Download URL | spakky_cryptography-8.1.0-py3-none-any.whl |
|---|---|
| Size | 26.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aff49feaac6c4adfbcaa05db5a83904419255a1a8baf22a841053a99a61a182d
|
|
BLAKE2b-256 checksum How to use checksums |
21801955958193449be15c6b788170f64c36050cbefe4ce92e0a14cc17522917
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.
Transparency log