github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/crypto/crypto.go (about) 1 // Copyright 2011 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // パッケージcryptoは一般的な暗号定数を収集します。 6 package crypto 7 8 import ( 9 "github.com/shogo82148/std/hash" 10 "github.com/shogo82148/std/io" 11 ) 12 13 // Hashは別のパッケージで実装されている暗号ハッシュ関数を識別します。 14 type Hash uint 15 16 // HashFunc は単に h の値を返すだけであり、 [Hash] が [SignerOpts] を実装することを保証します。 17 func (h Hash) HashFunc() Hash 18 19 func (h Hash) String() string 20 21 const ( 22 MD4 Hash = 1 + iota 23 MD5 24 SHA1 25 SHA224 26 SHA256 27 SHA384 28 SHA512 29 MD5SHA1 30 RIPEMD160 31 SHA3_224 32 SHA3_256 33 SHA3_384 34 SHA3_512 35 SHA512_224 36 SHA512_256 37 BLAKE2s_256 38 BLAKE2b_256 39 BLAKE2b_384 40 BLAKE2b_512 41 ) 42 43 // Sizeは与えられたハッシュ関数から生成されるダイジェストの長さ(バイト単位)を返します。 44 // この関数は、対象のハッシュ関数がプログラムにリンクされている必要はありません。 45 func (h Hash) Size() int 46 47 // Newは指定されたハッシュ関数を計算する新しいhash.Hashを返します。ハッシュ関数がバイナリにリンクされていない場合、Newはパニックを発生させます。 48 func (h Hash) New() hash.Hash 49 50 // Availableは、与えられたハッシュ関数がバイナリにリンクされているかどうかを示します。 51 func (h Hash) Available() bool 52 53 // RegisterHash は与えられたハッシュ関数の新しいインスタンスを返す関数を登録します。 54 // これはハッシュ関数を実装するパッケージの init 関数から呼び出されることを意図しています。 55 func RegisterHash(h Hash, f func() hash.Hash) 56 57 // PublicKeyは未指定のアルゴリズムを使用して公開鍵を表します。 58 // 59 // このタイプは、後方互換性のための空のインターフェースですが、 60 // 標準ライブラリのすべての公開鍵タイプは、以下のインターフェースを実装しています。 61 // 62 // interface{ 63 // Equal(x crypto.PublicKey) bool 64 // } 65 // 66 // アプリケーション内での型安全性向上のために使用することができます。 67 type PublicKey any 68 69 // PrivateKeyは不特定のアルゴリズムを使用して秘密鍵を表します。 70 // 71 // この型は、後方互換性のために空のインターフェースとして定義されていますが、 72 // 標準ライブラリのすべての秘密鍵タイプは以下のインターフェースを実装します。 73 // 74 // interface{ 75 // Public() crypto.PublicKey 76 // Equal(x crypto.PrivateKey) bool 77 // } 78 // 79 // また、 [Signer] や [Decrypter] などの特定の目的のインターフェースも実装しており、 80 // アプリケーション内で型の安全性を向上させるために使用できます。 81 type PrivateKey any 82 83 // Signerは、署名操作に使用される不透明な秘密鍵のインターフェースです。たとえば、ハードウェアモジュールに保存されているRSA鍵などがあります。 84 type Signer interface { 85 Public() PublicKey 86 87 Sign(rand io.Reader, digest []byte, opts SignerOpts) (signature []byte, err error) 88 } 89 90 // SignerOptsは [Signer] での署名に対するオプションを含んでいます。 91 type SignerOpts interface { 92 HashFunc() Hash 93 } 94 95 // Decrypterは、非対称復号化操作に使用できる不透明な秘密鍵のインターフェースです。例えば、ハードウェアモジュールに保管されるRSA鍵があります。 96 type Decrypter interface { 97 Public() PublicKey 98 99 Decrypt(rand io.Reader, msg []byte, opts DecrypterOpts) (plaintext []byte, err error) 100 } 101 102 type DecrypterOpts any