Documentation
¶
Overview ¶
Package releasepublisher implements host-neutral, private-key-agnostic release publication workflows.
Index ¶
- Constants
- Variables
- func CanonicalExternalSignerRequest(request ExternalSignerRequestV1) ([]byte, error)
- func CanonicalExternalSignerResponse(response ExternalSignerResponseV1) ([]byte, error)
- func VerifyExternalSignerResponse(request ExternalSignerRequestV1, response ExternalSignerResponseV1, ...) ([]byte, error)
- func VerifyOutput(ctx context.Context, output string) error
- type ConfigV1
- type ExternalSignerRequestV1
- type ExternalSignerResponseV1
- type PackageHashSetV1
- type PluginReleaseRefV1
- type PublicKeyV1
- type PublishedFileV1
- type PublisherReleaseRefV1
- type SigningLedgerConfigV1
- type WorkspaceStatusV1
- func ApplySignature(ctx context.Context, workspace string, responseRaw []byte) (WorkspaceStatusV1, error)
- func Finalize(ctx context.Context, workspace, output string) (WorkspaceStatusV1, error)
- func Prepare(ctx context.Context, config ConfigV1, packageFile, workspace string) (WorkspaceStatusV1, error)
Constants ¶
View Source
const ( ExternalSignerRequestSchemaVersion = "redevplugin.external_signer_request.v1" ExternalSignerResponseSchemaVersion = "redevplugin.external_signer_response.v1" )
View Source
const ( ConfigSchemaVersion = "redevplugin.release_publisher_config.v1" WorkspaceSchemaVersion = "redevplugin.release_publisher_workspace.v1" ReleaseRefSchemaVersion = "redevplugin.publisher_release_ref.v1" )
Variables ¶
View Source
var ( ErrInvalidSignerRequest = errors.New("external signer request is invalid") ErrInvalidSignerResponse = errors.New("external signer response is invalid") )
View Source
var ( ErrInvalidPublisherConfig = errors.New("release publisher config is invalid") ErrWorkspaceConflict = errors.New("release publisher workspace conflicts with the requested input") ErrWorkspaceIncomplete = errors.New("release publisher workspace is incomplete") ErrInvalidWorkspace = errors.New("release publisher workspace is invalid") )
Functions ¶
func CanonicalExternalSignerRequest ¶
func CanonicalExternalSignerRequest(request ExternalSignerRequestV1) ([]byte, error)
func CanonicalExternalSignerResponse ¶
func CanonicalExternalSignerResponse(response ExternalSignerResponseV1) ([]byte, error)
func VerifyExternalSignerResponse ¶
func VerifyExternalSignerResponse( request ExternalSignerRequestV1, response ExternalSignerResponseV1, publicKey ed25519.PublicKey, ) ([]byte, error)
Types ¶
type ConfigV1 ¶
type ConfigV1 struct {
SchemaVersion string `json:"schema_version"`
SourceID string `json:"source_id"`
Channel string `json:"channel"`
SourceType string `json:"source_type"`
SourceClass string `json:"source_class"`
GeneratedAt string `json:"generated_at"`
ExpiresAt string `json:"expires_at"`
Root PublicKeyV1 `json:"root"`
Signing PublicKeyV1 `json:"signing"`
SigningLedger SigningLedgerConfigV1 `json:"signing_ledger"`
AllowedArtifactHosts []string `json:"allowed_artifact_hosts"`
MinReDevPluginVersion string `json:"min_redevplugin_version"`
Distribution string `json:"distribution"`
HostRequirements []releasecontract.ReleaseHostRequirement `json:"host_requirements"`
}
func DecodeConfig ¶
type ExternalSignerRequestV1 ¶
type ExternalSignerRequestV1 struct {
SchemaVersion string `json:"schema_version"`
RequestID string `json:"request_id"`
Usage releasecontract.SigningUsage `json:"usage"`
KeyID string `json:"key_id"`
Subject releasecontract.SigningSubjectV1 `json:"subject"`
SubjectIdentitySHA256 string `json:"subject_identity_sha256"`
SigningPreimageSHA256 string `json:"signing_preimage_sha256"`
}
ExternalSignerRequestV1 contains only public signing inputs. It deliberately carries no signer invocation, credential, storage, account, or lookup data.
func DecodeExternalSignerRequest ¶
func DecodeExternalSignerRequest(raw []byte) (ExternalSignerRequestV1, error)
func NewExternalSignerRequest ¶
func NewExternalSignerRequest( usage releasecontract.SigningUsage, keyID string, subject releasecontract.SigningSubjectV1, signingPreimage []byte, ) (ExternalSignerRequestV1, error)
type ExternalSignerResponseV1 ¶
type ExternalSignerResponseV1 struct {
SchemaVersion string `json:"schema_version"`
RequestID string `json:"request_id"`
Usage releasecontract.SigningUsage `json:"usage"`
KeyID string `json:"key_id"`
SubjectIdentitySHA256 string `json:"subject_identity_sha256"`
SigningPreimageSHA256 string `json:"signing_preimage_sha256"`
Algorithm string `json:"algorithm"`
Signature string `json:"signature"`
}
ExternalSignerResponseV1 is the minimal public result accepted from an external Ed25519 signer.
func DecodeExternalSignerResponse ¶
func DecodeExternalSignerResponse(raw []byte) (ExternalSignerResponseV1, error)
type PackageHashSetV1 ¶
type PluginReleaseRefV1 ¶
type PluginReleaseRefV1 struct {
SourceID string `json:"source_id"`
Channel string `json:"channel"`
ReleaseMetadataRef string `json:"release_metadata_ref"`
ReleaseMetadataSHA256 string `json:"release_metadata_sha256"`
PublisherID string `json:"publisher_id"`
PluginID string `json:"plugin_id"`
Version string `json:"version"`
ExpectedHashes PackageHashSetV1 `json:"expected_hashes"`
}
type PublicKeyV1 ¶
type PublishedFileV1 ¶
type PublisherReleaseRefV1 ¶
type PublisherReleaseRefV1 struct {
SchemaVersion string `json:"schema_version"`
ReleaseRef PluginReleaseRefV1 `json:"release_ref"`
Root PublicKeyV1 `json:"root"`
SigningLedger SigningLedgerConfigV1 `json:"signing_ledger"`
Files []PublishedFileV1 `json:"files"`
}
type SigningLedgerConfigV1 ¶
type SigningLedgerConfigV1 struct {
LogID string `json:"log_id"`
PublicKeyV1
}
type WorkspaceStatusV1 ¶
type WorkspaceStatusV1 struct {
OK bool `json:"ok"`
Phase string `json:"phase"`
PendingRequests int `json:"pending_requests"`
Workspace string `json:"workspace"`
Output string `json:"output,omitempty"`
}
func ApplySignature ¶
Click to show internal directories.
Click to hide internal directories.