import "crypto/tls"

このパッケージは、RFC 4346として定義されているTLS 1.1プロトコルの一部を実装しています。

パッケージファイル

alert.go ca_set.go common.go conn.go handshake_client.go handshake_messages.go handshake_server.go prf.go tls.go

定数

TLS(Transport Layer Security)暗号プログラム。

const (
    TLS_RSA_WITH_RC4_128_SHA uint16 = 5
)

func Dial

func Dial(network, laddr, raddr string) (net.Conn, os.Error)

func Listen

func Listen(network, laddr string, config *Config) (net.Listener, os.Error)

CASet型

CASetは証明書のセットです。

type CASet struct {
    // contains unexported fields
}

NewCASet関数

func NewCASet() *CASet

(*CASet) FindParent関数

func (s *CASet) FindParent(cert *x509.Certificate) (parent *x509.Certificate)

FindParentは、与えられた証明書に対して署名を行った証明書をsの中から検索します。該当する親証明書が存在しないときはnilを返します。

(*CASet) SetFromPEM関数

func (s *CASet) SetFromPEM(pemCerts []byte) (ok bool)

SetFromPEMは、PEMエンコードされたルート証明書の一連の解析を行います。全証明書の解析に成功したときは、見つけた全証明書をsに追加したのちtrueを返します。多くのLinuxシステム上の/etc/ssl/cert.pemには、システムワイドなルートCAの情報がこの関数に適したフォーマットで含まれています。

Certificate型

type Certificate struct {
    Certificate [][]byte
    PrivateKey  *rsa.PrivateKey
}

LoadX509KeyPair関数

func LoadX509KeyPair(certFile string, keyFile string) (cert Certificate, err os.Error)

LoadX509KeyPair

Config型

Confing構造体は、TLSクライアントまたはサーバーを設定するのに用いられます。TLS関数に受渡した後は、値を変更してはいけません。

type Config struct {
    // Randは、エントロピーのソースとして、noncesとRSA blindingに使用されます。
    Rand io.Reader
    // Timeは、カレントの時間をエポック秒で返します。
    Time         func() int64
    Certificates []Certificate
    RootCAs      *CASet
    // NextProtosは、サポートしているアプリケーションレベルのプロトコルリストです。
    // 今のところ、サーバ側におけるハンドリングのみサポートしています。
    NextProtos []string
    // ServerNameは、仮想ホストをサポートするため、クライアントのハンドシェークに
    // インクルードされている
    ServerName string
}

Conn型

Connはセキュアな接続を表わします。この型は、net.Connインタフェースを実装しています。

type Conn struct {
    // contains unexported fields
}

Client関数

func Client(conn net.Conn, config *Config) *Conn

Server関数

func Server(conn net.Conn, config *Config) *Conn

(*Conn) Close関数

func (c *Conn) Close() os.Error

(*Conn) ConnectionState関数

func (c *Conn) ConnectionState() ConnectionState

ConnectionStateは、コネクションについてのbasic TLS の詳細を返します。

(*Conn) Handshake関数

func (c *Conn) Handshake() os.Error

Handshakeは、クライアントまたはサーバのハンドシェイクプロトコルが、まだ実行されていなければ実行します。このパッケージを利用するほとんどの場合、明示的にハンドシェイクを行う必要はありません。これは最初にReadまたはWriteを呼び出したときに自動的に行われるためです。

(*Conn) LocalAddr関数

func (c *Conn) LocalAddr() net.Addr

LocalAddrは、ローカルのネットワークアドレスを返します。

(*Conn) OCSPResponse関数

func (c *Conn) OCSPResponse() []byte

OCSPResponseは、可能であれば、TLSサーバからのStapled OCSPレスポンスを返します。(クライアント接続でのみ有効)

(*Conn) PeerCertificates関数

func (c *Conn) PeerCertificates() []*x509.Certificate

PeerCertificatesは、相手から提示された証明書チェーンを返します。

(*Conn) Read関数

func (c *Conn) Read(b []byte) (n int, err os.Error)

Readは、一定時間経過したときにタイムアウトとなり、err == os.EAGAINを返します。SetTimeoutとSetReadTimeoutを参照ください。

(*Conn) RemoteAddr関数

func (c *Conn) RemoteAddr() net.Addr

RemoteAddrは、リモートのネットワークアドレスを返します。

(*Conn) SetReadTimeout関数

func (c *Conn) SetReadTimeout(nsec int64) os.Error

SetReadTimeoutは、Readがos.EAGAINを返すまでのデータを待つ時間(ナノ秒)を設定します。nsecに0(デフォルト)を設定すると期限が無効になります。

(*Conn) SetTimeout関数

func (c *Conn) SetTimeout(nsec int64) os.Error

SetTimeoutは、接続の読み込み期限を設定します。書き込み期限はありません。

(*Conn) SetWriteTimeout関数

func (c *Conn) SetWriteTimeout(nsec int64) os.Error

SetWriteTimeoutは、net.Connインタフェースを満たすために存在しますが、TLSには実装されていません。この関数は常にエラーを返します。

(*Conn) Write関数

func (c *Conn) Write(b []byte) (n int, err os.Error)

Write は、接続にデータを書き込みます。

ConnectionState型

type ConnectionState struct {
    HandshakeComplete  bool
    CipherSuite        uint16
    NegotiatedProtocol string
}

Listener型

type Listener struct {
    // contains unexported fields
}

NewListener関数

func NewListener(listener net.Listener, config *Config) (l *Listener)

NewListenerは、内部のリスナーから接続を受け付けるためのリスナーを作成し、サーバとの各接続をラップします。設定configは、nilであってはならず、ひとつ以上の証明書が含まれていなければなりません。

(*Listener) Accept関数

func (l *Listener) Accept() (c net.Conn, err os.Error)

(*Listener) Addr関数

func (l *Listener) Addr() net.Addr

(*Listener) Close関数

func (l *Listener) Close() os.Error

仮想ホストをサポートするため、クライアントのハンドシェークにインクルードされている