Skip to content

Define the interface through which a client stores a session secret #33

Description

@iderex

The session record in #5 says the core never writes a credential to its own cache
or log, and that a platform keychain is the only acceptable place at rest. That
makes storage a client responsibility, and a responsibility with no interface is
a responsibility nobody has.

What this produces

A named interface with two operations, storing and retrieving a secret for a
named server, and one for forgetting it.

Documentation stating that the implementation has to be the platform's own
protected storage, and naming what each platform family offers, so that a client
author does not reach for a file.

Behaviour when the client supplies no implementation at all: the core works and
the session lives only as long as the process. This is the correct default,
because a core that silently falls back to a file has made the decision the
record forbids.

A test double for the suite that keeps secrets in memory and is never written to
disk.

Done when

The interface exists, the core compiles and passes its suite with no
implementation supplied, and a test proves that with none supplied nothing
secret reaches the cache directory or any log. Blocked on #5.

Metadata

Metadata

Assignees

Labels

architectureShape of the core: boundaries, interfaces, contractsblocked-on-dependencyWaiting on another issue or on a state of the tree, not on a personsecurity

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions