Package x509
import "crypto/x509"
Overview ?
Overview ?
Package x509 parses X.509-encoded keys and certificates.
Index
- Variables
- func CreateCertificate(rand io.Reader, template, parent *Certificate, pub interface{}, priv interface{}) (cert []byte, err error)
- func MarshalPKCS1PrivateKey(key *rsa.PrivateKey) []byte
- func MarshalPKIXPublicKey(pub interface{}) ([]byte, error)
- func ParseCRL(crlBytes []byte) (certList *pkix.CertificateList, err error)
- func ParseCertificates(asn1Data []byte) ([]*Certificate, error)
- func ParseDERCRL(derBytes []byte) (certList *pkix.CertificateList, err error)
- func ParsePKCS1PrivateKey(der []byte) (key *rsa.PrivateKey, err error)
- func ParsePKCS8PrivateKey(der []byte) (key interface{}, err error)
- func ParsePKIXPublicKey(derBytes []byte) (pub interface{}, err error)
- type CertPool
- func NewCertPool() *CertPool
- func (s *CertPool) AddCert(cert *Certificate)
- func (s *CertPool) AppendCertsFromPEM(pemCerts []byte) (ok bool)
- func (s *CertPool) Subjects() (res [][]byte)
- type Certificate
- func ParseCertificate(asn1Data []byte) (*Certificate, error)
- func (c *Certificate) CheckCRLSignature(crl *pkix.CertificateList) (err error)
- func (c *Certificate) CheckSignature(algo SignatureAlgorithm, signed, signature []byte) (err error)
- func (c *Certificate) CheckSignatureFrom(parent *Certificate) (err error)
- func (c *Certificate) CreateCRL(rand io.Reader, priv interface{}, revokedCerts []pkix.RevokedCertificate, now, expiry time.Time) (crlBytes []byte, err error)
- func (c *Certificate) Equal(other *Certificate) bool
- func (c *Certificate) Verify(opts VerifyOptions) (chains [][]*Certificate, err error)
- func (c *Certificate) VerifyHostname(h string) error
- type CertificateInvalidError
- func (e CertificateInvalidError) Error() string
- type ConstraintViolationError
- func (ConstraintViolationError) Error() string
- type ExtKeyUsage
- type HostnameError
- func (h HostnameError) Error() string
- type InvalidReason
- type KeyUsage
- type PublicKeyAlgorithm
- type SignatureAlgorithm
- type UnhandledCriticalExtension
- func (h UnhandledCriticalExtension) Error() string
- type UnknownAuthorityError
- func (e UnknownAuthorityError) Error() string
- type VerifyOptions
Package files
cert_pool.go pkcs1.go pkcs8.go root.go root_unix.go verify.go x509.go
Variables
var ErrUnsupportedAlgorithm = errors.New("crypto/x509: cannot verify signature: algorithm unimplemented")
ErrUnsupportedAlgorithm results from attempting to perform an operation that involves algorithms that are not currently implemented.
func CreateCertificate
func CreateCertificate(rand io.Reader, template, parent *Certificate, pub interface{}, priv interface{}) (cert []byte, err error)
CreateCertificate creates a new certificate based on a template. The following members of template are used: SerialNumber, Subject, NotBefore, NotAfter, KeyUsage, BasicConstraintsValid, IsCA, MaxPathLen, SubjectKeyId, DNSNames, PermittedDNSDomainsCritical, PermittedDNSDomains.
The certificate is signed by parent. If parent is equal to template then the certificate is self-signed. The parameter pub is the public key of the signee and priv is the private key of the signer.
The returned slice is the certificate in DER encoding.
The only supported key type is RSA (*rsa.PublicKey for pub, *rsa.PrivateKey for priv).
func MarshalPKCS1PrivateKey
func MarshalPKCS1PrivateKey(key *rsa.PrivateKey) []byte
MarshalPKCS1PrivateKey converts a private key to ASN.1 DER encoded form.
func MarshalPKIXPublicKey
func MarshalPKIXPublicKey(pub interface{}) ([]byte, error)
MarshalPKIXPublicKey serialises a public key to DER-encoded PKIX format.
func ParseCRL
func ParseCRL(crlBytes []byte) (certList *pkix.CertificateList, err error)
ParseCRL parses a CRL from the given bytes. It's often the case that PEM encoded CRLs will appear where they should be DER encoded, so this function will transparently handle PEM encoding as long as there isn't any leading garbage.
func ParseCertificates
func ParseCertificates(asn1Data []byte) ([]*Certificate, error)
ParseCertificates parses one or more certificates from the given ASN.1 DER data. The certificates must be concatenated with no intermediate padding.
func ParseDERCRL
func ParseDERCRL(derBytes []byte) (certList *pkix.CertificateList, err error)
ParseDERCRL parses a DER encoded CRL from the given bytes.
func ParsePKCS1PrivateKey
func ParsePKCS1PrivateKey(der []byte) (key *rsa.PrivateKey, err error)
ParsePKCS1PrivateKey returns an RSA private key from its ASN.1 PKCS#1 DER encoded form.
func ParsePKCS8PrivateKey
func ParsePKCS8PrivateKey(der []byte) (key interface{}, err error)
ParsePKCS8PrivateKey parses an unencrypted, PKCS#8 private key. See http://www.rsa.com/rsalabs/node.asp?id=2130
func ParsePKIXPublicKey
func ParsePKIXPublicKey(derBytes []byte) (pub interface{}, err error)
ParsePKIXPublicKey parses a DER encoded public key. These values are typically found in PEM blocks with "BEGIN PUBLIC KEY".
type CertPool
type CertPool struct {
// contains filtered or unexported fields
}
CertPool is a set of certificates.
func NewCertPool
func NewCertPool() *CertPool
NewCertPool returns a new, empty CertPool.
func (*CertPool) AddCert
func (s *CertPool) AddCert(cert *Certificate)
AddCert adds a certificate to a pool.
func (*CertPool) AppendCertsFromPEM
func (s *CertPool) AppendCertsFromPEM(pemCerts []byte) (ok bool)
AppendCertsFromPEM attempts to parse a series of PEM encoded certificates. It appends any certificates found to s and returns true if any certificates were successfully parsed.
On many Linux systems, /etc/ssl/cert.pem will contain the system wide set of root CAs in a format suitable for this function.
func (*CertPool) Subjects
func (s *CertPool) Subjects() (res [][]byte)
Subjects returns a list of the DER-encoded subjects of all of the certificates in the pool.
type Certificate
type Certificate struct { Raw []byte // Complete ASN.1 DER content (certificate, signature algorithm and signature). RawTBSCertificate []byte // Certificate part of raw ASN.1 DER content. RawSubjectPublicKeyInfo []byte // DER encoded SubjectPublicKeyInfo. RawSubject []byte // DER encoded Subject RawIssuer []byte // DER encoded Issuer Signature []byte SignatureAlgorithm SignatureAlgorithm PublicKeyAlgorithm PublicKeyAlgorithm PublicKey interface{} Version int SerialNumber *big.Int Issuer pkix.Name Subject pkix.Name NotBefore, NotAfter time.Time // Validity bounds. KeyUsage KeyUsage ExtKeyUsage []ExtKeyUsage // Sequence of extended key usages. UnknownExtKeyUsage []asn1.ObjectIdentifier // Encountered extended key usages unknown to this package. BasicConstraintsValid bool // if true then the next two fields are valid. IsCA bool MaxPathLen int SubjectKeyId []byte AuthorityKeyId []byte // Subject Alternate Name values DNSNames []string EmailAddresses []string // Name constraints PermittedDNSDomainsCritical bool // if true then the name constraints are marked critical. PermittedDNSDomains []string PolicyIdentifiers []asn1.ObjectIdentifier }
A Certificate represents an X.509 certificate.
func ParseCertificate
func ParseCertificate(asn1Data []byte) (*Certificate, error)
ParseCertificate parses a single certificate from the given ASN.1 DER data.
func (*Certificate) CheckCRLSignature
func (c *Certificate) CheckCRLSignature(crl *pkix.CertificateList) (err error)
CheckCRLSignature checks that the signature in crl is from c.
func (*Certificate) CheckSignature
func (c *Certificate) CheckSignature(algo SignatureAlgorithm, signed, signature []byte) (err error)
CheckSignature verifies that signature is a valid signature over signed from c's public key.
func (*Certificate) CheckSignatureFrom
func (c *Certificate) CheckSignatureFrom(parent *Certificate) (err error)
CheckSignatureFrom verifies that the signature on c is a valid signature from parent.
func (*Certificate) CreateCRL
func (c *Certificate) CreateCRL(rand io.Reader, priv interface{}, revokedCerts []pkix.RevokedCertificate, now, expiry time.Time) (crlBytes []byte, err error)
CreateCRL returns a DER encoded CRL, signed by this Certificate, that contains the given list of revoked certificates.
The only supported key type is RSA (*rsa.PrivateKey for priv).
func (*Certificate) Equal
func (c *Certificate) Equal(other *Certificate) bool
func (*Certificate) Verify
func (c *Certificate) Verify(opts VerifyOptions) (chains [][]*Certificate, err error)
Verify attempts to verify c by building one or more chains from c to a certificate in opts.Roots, using certificates in opts.Intermediates if needed. If successful, it returns one or more chains where the first element of the chain is c and the last element is from opts.Roots.
WARNING: this doesn't do any revocation checking.
func (*Certificate) VerifyHostname
func (c *Certificate) VerifyHostname(h string) error
VerifyHostname returns nil if c is a valid certificate for the named host. Otherwise it returns an error describing the mismatch.
type CertificateInvalidError
type CertificateInvalidError struct { Cert *Certificate Reason InvalidReason }
CertificateInvalidError results when an odd error occurs. Users of this library probably want to handle all these errors uniformly.
func (CertificateInvalidError) Error
func (e CertificateInvalidError) Error() string
type ConstraintViolationError
type ConstraintViolationError struct{}
ConstraintViolationError results when a requested usage is not permitted by a certificate. For example: checking a signature when the public key isn't a certificate signing key.
func (ConstraintViolationError) Error
func (ConstraintViolationError) Error() string
type ExtKeyUsage
type ExtKeyUsage int
ExtKeyUsage represents an extended set of actions that are valid for a given key. Each of the ExtKeyUsage* constants define a unique action.
const ( ExtKeyUsageAny ExtKeyUsage = iota ExtKeyUsageServerAuth ExtKeyUsageClientAuth ExtKeyUsageCodeSigning ExtKeyUsageEmailProtection ExtKeyUsageTimeStamping ExtKeyUsageOCSPSigning )
type HostnameError
type HostnameError struct { Certificate *Certificate Host string }
HostnameError results when the set of authorized names doesn't match the requested name.
func (HostnameError) Error
func (h HostnameError) Error() string
type InvalidReason
type InvalidReason int
const ( // NotAuthorizedToSign results when a certificate is signed by another // which isn't marked as a CA certificate. NotAuthorizedToSign InvalidReason = iota // Expired results when a certificate has expired, based on the time // given in the VerifyOptions. Expired // CANotAuthorizedForThisName results when an intermediate or root // certificate has a name constraint which doesn't include the name // being checked. CANotAuthorizedForThisName // TooManyIntermediates results when a path length constraint is // violated. TooManyIntermediates )
type KeyUsage
type KeyUsage int
KeyUsage represents the set of actions that are valid for a given key. It's a bitmap of the KeyUsage* constants.
const ( KeyUsageDigitalSignature KeyUsage = 1 << iota KeyUsageContentCommitment KeyUsageKeyEncipherment KeyUsageDataEncipherment KeyUsageKeyAgreement KeyUsageCertSign KeyUsageCRLSign KeyUsageEncipherOnly KeyUsageDecipherOnly )
type PublicKeyAlgorithm
type PublicKeyAlgorithm int
const ( UnknownPublicKeyAlgorithm PublicKeyAlgorithm = iota RSA DSA )
type SignatureAlgorithm
type SignatureAlgorithm int
const ( UnknownSignatureAlgorithm SignatureAlgorithm = iota MD2WithRSA MD5WithRSA SHA1WithRSA SHA256WithRSA SHA384WithRSA SHA512WithRSA DSAWithSHA1 DSAWithSHA256 )
type UnhandledCriticalExtension
type UnhandledCriticalExtension struct{}
func (UnhandledCriticalExtension) Error
func (h UnhandledCriticalExtension) Error() string
type UnknownAuthorityError
type UnknownAuthorityError struct {
// contains filtered or unexported fields
}
UnknownAuthorityError results when the certificate issuer is unknown
func (UnknownAuthorityError) Error
func (e UnknownAuthorityError) Error() string
type VerifyOptions
type VerifyOptions struct { DNSName string Intermediates *CertPool Roots *CertPool // if nil, the system roots are used CurrentTime time.Time // if zero, the current time is used }
VerifyOptions contains parameters for Certificate.Verify. It's a structure because other PKIX verification APIs have ended up needing many options.
Subdirectories
Name | Synopsis | |
---|---|---|
pkix | Package pkix contains shared, low level structures used for ASN.1 parsing and serialization of X.509 certificates, CRL and OCSP. |
Except as noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code is licensed under a BSD license.
Terms of Service | Privacy Policy