Documentation ¶
Index ¶
- Constants
- Variables
- type AlgorithmID
- type Canonicalizer
- func MakeC14N10ExclusiveCanonicalizerWithPrefixList(prefixList string) Canonicalizer
- func MakeC14N10ExclusiveWithCommentsCanonicalizerWithPrefixList(prefixList string) Canonicalizer
- func MakeC14N10RecCanonicalizer() Canonicalizer
- func MakeC14N10WithCommentsCanonicalizer() Canonicalizer
- func MakeC14N11Canonicalizer() Canonicalizer
- func MakeC14N11WithCommentsCanonicalizer() Canonicalizer
- func MakeNullCanonicalizer() Canonicalizer
- type CertificateVerifier
- type Clock
- type CryptoSigner
- type MemoryX509CertificateStore
- type MemoryX509KeyStore
- type MemoryX509Signer
- type NullCanonicalizer
- type SigningContext
- func (ctx *SigningContext) AddManifestRef(sig *etree.Element, name string, hash_id crypto.Hash, digest []byte) error
- func (ctx *SigningContext) ConstructSignature(el *etree.Element, enveloped bool) (*etree.Element, error)
- func (ctx *SigningContext) CreateSignature(id string) *etree.Element
- func (ctx *SigningContext) GetDigestAlgorithmIdentifier() string
- func (ctx *SigningContext) GetSignatureMethodIdentifier() string
- func (ctx *SigningContext) SetSignatureMethod(algorithmID string) error
- func (ctx *SigningContext) SignEnveloped(el *etree.Element) (*etree.Element, error)
- func (ctx *SigningContext) SignManifest(sig *etree.Element) (*etree.Element, error)
- func (ctx *SigningContext) SignString(content string) ([]byte, error)
- type TLSCertKeyStore
- type ValidationContext
- func (ctx *ValidationContext) DecodeRef(ref *types.Reference) (crypto.Hash, []byte, error)
- func (ctx *ValidationContext) Validate(el *etree.Element) (*etree.Element, error)
- func (ctx *ValidationContext) ValidateManifest(el *etree.Element) (*types.Manifest, error)
- func (ctx *ValidationContext) VerifyReference(ref *types.Reference, data []byte) error
- type X509CertificateStore
- type X509ChainStore
- type X509KeyStore
Constants ¶
const ( DefaultPrefix = "ds" Namespace = "http://www.w3.org/2000/09/xmldsig#" )
const ( SignatureTag = "Signature" SignedInfoTag = "SignedInfo" CanonicalizationMethodTag = "CanonicalizationMethod" SignatureMethodTag = "SignatureMethod" ReferenceTag = "Reference" TransformsTag = "Transforms" TransformTag = "Transform" DigestMethodTag = "DigestMethod" DigestValueTag = "DigestValue" SignatureValueTag = "SignatureValue" KeyInfoTag = "KeyInfo" X509DataTag = "X509Data" X509CertificateTag = "X509Certificate" InclusiveNamespacesTag = "InclusiveNamespaces" ObjectTag = "Object" ManifestTag = "Manifest" )
Tags
const ( AlgorithmAttr = "Algorithm" TypeAttr = "Type" URIAttr = "URI" DefaultIdAttr = "ID" PrefixListAttr = "PrefixList" ManifestPrefix = "Package" )
const ( RSASHA1SignatureMethod = "http://www.w3.org/2000/09/xmldsig#rsa-sha1" RSASHA256SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" RSASHA384SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384" RSASHA512SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512" ECDSASHA1SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1" ECDSASHA256SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256" ECDSASHA384SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha384" ECDSASHA512SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512" )
const (
ManifestRefType = "http://www.w3.org/2000/09/xmldsig#Manifest"
)
Variables ¶
var ( ErrNotSigner = fmt.Errorf("private key does not implement crypto.Signer") ErrNonRSAKey = fmt.Errorf("private key was not RSA") ErrMissingCertificates = fmt.Errorf("no public certificates provided") )
Well-known errors
var ( // ErrMissingSignature indicates that no enveloped signature was found referencing // the top level element passed for signature verification. ErrMissingSignature = errors.New("missing signature referencing the top-level element") ErrUnsupportedMethod = errors.New("dsig: unsupported algorithm") ErrInvalidSignature = errors.New("dsig: invalid signature") ErrBadCertificate = errors.New("dsig: bad certificate") ErrInvalidDigest = errors.New("dsig: digest was broken") )
Functions ¶
This section is empty.
Types ¶
type AlgorithmID ¶
type AlgorithmID string
const ( // Supported canonicalization algorithms CanonicalXML10ExclusiveAlgorithmId AlgorithmID = "http://www.w3.org/2001/10/xml-exc-c14n#" CanonicalXML10ExclusiveWithCommentsAlgorithmId AlgorithmID = "http://www.w3.org/2001/10/xml-exc-c14n#WithComments" CanonicalXML11AlgorithmId AlgorithmID = "http://www.w3.org/2006/12/xml-c14n11" CanonicalXML11WithCommentsAlgorithmId AlgorithmID = "http://www.w3.org/2006/12/xml-c14n11#WithComments" CanonicalXML10RecAlgorithmId AlgorithmID = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315" CanonicalXML10WithCommentsAlgorithmId AlgorithmID = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" EnvelopedSignatureAltorithmId AlgorithmID = "http://www.w3.org/2000/09/xmldsig#enveloped-signature" )
Well-known signature algorithms
func (AlgorithmID) String ¶
func (id AlgorithmID) String() string
type Canonicalizer ¶
type Canonicalizer interface { Canonicalize(el *etree.Element) ([]byte, error) Algorithm() AlgorithmID }
Canonicalizer is an implementation of a canonicalization algorithm.
func MakeC14N10ExclusiveCanonicalizerWithPrefixList ¶
func MakeC14N10ExclusiveCanonicalizerWithPrefixList(prefixList string) Canonicalizer
MakeC14N10ExclusiveCanonicalizerWithPrefixList constructs an exclusive Canonicalizer from a PrefixList in NMTOKENS format (a white space separated list).
func MakeC14N10ExclusiveWithCommentsCanonicalizerWithPrefixList ¶
func MakeC14N10ExclusiveWithCommentsCanonicalizerWithPrefixList(prefixList string) Canonicalizer
MakeC14N10ExclusiveWithCommentsCanonicalizerWithPrefixList constructs an exclusive Canonicalizer from a PrefixList in NMTOKENS format (a white space separated list).
func MakeC14N10RecCanonicalizer ¶
func MakeC14N10RecCanonicalizer() Canonicalizer
MakeC14N10RecCanonicalizer constructs an inclusive canonicalizer.
func MakeC14N10WithCommentsCanonicalizer ¶
func MakeC14N10WithCommentsCanonicalizer() Canonicalizer
MakeC14N10WithCommentsCanonicalizer constructs an inclusive canonicalizer.
func MakeC14N11Canonicalizer ¶
func MakeC14N11Canonicalizer() Canonicalizer
MakeC14N11Canonicalizer constructs an inclusive canonicalizer.
func MakeC14N11WithCommentsCanonicalizer ¶
func MakeC14N11WithCommentsCanonicalizer() Canonicalizer
MakeC14N11WithCommentsCanonicalizer constructs an inclusive canonicalizer.
func MakeNullCanonicalizer ¶
func MakeNullCanonicalizer() Canonicalizer
type CertificateVerifier ¶ added in v1.4.1
type CertificateVerifier interface {
VerifyKeyChain(x509data [][]byte) (*x509.Certificate, error)
}
type Clock ¶
type Clock struct {
// contains filtered or unexported fields
}
Clock wraps a clockwork.Clock (which could be real or fake) in order to default to a real clock when a nil *Clock is used. In other words, if you attempt to use a nil *Clock it will defer to the real system clock. This allows Clock to be easily added to structs with methods that currently reference the time package, without requiring every instantiation of that struct to be updated.
func NewFakeClock ¶
func NewFakeClockAt ¶
func NewRealClock ¶
func NewRealClock() *Clock
type CryptoSigner ¶ added in v1.4.0
type MemoryX509CertificateStore ¶
type MemoryX509CertificateStore struct {
Roots []*x509.Certificate
}
func (*MemoryX509CertificateStore) Certificates ¶
func (mX509cs *MemoryX509CertificateStore) Certificates() ([]*x509.Certificate, error)
type MemoryX509KeyStore ¶
type MemoryX509KeyStore struct {
// contains filtered or unexported fields
}
func (*MemoryX509KeyStore) GetKeyPair ¶
func (ks *MemoryX509KeyStore) GetKeyPair() (*rsa.PrivateKey, []byte, error)
type MemoryX509Signer ¶ added in v1.4.0
type MemoryX509Signer struct {
// contains filtered or unexported fields
}
func (*MemoryX509Signer) GetChain ¶ added in v1.4.0
func (ms *MemoryX509Signer) GetChain() ([][]byte, error)
func (*MemoryX509Signer) GetKeyPair ¶ added in v1.4.0
func (ms *MemoryX509Signer) GetKeyPair() (*rsa.PrivateKey, []byte, error)
type NullCanonicalizer ¶
type NullCanonicalizer struct { }
func (*NullCanonicalizer) Algorithm ¶
func (c *NullCanonicalizer) Algorithm() AlgorithmID
func (*NullCanonicalizer) Canonicalize ¶
func (c *NullCanonicalizer) Canonicalize(el *etree.Element) ([]byte, error)
type SigningContext ¶
type SigningContext struct { Hash crypto.Hash KeyStore X509KeyStore IdAttribute string Prefix string Canonicalizer Canonicalizer }
func NewDefaultSigningContext ¶
func NewDefaultSigningContext(ks X509KeyStore) *SigningContext
func (*SigningContext) AddManifestRef ¶
func (*SigningContext) ConstructSignature ¶
func (*SigningContext) CreateSignature ¶
func (ctx *SigningContext) CreateSignature(id string) *etree.Element
func (*SigningContext) GetDigestAlgorithmIdentifier ¶
func (ctx *SigningContext) GetDigestAlgorithmIdentifier() string
func (*SigningContext) GetSignatureMethodIdentifier ¶
func (ctx *SigningContext) GetSignatureMethodIdentifier() string
func (*SigningContext) SetSignatureMethod ¶
func (ctx *SigningContext) SetSignatureMethod(algorithmID string) error
func (*SigningContext) SignEnveloped ¶
func (*SigningContext) SignManifest ¶ added in v1.4.0
func (*SigningContext) SignString ¶
func (ctx *SigningContext) SignString(content string) ([]byte, error)
Useful for signing query string (including DEFLATED AuthnRequest) when using HTTP-Redirect to make a signed request. See 3.4.4.1 DEFLATE Encoding of https://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf
type TLSCertKeyStore ¶
type TLSCertKeyStore tls.Certificate
TLSCertKeyStore wraps the stdlib tls.Certificate to return its contained key and certs.
func (TLSCertKeyStore) GetChain ¶
func (d TLSCertKeyStore) GetChain() ([][]byte, error)
GetChain impliments X509ChainStore using the underlying tls.Certificate
func (TLSCertKeyStore) GetKeyPair ¶
func (d TLSCertKeyStore) GetKeyPair() (*rsa.PrivateKey, []byte, error)
GetKeyPair implements X509KeyStore using the underlying tls.Certificate
type ValidationContext ¶
type ValidationContext struct { CertificateStore X509CertificateStore IdAttribute string Clock *Clock }
func NewDefaultValidationContext ¶
func NewDefaultValidationContext(certificateStore X509CertificateStore) *ValidationContext
func (*ValidationContext) Validate ¶
Validate verifies that the passed element contains a valid enveloped signature matching a currently-valid certificate in the context's CertificateStore.
func (*ValidationContext) ValidateManifest ¶
Validate verifies that the passed element contains a valid signatures matching a currently-valid certificate in the context's CertificateStore.
func (*ValidationContext) VerifyReference ¶
func (ctx *ValidationContext) VerifyReference(ref *types.Reference, data []byte) error
Caclculate and compare digest of referenced element
type X509CertificateStore ¶
type X509CertificateStore interface {
Certificates() (roots []*x509.Certificate, err error)
}
type X509ChainStore ¶
type X509KeyStore ¶
type X509KeyStore interface {
GetKeyPair() (privateKey *rsa.PrivateKey, cert []byte, err error)
}
func RandomKeyStoreByType ¶ added in v1.4.0
func RandomKeyStoreByType(algorithmID string) X509KeyStore
func RandomKeyStoreForTest ¶
func RandomKeyStoreForTest() X509KeyStore