github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/crypto/x509/pem_decrypt.go (about)

     1  // Copyright 2012 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  package x509
     6  
     7  import (
     8  	"github.com/shogo82148/std/encoding/pem"
     9  	"github.com/shogo82148/std/errors"
    10  	"github.com/shogo82148/std/io"
    11  )
    12  
    13  type PEMCipher int
    14  
    15  // EncryptPEMBlock暗号化アルゴリズムの可能な値。
    16  const (
    17  	_ PEMCipher = iota
    18  	PEMCipherDES
    19  	PEMCipher3DES
    20  	PEMCipherAES128
    21  	PEMCipherAES192
    22  	PEMCipherAES256
    23  )
    24  
    25  // IsEncryptedPEMBlockは、PEMブロックがRFC 1423に従ってパスワードで暗号化されているかどうかを返します。
    26  //
    27  // Deprecated: RFC 1423で指定されている従来のPEM暗号化は、設計上の問題により安全ではありません。この方法では、暗号文を認証しないため、パディングオラクル攻撃に対して脆弱であり、攻撃者に平文を復元させる可能性があります。
    28  func IsEncryptedPEMBlock(b *pem.Block) bool
    29  
    30  // IncorrectPasswordError は、不正なパスワードが検出された場合に返されます。
    31  var IncorrectPasswordError = errors.New("x509: decryption password incorrect")
    32  
    33  // DecryptPEMBlockは、RFC 1423に従って暗号化されたPEMブロックと、それを暗号化するために使用されたパスワードを受け取り、復号化されたDER形式のバイトのスライスを返します。復号化に使用されるアルゴリズムは、DEK-Infoヘッダを調べて決定されます。DEK-Infoヘッダが存在しない場合、エラーが返されます。不正なパスワードが検出された場合、 [IncorrectPasswordError] が返されます。フォーマットの不備のため、常に不正なパスワードを検出することはできません。これらの場合、エラーは返されませんが、復号化されたDERバイトはランダムなノイズになります。
    34  //
    35  // Deprecated: RFC 1423で指定されたレガシーなPEM暗号化はセキュリティの設計上の問題があります。暗号文を認証しないため、パディングオラクル攻撃に対して脆弱であり、攻撃者が平文を回復することができます。
    36  func DecryptPEMBlock(b *pem.Block, password []byte) ([]byte, error)
    37  
    38  // EncryptPEMBlockは、指定されたアルゴリズムとパスワードで暗号化された指定されたDERエンコードされたデータを保持する指定されたタイプのPEMブロックを返します。
    39  //
    40  // 廃止予定: RFC 1423で指定されているレガシーPEM暗号化は、設計上安全ではありません。暗号文を認証しないため、パディングオラクル攻撃に対して脆弱であり、攻撃者が平文を復号化できる可能性があります。
    41  func EncryptPEMBlock(rand io.Reader, blockType string, data, password []byte, alg PEMCipher) (*pem.Block, error)