code: func ParsePrivateKeyPEMWithPassword(pemBytes, password []byte) (crypto.Signer, error) {
  	block, _ := pem.Decode(pemBytes)
  	if block == nil {
  		return nil, errors.New("invalid pem file")
  	}
  
  	var (
  		der []byte
  		err error
  	)
  	der = block.Bytes
  
  	if ok := IsEncryptedPEMBlock(block); ok {
  		der, err = DecryptPEMBlock(block, password)
  		if err != nil {
  			return nil, err
  		}
  	}
  
  	return derhelpers.ParsePrivateKeyDER(der)
  }
docs: // ParsePrivateKeyPEMWithPassword parses an encrypted or a decrypted PKCS#8 PEM to crypto.signer