import "crypto/x509"

ITU-T勧告X.509エンコードの鍵と証明書を解析します。

パッケージファイル

x509.go

CreateCertificate関数

func CreateCertificate(rand io.Reader, template, parent *Certificate, pub *rsa.PublicKey, priv *rsa.PrivateKey) (cert []byte, err os.Error)

CreateSelfSignedCertificateは、テンプレートをベースに新しい証明書を作成します。テンプレートの以下のメンバーが使われます:SerialNumber, Subject, NotBefore, NotAfter, KeyUsage, BasicConstraintsValid, IsCA, MaxPathLen, SubjectKeyId, DNSNames

証明書は、parentによって署名されます。parentとテンプレートが同一のとき証明書は自己署名されます。パラメータpubは、署名者の公開鍵、privは、署名者の秘密鍵です。

返されるスライスは、DER符号化された証明書です。

MarshalPKCS1PrivateKey関数

func MarshalPKCS1PrivateKey(key *rsa.PrivateKey) []byte

MarshalPKCS1PrivateKeyは、秘密鍵をASN.1 DERエンコード形式に変換します。

ParseCertificates関数

func ParseCertificates(asn1Data []byte) ([]*Certificate, os.Error)

ParseCertificatesは、与えられたASN.1 DERデータから一つ以上の証明書を解析します。証明書は間にパディングなしで連結されていなければなりません。

ParsePKCS1PrivateKey関数

func ParsePKCS1PrivateKey(der []byte) (key *rsa.PrivateKey, err os.Error)

ParsePKCS1PrivateKeyは、ASN.1 PKCS#1 DER形式内のRSA秘密鍵を返します。

Certificate型

Certificateは、X.509 証明書を表します。

type Certificate struct {
    Raw                []byte // ASN.1 DER形式の生データ。
    Signature          []byte
    SignatureAlgorithm SignatureAlgorithm

    PublicKeyAlgorithm PublicKeyAlgorithm
    PublicKey          interface{}

    Version             int
    SerialNumber        []byte
    Issuer              Name
    Subject             Name
    NotBefore, NotAfter *time.Time // 有効期間。
    KeyUsage            KeyUsage

    BasicConstraintsValid bool // trueのとき次の2フィールドは、有効である。
    IsCA                  bool
    MaxPathLen            int

    SubjectKeyId   []byte
    AuthorityKeyId []byte

    // サブジェクトの別名の値
    DNSNames       []string
    EmailAddresses []string

    PolicyIdentifiers []asn1.ObjectIdentifier
}

ParseCertificate関数

func ParseCertificate(asn1Data []byte) (*Certificate, os.Error)

ParseCertificateは、与えられたASN.1 DERデータから証明書をひとつ解析します。

(*Certificate) CheckSignatureFrom関数

func (c *Certificate) CheckSignatureFrom(parent *Certificate) (err os.Error)

CheckSignatureFromは、cの署名がparentからの有効な署名であることを確認します。

(*Certificate) VerifyHostname関数

func (c *Certificate) VerifyHostname(h string) os.Error

VerifyHostnameは、cがホスト名に対して有効な証明書であればnilを返します。有効でなければ、不一致を表したos.Errorを返します。

ConstraintViolationError型

ConstraintViolationErrorは、要求した使い方が証明書で許されていないときに発生します。例:証明書に署名できない公開鍵で、署名を確認しようとすると発生します。

type ConstraintViolationError struct{}

(ConstraintViolationError) String関数

func (ConstraintViolationError) String() string

HostnameError型

type HostnameError struct {
    Certificate *Certificate
    Host        string
}

(*HostnameError) String関数

func (h *HostnameError) String() string

KeyUsage型

KeyUsageは、与えられたキーに有効なアクションのセットを表します。これはKeyUsage*定数のビットマップです。

type KeyUsage int
const (
    KeyUsageDigitalSignature KeyUsage = 1 << iota
    KeyUsageContentCommitment
    KeyUsageKeyEncipherment
    KeyUsageDataEncipherment
    KeyUsageKeyAgreement
    KeyUsageCertSign
    KeyUsageCRLSign
    KeyUsageEncipherOnly
    KeyUsageDecipherOnly
)

Name型

Nameは、X.509識別名(DN)を表します。

これはDNの一般的な要素だけを含んでいます。それ以外の要素は無視されます。

type Name struct {
    Country, Organization, OrganizationalUnit []string
    Locality, Province                        []string
    StreetAddress, PostalCode                 []string
    SerialNumber, CommonName                  string
}

PublicKeyAlgorithm型

type PublicKeyAlgorithm int
const (
    UnknownPublicKeyAlgorithm PublicKeyAlgorithm = iota
    RSA
)

SignatureAlgorithm型

type SignatureAlgorithm int
const (
    UnknownSignatureAlgorithm SignatureAlgorithm = iota
    MD2WithRSA
    MD5WithRSA
    SHA1WithRSA
    SHA256WithRSA
    SHA384WithRSA
    SHA512WithRSA
)

UnhandledCriticalExtension型

type UnhandledCriticalExtension struct{}

(UnhandledCriticalExtension) String関数

func (h UnhandledCriticalExtension) String() string

UnsupportedAlgorithmError型

UnsupportedAlgorithmErrorは、現在実装されていないアルゴリズムを使った操作を実行しようとしたときに発生します。

type UnsupportedAlgorithmError struct{}

(UnsupportedAlgorithmError) String関数

func (UnsupportedAlgorithmError) String() string