Files
QSfera/vendor/github.com/opencloud-eu/reva/v2/pkg/signedurl/signedurl.go
T
2025-07-16 10:29:34 +02:00

65 lines
1.4 KiB
Go

// Package signedurl provides interfaces and implementations for signing and verifying URLs.
package signedurl
import (
"time"
)
type Signer interface {
// Sign signs a URL
Sign(url, principal string, ttl time.Duration) (string, error)
}
type Verifier interface {
// Verify verifies a signed URL
Verify(signedURL string) (string, error)
}
type SignedURLError struct {
innerErr error
message string
}
// NewSignedURLError creates a new SignedURLError with the provided inner error and message.
func NewSignedURLError(innerErr error, message string) SignedURLError {
return SignedURLError{
innerErr: innerErr,
message: message,
}
}
var ErrInvalidKey = NewSignedURLError(nil, "invalid key provided")
type SignatureVerificationError struct {
SignedURLError
}
func NewSignatureVerificationError(innerErr error) SignatureVerificationError {
return SignatureVerificationError{
SignedURLError: SignedURLError{
innerErr: innerErr,
message: "signature verification failed",
},
}
}
func (e SignatureVerificationError) Is(tgt error) bool {
// Check if the target error is of type SignatureVerificationError
if _, ok := tgt.(SignatureVerificationError); ok {
return true
}
return false
}
// Error implements the error interface for errorConst.
func (e SignedURLError) Error() string {
if e.innerErr != nil {
return e.message + ": " + e.innerErr.Error()
}
return e.message
}
func (e SignedURLError) Unwrap() error {
return e.innerErr
}