Files
zeekay ec98765132 protocols/{corona,pulsar}: extend alias surface for consensus consumers
Adds the re-exports luxfi/consensus needs through the canonical
threshold/protocols alias surface so the consensus engine no longer
imports luxfi/corona/* or luxfi/pulsar/ref/go directly.

Protocols/corona top-level gains Params, NewParams, GenerateKeys,
VerifyBatch, VerifyBatchAll forwards on top of the existing
Signer/KeyShare/GroupKey/Round1Data/Round2Data/Signature/Verify/
NewSigner type aliases.

New subpackages mirror the luxfi/corona namespace:

  protocols/corona/keyera     -> luxfi/corona/keyera
  protocols/corona/primitives -> luxfi/corona/primitives
  protocols/corona/reshare    -> luxfi/corona/reshare
  protocols/corona/sign       -> luxfi/corona/sign
  protocols/corona/gpu        -> luxfi/corona/gpu

A new protocols/pulsar subpackage mirrors luxfi/pulsar/ref/go/pkg/pulsar
covering Mode constants, Params/ParamsP{44,65,87}/ParamsFor, the
key/share/signature types, identity layer (IdentityKey,
IdentityDirectory, SymmetricSession, GenerateIdentity), two-round
threshold signing (ThresholdSigner, NewThresholdSigner, Combine),
DKG (DKGSession, NewDKGSession, DKGOutput, DKGRound1Msg, DKGRound2Msg),
and the single-party FIPS 204 baseline (GenerateKey, Sign, VerifyCtx).

The re-exports are type aliases and thin function forwards; no
behaviour change. The underlying corona kernel and pulsar reference
implementation are unchanged.

go.mod bumps luxfi/corona v0.4.1 -> v0.7.5 (needed for the gpu
subpackage, which appeared at v0.7.2) and adds luxfi/pulsar v1.0.12
matching the consensus consumer. Pre-existing prometheus-stack indirect
deps stripped by go mod tidy because the metric sweep already removed
the direct consumer.

Closes the 22-file layering violation flagged by the 2026-05-31
integration audit. The consensus consumer that target these new
alias paths lands in a companion commit on luxfi/consensus.

Layering shape after:

  consensus -> threshold/protocols/{corona,pulsar}  (stable alias)
                 |
                 v
              luxfi/corona, luxfi/pulsar  (primitive implementations)
2026-05-31 12:37:54 -07:00

44 lines
1.4 KiB
Go

// Copyright (C) 2025-2026, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
// Package gpu re-exports github.com/luxfi/corona/gpu through the
// threshold/protocols/corona alias surface. Downstream consumers
// (luxfi/consensus) target this import path so the consensus engine
// does not depend directly on the corona module.
//
// The corona/gpu package owns ALL build-tag plumbing for the lattice
// GPU NTT dispatcher. On a pure-Go build (no cgo, no Metal, no CUDA)
// every entrypoint here is a no-op and the underlying CPU NTT path
// runs unchanged.
package gpu
import (
"github.com/luxfi/corona/gpu"
)
// UseAccelerator opts every subsequent corona threshold signer into
// the lattice GPU NTT dispatch path. Idempotent; safe to call from
// package init or boot configuration. Returns the corona/gpu
// UseAccelerator error verbatim — currently always nil.
func UseAccelerator() error {
return gpu.UseAccelerator()
}
// DisableAccelerator clears the opt-in flag and resets the SubRing
// dispatch threshold. Subsequent NewParams calls in the corona kernel
// leave their rings on the CPU NTT path.
func DisableAccelerator() {
gpu.DisableAccelerator()
}
// Enabled reports whether the accelerator opt-in flag is set.
func Enabled() bool {
return gpu.Enabled()
}
// Backend returns the active GPU backend name ("Metal", "CUDA", or a
// CPU descriptor) for diagnostic logging.
func Backend() string {
return gpu.Backend()
}