first commit

This commit is contained in:
ISPr24-401 2025-11-18 13:48:53 +04:00
commit 4d6378e77f
358 changed files with 410091 additions and 0 deletions

BIN
.vs/Musical/v17/.suo Normal file

Binary file not shown.

18
App.config Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

22
Class1.cs Normal file
View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Musical
{
using MySql.Data.MySqlClient;
public static class DatabaseConnection
{
public static string ConnectionString = "Server=192.168.201.207;Database=ISP41_Gusarov_Music;Uid=ISP41_Gusarov;Pwd=ISP41_Gusarov;";
public static MySqlConnection GetConnection()
{
return new MySqlConnection(ConnectionString);
}
}
}

23
DatabaseConnection.cs Normal file
View File

@ -0,0 +1,23 @@
using Musical;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MusicStoreLogin
{
internal static class DatabaseConnection
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1()); // Замените Form2 на вашу главную форму
}
}
}

View File

@ -0,0 +1,6 @@
namespace Musical
{
public static class DatabaseConnectionBase
{
}
}

95
Form1.Designer.cs generated Normal file
View File

@ -0,0 +1,95 @@
namespace Musical
{
partial class Form1
{
/// <summary>
/// Обязательная переменная конструктора.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Код, автоматически созданный конструктором форм Windows
/// <summary>
/// Требуемый метод для поддержки конструктора — не изменяйте
/// содержимое этого метода с помощью редактора кода.
/// </summary>
private void InitializeComponent()
{
this.txtUsername = new System.Windows.Forms.TextBox();
this.txtPassword = new System.Windows.Forms.TextBox();
this.btnLogin = new System.Windows.Forms.Button();
this.lblError = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// txtUsername
//
this.txtUsername.Location = new System.Drawing.Point(190, 109);
this.txtUsername.Name = "txtUsername";
this.txtUsername.Size = new System.Drawing.Size(100, 20);
this.txtUsername.TabIndex = 0;
//
// txtPassword
//
this.txtPassword.Location = new System.Drawing.Point(190, 176);
this.txtPassword.Name = "txtPassword";
this.txtPassword.Size = new System.Drawing.Size(100, 20);
this.txtPassword.TabIndex = 1;
//
// btnLogin
//
this.btnLogin.Location = new System.Drawing.Point(190, 235);
this.btnLogin.Name = "btnLogin";
this.btnLogin.Size = new System.Drawing.Size(75, 23);
this.btnLogin.TabIndex = 2;
this.btnLogin.Text = "button1";
this.btnLogin.UseVisualStyleBackColor = true;
this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click);
//
// lblError
//
this.lblError.AutoSize = true;
this.lblError.Location = new System.Drawing.Point(190, 290);
this.lblError.Name = "lblError";
this.lblError.Size = new System.Drawing.Size(35, 13);
this.lblError.TabIndex = 3;
this.lblError.Text = "label1";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 494);
this.Controls.Add(this.lblError);
this.Controls.Add(this.btnLogin);
this.Controls.Add(this.txtPassword);
this.Controls.Add(this.txtUsername);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox txtUsername;
private System.Windows.Forms.TextBox txtPassword;
private System.Windows.Forms.Button btnLogin;
private System.Windows.Forms.Label lblError;
}
}

75
Form1.cs Normal file
View File

@ -0,0 +1,75 @@
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Musical
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btnLogin_Click(object sender, EventArgs e)
{
using (MySqlConnection conn = new MySqlConnection("Server=192.168.201.207;Database=ISP41_Gusarov_Musical;Uid=ISP41_Gusarov;Pwd=ISP41_Gusarov;"))
{
string Seller_Login = txtUsername.Text;
string Seller_Password = txtPassword.Text;
{
try
{
conn.Open();
// Проверяем, есть ли такой пользователь с таким паролем
string query = "SELECT COUNT(*) FROM Seller WHERE Seller_Login = @username AND Seller_Password = @password";
MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.Parameters.AddWithValue("@username", Seller_Login);
cmd.Parameters.AddWithValue("@password", Seller_Password);
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count > 0)
{
MessageBox.Show("Вход выполнен успешно!");
// Здесь можно открыть следующую форму
// this.Hide();
// MainForm mainForm = new MainForm();
// mainForm.Show();
}
else
{
lblError.Text = "Неверный логин или пароль!";
}
}
catch (Exception ex)
{
lblError.Text = "Ошибка: " + ex.Message;
}
}
}
}
}
}

120
Form1.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

12
Hash.cs Normal file
View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Musical
{
internal class Hash
{
}
}

148
Musical.csproj Normal file
View File

@ -0,0 +1,148 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{19C403F7-1B41-4BE5-BD79-D48682622B6C}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Musical</RootNamespace>
<AssemblyName>Musical</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="BCrypt.Net-Next, Version=4.0.3.0, Culture=neutral, PublicKeyToken=1e11be04b6288443, processorArchitecture=MSIL">
<HintPath>packages\BCrypt.Net-Next.4.0.3\lib\net48\BCrypt.Net-Next.dll</HintPath>
</Reference>
<Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
<HintPath>packages\BouncyCastle.Cryptography.2.6.2\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
</Reference>
<Reference Include="Google.Protobuf, Version=3.32.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<HintPath>packages\Google.Protobuf.3.32.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="K4os.Compression.LZ4, Version=1.3.8.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
<HintPath>packages\K4os.Compression.LZ4.1.3.8\lib\net462\K4os.Compression.LZ4.dll</HintPath>
</Reference>
<Reference Include="K4os.Compression.LZ4.Streams, Version=1.3.8.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
<HintPath>packages\K4os.Compression.LZ4.Streams.1.3.8\lib\net462\K4os.Compression.LZ4.Streams.dll</HintPath>
</Reference>
<Reference Include="K4os.Hash.xxHash, Version=1.0.8.0, Culture=neutral, PublicKeyToken=32cd54395057cec3, processorArchitecture=MSIL">
<HintPath>packages\K4os.Hash.xxHash.1.0.8\lib\net462\K4os.Hash.xxHash.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="MySql.Data, Version=9.5.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>packages\MySql.Data.9.5.0\lib\net48\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Configuration.ConfigurationManager, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Configuration.ConfigurationManager.8.0.0\lib\net462\System.Configuration.ConfigurationManager.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.IO.Pipelines, Version=5.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.IO.Pipelines.5.0.2\lib\net461\System.IO.Pipelines.dll</HintPath>
</Reference>
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="ZstdSharp, Version=0.8.6.0, Culture=neutral, PublicKeyToken=8d151af33a4ad5cf, processorArchitecture=MSIL">
<HintPath>packages\ZstdSharp.Port.0.8.6\lib\net462\ZstdSharp.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.cs" />
<Compile Include="DatabaseConnectionBase.cs" />
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="DatabaseConnection.cs" />
<Compile Include="Hash.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TabControl.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="TabControl.Designer.cs">
<DependentUpon>TabControl.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<EmbeddedResource Include="TabControl.resx">
<DependentUpon>TabControl.cs</DependentUpon>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

25
Musical.sln Normal file
View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34511.84
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Musical", "Musical.csproj", "{19C403F7-1B41-4BE5-BD79-D48682622B6C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{19C403F7-1B41-4BE5-BD79-D48682622B6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{19C403F7-1B41-4BE5-BD79-D48682622B6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{19C403F7-1B41-4BE5-BD79-D48682622B6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{19C403F7-1B41-4BE5-BD79-D48682622B6C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {630AAC43-580C-437B-9D58-030F02616DD2}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Общие сведения об этой сборке предоставляются следующим набором
// набора атрибутов. Измените значения этих атрибутов для изменения сведений,
// связанных со сборкой.
[assembly: AssemblyTitle("Musical")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Musical")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
// COM, следует установить атрибут ComVisible в TRUE для этого типа.
[assembly: ComVisible(false)]
// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
[assembly: Guid("19c403f7-1b41-4be5-bd79-d48682622b6c")]
// Сведения о версии сборки состоят из указанных ниже четырех значений:
//
// Основной номер версии
// Дополнительный номер версии
// Номер сборки
// Редакция
//
// Можно задать все значения или принять номера сборки и редакции по умолчанию
// используя "*", как показано ниже:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

71
Properties/Resources.Designer.cs generated Normal file
View File

@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программным средством.
// Версия среды выполнения: 4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если
// код создан повторно.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Musical.Properties
{
/// <summary>
/// Класс ресурсов со строгим типом для поиска локализованных строк и пр.
/// </summary>
// Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder
// класс с помощью таких средств, как ResGen или Visual Studio.
// Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen
// с параметром /str или заново постройте свой VS-проект.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Возврат кэшированного экземпляра ResourceManager, используемого этим классом.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Musical.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Переопределяет свойство CurrentUICulture текущего потока для всех
/// подстановки ресурсов с помощью этого класса ресурсов со строгим типом.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

117
Properties/Resources.resx Normal file
View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

30
Properties/Settings.Designer.cs generated Normal file
View File

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Musical.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

262
TabControl.Designer.cs generated Normal file
View File

@ -0,0 +1,262 @@
namespace Musical
{
partial class TabControl
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.tabMusicalInstrument = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.buttonEdit3 = new System.Windows.Forms.Button();
this.buttonDelete2 = new System.Windows.Forms.Button();
this.buttonAdd1 = new System.Windows.Forms.Button();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.tabClients = new System.Windows.Forms.TabPage();
this.buttonEdit33 = new System.Windows.Forms.Button();
this.buttonDelete22 = new System.Windows.Forms.Button();
this.buttonAdd11 = new System.Windows.Forms.Button();
this.dataGridView2 = new System.Windows.Forms.DataGridView();
this.tabSellHistory = new System.Windows.Forms.TabPage();
this.buttonEdit43 = new System.Windows.Forms.Button();
this.buttonDelete32 = new System.Windows.Forms.Button();
this.buttonAdd21 = new System.Windows.Forms.Button();
this.dataGridView3 = new System.Windows.Forms.DataGridView();
this.mySqlDataAdapter1 = new MySql.Data.MySqlClient.MySqlDataAdapter();
this.tabMusicalInstrument.SuspendLayout();
this.tabPage1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.tabClients.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit();
this.tabSellHistory.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView3)).BeginInit();
this.SuspendLayout();
//
// tabMusicalInstrument
//
this.tabMusicalInstrument.Controls.Add(this.tabPage1);
this.tabMusicalInstrument.Controls.Add(this.tabClients);
this.tabMusicalInstrument.Controls.Add(this.tabSellHistory);
this.tabMusicalInstrument.Location = new System.Drawing.Point(29, 13);
this.tabMusicalInstrument.Name = "tabMusicalInstrument";
this.tabMusicalInstrument.SelectedIndex = 0;
this.tabMusicalInstrument.Size = new System.Drawing.Size(714, 392);
this.tabMusicalInstrument.TabIndex = 0;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.buttonEdit3);
this.tabPage1.Controls.Add(this.buttonDelete2);
this.tabPage1.Controls.Add(this.buttonAdd1);
this.tabPage1.Controls.Add(this.dataGridView1);
this.tabPage1.Location = new System.Drawing.Point(4, 22);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(706, 366);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "tabMusicalInstrument";
this.tabPage1.UseVisualStyleBackColor = true;
//
// buttonEdit3
//
this.buttonEdit3.Location = new System.Drawing.Point(16, 301);
this.buttonEdit3.Name = "buttonEdit3";
this.buttonEdit3.Size = new System.Drawing.Size(75, 23);
this.buttonEdit3.TabIndex = 3;
this.buttonEdit3.Text = "button3";
this.buttonEdit3.UseVisualStyleBackColor = true;
//
// buttonDelete2
//
this.buttonDelete2.Location = new System.Drawing.Point(16, 262);
this.buttonDelete2.Name = "buttonDelete2";
this.buttonDelete2.Size = new System.Drawing.Size(75, 23);
this.buttonDelete2.TabIndex = 2;
this.buttonDelete2.Text = "button2";
this.buttonDelete2.UseVisualStyleBackColor = true;
//
// buttonAdd1
//
this.buttonAdd1.Location = new System.Drawing.Point(16, 232);
this.buttonAdd1.Name = "buttonAdd1";
this.buttonAdd1.Size = new System.Drawing.Size(75, 23);
this.buttonAdd1.TabIndex = 1;
this.buttonAdd1.Text = "button1";
this.buttonAdd1.UseVisualStyleBackColor = true;
//
// dataGridView1
//
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Location = new System.Drawing.Point(7, 7);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.Size = new System.Drawing.Size(693, 218);
this.dataGridView1.TabIndex = 0;
//
// tabClients
//
this.tabClients.Controls.Add(this.buttonEdit33);
this.tabClients.Controls.Add(this.buttonDelete22);
this.tabClients.Controls.Add(this.buttonAdd11);
this.tabClients.Controls.Add(this.dataGridView2);
this.tabClients.Location = new System.Drawing.Point(4, 22);
this.tabClients.Name = "tabClients";
this.tabClients.Padding = new System.Windows.Forms.Padding(3);
this.tabClients.Size = new System.Drawing.Size(706, 366);
this.tabClients.TabIndex = 1;
this.tabClients.Text = "tabClients";
this.tabClients.UseVisualStyleBackColor = true;
//
// buttonEdit33
//
this.buttonEdit33.Location = new System.Drawing.Point(7, 332);
this.buttonEdit33.Name = "buttonEdit33";
this.buttonEdit33.Size = new System.Drawing.Size(75, 23);
this.buttonEdit33.TabIndex = 3;
this.buttonEdit33.Text = "button3";
this.buttonEdit33.UseVisualStyleBackColor = true;
//
// buttonDelete22
//
this.buttonDelete22.Location = new System.Drawing.Point(7, 302);
this.buttonDelete22.Name = "buttonDelete22";
this.buttonDelete22.Size = new System.Drawing.Size(75, 23);
this.buttonDelete22.TabIndex = 2;
this.buttonDelete22.Text = "button2";
this.buttonDelete22.UseVisualStyleBackColor = true;
//
// buttonAdd11
//
this.buttonAdd11.Location = new System.Drawing.Point(7, 272);
this.buttonAdd11.Name = "buttonAdd11";
this.buttonAdd11.Size = new System.Drawing.Size(75, 23);
this.buttonAdd11.TabIndex = 1;
this.buttonAdd11.Text = "button1";
this.buttonAdd11.UseVisualStyleBackColor = true;
//
// dataGridView2
//
this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView2.Location = new System.Drawing.Point(7, 7);
this.dataGridView2.Name = "dataGridView2";
this.dataGridView2.Size = new System.Drawing.Size(693, 258);
this.dataGridView2.TabIndex = 0;
//
// tabSellHistory
//
this.tabSellHistory.Controls.Add(this.buttonEdit43);
this.tabSellHistory.Controls.Add(this.buttonDelete32);
this.tabSellHistory.Controls.Add(this.buttonAdd21);
this.tabSellHistory.Controls.Add(this.dataGridView3);
this.tabSellHistory.Location = new System.Drawing.Point(4, 22);
this.tabSellHistory.Name = "tabSellHistory";
this.tabSellHistory.Padding = new System.Windows.Forms.Padding(3);
this.tabSellHistory.Size = new System.Drawing.Size(706, 366);
this.tabSellHistory.TabIndex = 2;
this.tabSellHistory.Text = "tabSellHistory";
this.tabSellHistory.UseVisualStyleBackColor = true;
//
// buttonEdit43
//
this.buttonEdit43.Location = new System.Drawing.Point(7, 342);
this.buttonEdit43.Name = "buttonEdit43";
this.buttonEdit43.Size = new System.Drawing.Size(75, 23);
this.buttonEdit43.TabIndex = 3;
this.buttonEdit43.Text = "button3";
this.buttonEdit43.UseVisualStyleBackColor = true;
//
// buttonDelete32
//
this.buttonDelete32.Location = new System.Drawing.Point(7, 313);
this.buttonDelete32.Name = "buttonDelete32";
this.buttonDelete32.Size = new System.Drawing.Size(75, 23);
this.buttonDelete32.TabIndex = 2;
this.buttonDelete32.Text = "button2";
this.buttonDelete32.UseVisualStyleBackColor = true;
//
// buttonAdd21
//
this.buttonAdd21.Location = new System.Drawing.Point(7, 284);
this.buttonAdd21.Name = "buttonAdd21";
this.buttonAdd21.Size = new System.Drawing.Size(75, 23);
this.buttonAdd21.TabIndex = 1;
this.buttonAdd21.Text = "button1";
this.buttonAdd21.UseVisualStyleBackColor = true;
//
// dataGridView3
//
this.dataGridView3.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView3.Location = new System.Drawing.Point(7, 7);
this.dataGridView3.Name = "dataGridView3";
this.dataGridView3.Size = new System.Drawing.Size(693, 271);
this.dataGridView3.TabIndex = 0;
//
// mySqlDataAdapter1
//
this.mySqlDataAdapter1.DeleteCommand = null;
this.mySqlDataAdapter1.InsertCommand = null;
this.mySqlDataAdapter1.SelectCommand = null;
this.mySqlDataAdapter1.UpdateCommand = null;
//
// TabControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.tabMusicalInstrument);
this.Name = "TabControl";
this.Text = "TabControl";
this.tabMusicalInstrument.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.tabClients.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit();
this.tabSellHistory.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGridView3)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TabControl tabMusicalInstrument;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.TabPage tabClients;
private System.Windows.Forms.TabPage tabSellHistory;
private System.Windows.Forms.Button buttonEdit3;
private System.Windows.Forms.Button buttonDelete2;
private System.Windows.Forms.Button buttonAdd1;
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.Button buttonEdit33;
private System.Windows.Forms.Button buttonDelete22;
private System.Windows.Forms.Button buttonAdd11;
private System.Windows.Forms.DataGridView dataGridView2;
private System.Windows.Forms.DataGridView dataGridView3;
private System.Windows.Forms.Button buttonEdit43;
private System.Windows.Forms.Button buttonDelete32;
private System.Windows.Forms.Button buttonAdd21;
private MySql.Data.MySqlClient.MySqlDataAdapter mySqlDataAdapter1;
}
}

139
TabControl.cs Normal file
View File

@ -0,0 +1,139 @@
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Musical
{
public partial class TabControl : Form
{
public TabControl()
{
InitializeComponent();
}
public partial class MainForm : Form
{
private string connectionString = "Server=192.168.201.207;Database=ISP41_Gusarov_Musical;Uid=ISP41_Gusarov;Pwd=ISP41_Gusarov;";
private object tabMusicalInstrument;
private object tabSellHistory;
private object dataGridView1;
public MainForm()
{
LoadMusicalInstruments();
LoadClients();
LoadSellHistory();
}
// Загрузка инструментов
private void LoadMusicalInstruments()
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
try
{
conn.Open();
string query = "SELECT id, name, price, brand FROM MusicalInstrument";
MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
DataGridView DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show("Ошибка загрузки инструментов: " + ex.Message);
}
}
}
// Загрузка клиентов
private void LoadClients()
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
try
{
conn.Open();
string query = "SELECT id, name, phone, email FROM Clients";
MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
tabMusicalInstrument.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show("Ошибка загрузки клиентов: " + ex.Message);
}
}
}
// Загрузка истории продаж
private void LoadSellHistory()
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
try
{
conn.Open();
string query = @"
SELECT s.id, c.name AS ClientName, i.name AS InstrumentName, s.sell_date
FROM SellHistory s
JOIN Clients c ON s.client_id = c.id
JOIN MusicalInstrument i ON s.instrument_id = i.id";
MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
tabSellHistory.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show("Ошибка загрузки истории продаж: " + ex.Message);
}
}
}
// Кнопки добавить/редактировать/удалить (пример для инструментов)
private void btnAddInstrument_Click(object sender, EventArgs e)
{
// Открыть форму добавления
MessageBox.Show("Добавить инструмент");
// Здесь можно открыть новую форму или диалог
}
private void btnEditInstrument_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
{
int id = (int)dataGridView1.SelectedRows[0].Cells["id"].Value;
MessageBox.Show("Редактировать инструмент ID: " + id);
}
else
{
MessageBox.Show("Выберите строку для редактирования.");
}
}
private void btnDeleteInstrument_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count <= 0)
{
return;
}
int id = (int)dataGridView1.SelectedRows[0].Cells["id"].Value;
if (MessageBox.Show("Удалить запись?", "Подтверждение", MessageBoxButtons.YesNo) == DialogResult) ;
}
}
}
}

123
TabControl.resx Normal file
View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="mySqlDataAdapter1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

Binary file not shown.

View File

@ -0,0 +1,424 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BCrypt.Net-Next</name>
</assembly>
<members>
<member name="T:BCrypt.Net.BCrypt">
<summary>BCrypt implementation.</summary>
<remarks>
<para>
BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
<a href="http://www.usenix.org/event/usenix99/provos/provos_html/index.html">"A Future-
Adaptable Password Scheme"</a> by Niels Provos and David Mazieres.
</para>
<para>
This password hashing system tries to thwart off-line password cracking using a
computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
The work factor of the algorithm is parameterised, so it can be increased as computers
get faster.
</para>
<para>
To hash a password using the defaults, call the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String)"/> (which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.HashPassword(plain_password);</code>
<para>
To hash a password using SHA384 pre-hashing for increased entropy call <see cref="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)"/>
(which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.EnhancedHashPassword(plain_password);</code>
<para>
To check whether a plaintext password matches one that has been hashed previously,
use the <see cref="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)"/> method:
(To validate an enhanced hash you can pass true as the last parameter of Verify or use <see cref="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)"/>)
</para>
<code>
if (BCrypt.Verify(candidate_password, stored_hash))
Console.WriteLine("It matches");
else
Console.WriteLine("It does not match");
</code>
<para>
The <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/> method takes an optional parameter (workFactor) that
determines the computational complexity of the hashing:
</para>
<code>
string strong_salt = BCrypt.GenerateSalt(10);
string stronger_salt = BCrypt.GenerateSalt(12);
</code>
<para>
The amount of work increases exponentially (2^workFactor), so each increment is twice
as much work. The default workFactor is 10, and the valid range is 4 to 31.
</para>
</remarks>
</member>
<member name="F:BCrypt.Net.BCrypt.DefaultRounds">
<summary>
Default Work Factor
</summary>
</member>
<member name="F:BCrypt.Net.BCrypt.RngCsp">
<summary>
RandomNumberGenerator.Create calls RandomNumberGenerator.Create("System.Security.Cryptography.RandomNumberGenerator"), which will create an instance of RNGCryptoServiceProvider.
https://msdn.microsoft.com/en-us/library/42ks8fz1
</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType,System.String,System.Boolean,BCrypt.Net.HashType,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="currentKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="oldHashType">HashType used (default SHA384)</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="newKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="newHashType">HashType to use (default SHA384)</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.HashString(System.String,System.Int32)">
<summary>
Hash a string using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<remarks>Just an alias for HashPassword.</remarks>
<param name="inputKey"> The string to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<returns>The hashed string.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32,BCrypt.Net.HashType)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,BCrypt.Net.HashType,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor">Defaults to 11</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.Int32,System.Boolean)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)"/> using the given <paramref name="workFactor"/>.
</summary>
<param name="inputKey"> The password to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<returns>The hashed password</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<param name="enhancedEntropy">Set to true,the string will undergo hashing (defaults to SHA384 then base64 encoding) to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="inputKey"/> is null.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHash(System.Byte[],System.Char,BCrypt.Net.HashType)">
<summary>
Hashes key, base64 encodes before returning byte array
</summary>
<param name="inputBytes"></param>
<param name="bcryptMinorRevision"></param>
<param name="hashType"></param>
<returns></returns>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method.
</summary>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2**workFactor.</param>
<param name="bcryptMinorRevision"></param>
<exception cref="T:System.ArgumentOutOfRangeException">Work factor must be between 4 and 31</exception>
<returns>A base64 encoded salt value.</returns>
<exception cref="T:System.ArgumentException">BCrypt Revision should be a, b, x or y</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.PasswordNeedsRehash(System.String,System.Int32)">
<summary>
Based on password_needs_rehash in PHP this method will return true
if the work factor (logrounds) set on the hash is lower than the new minimum workload passed in
</summary>
<param name="hash">full bcrypt hash</param>
<param name="newMinimumWorkLoad">target workload</param>
<returns>true if new work factor is higher than the one in the hash</returns>
<exception cref="T:System.ArgumentException">throws if the current hash workload (logrounds) can not be parsed</exception>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.InterrogateHash(System.String)">
<summary>
Takes a valid hash and outputs its component parts
</summary>
<param name="hash"></param>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method
selecting a reasonable default for the number of hashing rounds to apply.
</summary>
<returns>A base64 encoded salt value.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>; the string will undergo SHA384 hashing to maintain the enhanced entropy work done during hashing
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EncodeBase64(System.Byte[],System.Int32)">
<summary>
Encode a byte array using BCrypt's slightly-modified base64 encoding scheme. Note that this
is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="byteArray">The byte array to encode.</param>
<param name="length"> The number of bytes to encode.</param>
<returns>Base64-encoded string.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.DecodeBase64(System.String,System.Int32)">
<summary>
Decode a string encoded using BCrypt's base64 scheme to a byte array.
Note that this is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="encodedString">The string to decode.</param>
<param name="maximumBytes"> The maximum bytes to decode.</param>
<returns>The decoded byte array.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Char64(System.Char)">
<summary>
Look up the 3 bits base64-encoded by the specified character, range-checking against
conversion table.
</summary>
<param name="character">The base64-encoded value.</param>
<returns>The decoded value of x.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Encipher(System.Span{System.UInt32},System.Int32)">
<summary>Blowfish encipher a single 64-bit block encoded as two 32-bit halves.</summary>
<param name="blockArray">An array containing the two 32-bit half blocks.</param>
<param name="offset"> The position in the array of the blocks.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.StreamToWord(System.ReadOnlySpan{System.Byte},System.Int32@)">
<summary>Cyclically extract a word of key material.</summary>
<param name="data">The string to extract the data from.</param>
<param name="offset"> [in,out] The current offset.</param>
<returns>The next word of material from data.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.InitializeKey">
<summary>Initializes the Blowfish key schedule.</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.Key(System.ReadOnlySpan{System.Byte})">
<summary>Key the Blowfish cipher.</summary>
<param name="keyBytes">The key byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.EKSKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Perform the "enhanced key schedule" step described by Provos and Mazieres in
"A Future Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
</summary>
<param name="saltBytes"> Salt byte array.</param>
<param name="inputBytes">Input byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.CryptRaw(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32)">
<summary>Perform the central hashing step in the BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="inputBytes">The input byte array to hash.</param>
<param name="saltBytes"> The salt byte array to hash with.</param>
<param name="workFactor"> The binary logarithm of the number of rounds of hashing to apply.</param>
<returns>A byte array containing the hashed result.</returns>
</member>
<member name="T:BCrypt.Net.BcryptAuthenticationException">
<inheritdoc />
<summary>Exception for signalling hash validation errors. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor">
<inheritdoc />
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String,System.Exception)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="T:BCrypt.Net.HashInformation">
<summary>
HashInformation : A value object that contains the results of interrogating a hash
Namely its settings (2a$10 for example); version (2a); workfactor (log rounds), and the raw hash returned
</summary>
</member>
<member name="M:BCrypt.Net.HashInformation.#ctor(System.String,System.String,System.String,System.String)">
<summary>Constructor. </summary>
<param name="settings">The message.</param>
<param name="version">The message.</param>
<param name="workFactor">The message.</param>
<param name="rawHash">The message.</param>
</member>
<member name="P:BCrypt.Net.HashInformation.Settings">
<summary>
Settings string
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.Version">
<summary>
Hash Version
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.WorkFactor">
<summary>
log rounds used / workfactor
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.RawHash">
<summary>
Raw Hash
</summary>
</member>
<member name="T:BCrypt.Net.HashInformationException">
<summary>
Exception used to signal errors that occur during use of the hash information methods
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
<param name="innerException"></param>
</member>
<member name="T:BCrypt.Net.HashType">
<summary>
Type of SHA implementation to use
Keys will be hashed, then base64 encoded before being passed to crypt.
Unless legacy is selected in which case simply SHA384 hashed.
</summary>
</member>
<member name="T:BCrypt.Net.SaltParseException">
<summary>Exception for signalling parse errors during salt checks. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor">
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
</members>
</doc>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

12045
bin/Debug/Google.Protobuf.xml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,245 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>K4os.Hash.xxHash</name>
</assembly>
<members>
<member name="T:K4os.Hash.xxHash.HashAlgorithmAdapter">
<summary>
Adapter implementing <see cref="T:System.Security.Cryptography.HashAlgorithm"/>
</summary>
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.#ctor(System.Int32,System.Action,System.Action{System.Byte[],System.Int32,System.Int32},System.Func{System.Byte[]})">
<summary>
Creates new <see cref="T:K4os.Hash.xxHash.HashAlgorithmAdapter"/>.
</summary>
<param name="hashSize">Hash size (in bytes)</param>
<param name="reset">Reset function.</param>
<param name="update">Update function.</param>
<param name="digest">Digest function.</param>
</member>
<member name="P:K4os.Hash.xxHash.HashAlgorithmAdapter.HashSize">
<inheritdoc />
</member>
<member name="P:K4os.Hash.xxHash.HashAlgorithmAdapter.Hash">
<inheritdoc />
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.HashCore(System.Byte[],System.Int32,System.Int32)">
<inheritdoc />
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.HashFinal">
<inheritdoc />
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.Initialize">
<inheritdoc />
</member>
<member name="T:K4os.Hash.xxHash.XXH">
<summary>
Base class for both <see cref="T:K4os.Hash.xxHash.XXH32"/> and <see cref="T:K4os.Hash.xxHash.XXH64"/>. Do not use directly.
</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH.#ctor">
<summary>Protected constructor to prevent instantiation.</summary>
</member>
<member name="T:K4os.Hash.xxHash.XXH32">
<summary>
xxHash 32-bit.
</summary>
</member>
<member name="T:K4os.Hash.xxHash.XXH32.State">
<summary>Internal state of the algorithm.</summary>
</member>
<member name="F:K4os.Hash.xxHash.XXH32.EmptyHash">
<summary>Hash of empty buffer.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.Void*,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.Void*,System.Int32,System.UInt32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<param name="seed">Seed.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.ReadOnlySpan{System.Byte})">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.Byte[],System.Int32,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.#ctor">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.#ctor(System.UInt32)">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Reset">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Reset(System.UInt32)">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.Void*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.Byte*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.Byte[],System.Int32,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Digest">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestBytes">
<summary>Hash so far, as byte array.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.AsHashAlgorithm">
<summary>Converts this class to <see cref="T:System.Security.Cryptography.HashAlgorithm"/></summary>
<returns><see cref="T:System.Security.Cryptography.HashAlgorithm"/></returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Reset(K4os.Hash.xxHash.XXH32.State@,System.UInt32)">
<summary>Resets hash calculation.</summary>
<param name="state">Hash state.</param>
<param name="seed">Hash seed.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(K4os.Hash.xxHash.XXH32.State@,System.Void*,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(K4os.Hash.xxHash.XXH32.State@,System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Digest(K4os.Hash.xxHash.XXH32.State@)">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
<member name="T:K4os.Hash.xxHash.XXH64">
<summary>
xxHash 64-bit.
</summary>
</member>
<member name="T:K4os.Hash.xxHash.XXH64.State">
<summary>Internal state of the algorithm.</summary>
</member>
<member name="F:K4os.Hash.xxHash.XXH64.EmptyHash">
<summary>Hash of empty buffer.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.Void*,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.Void*,System.Int32,System.UInt64)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<param name="seed">Seed.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.ReadOnlySpan{System.Byte})">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.Byte[],System.Int32,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.#ctor">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.#ctor(System.UInt64)">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Reset">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Reset(System.UInt64)">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.Void*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.Byte*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.Byte[],System.Int32,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Digest">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestBytes">
<summary>Hash so far, as byte array.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.AsHashAlgorithm">
<summary>Converts this class to <see cref="T:System.Security.Cryptography.HashAlgorithm"/></summary>
<returns><see cref="T:System.Security.Cryptography.HashAlgorithm"/></returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Reset(K4os.Hash.xxHash.XXH64.State@,System.UInt64)">
<summary>Resets hash calculation.</summary>
<param name="state">Hash state.</param>
<param name="seed">Hash seed.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(K4os.Hash.xxHash.XXH64.State@,System.Void*,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(K4os.Hash.xxHash.XXH64.State@,System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Digest(K4os.Hash.xxHash.XXH64.State@)">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,223 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Bcl.AsyncInterfaces</name>
</assembly>
<members>
<member name="T:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1">
<summary>Provides the core logic for implementing a manual-reset <see cref="T:System.Threading.Tasks.Sources.IValueTaskSource"/> or <see cref="T:System.Threading.Tasks.Sources.IValueTaskSource`1"/>.</summary>
<typeparam name="TResult"></typeparam>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuation">
<summary>
The callback to invoke when the operation completes if <see cref="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.OnCompleted(System.Action{System.Object},System.Object,System.Int16,System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags)"/> was called before the operation completed,
or <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCoreShared.s_sentinel"/> if the operation completed before a callback was supplied,
or null if a callback hasn't yet been provided and the operation hasn't yet completed.
</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuationState">
<summary>State to pass to <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuation"/>.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._executionContext">
<summary><see cref="T:System.Threading.ExecutionContext"/> to flow to the callback, or null if no flowing is required.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._capturedContext">
<summary>
A "captured" <see cref="T:System.Threading.SynchronizationContext"/> or <see cref="T:System.Threading.Tasks.TaskScheduler"/> with which to invoke the callback,
or null if no special context is required.
</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._completed">
<summary>Whether the current operation has completed.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._result">
<summary>The result with which the operation succeeded, or the default value if it hasn't yet completed or failed.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._error">
<summary>The exception with which the operation failed, or null if it hasn't yet completed or completed successfully.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._version">
<summary>The current version of this value, used to help prevent misuse.</summary>
</member>
<member name="P:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.RunContinuationsAsynchronously">
<summary>Gets or sets whether to force continuations to run asynchronously.</summary>
<remarks>Continuations may run asynchronously if this is false, but they'll never run synchronously if this is true.</remarks>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.Reset">
<summary>Resets to prepare for the next operation.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SetResult(`0)">
<summary>Completes with a successful result.</summary>
<param name="result">The result.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SetException(System.Exception)">
<summary>Complets with an error.</summary>
<param name="error"></param>
</member>
<member name="P:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.Version">
<summary>Gets the operation version.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetStatus(System.Int16)">
<summary>Gets the status of the operation.</summary>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetResult(System.Int16)">
<summary>Gets the result of the operation.</summary>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.OnCompleted(System.Action{System.Object},System.Object,System.Int16,System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags)">
<summary>Schedules the continuation action for this operation.</summary>
<param name="continuation">The continuation to invoke when the operation has completed.</param>
<param name="state">The state object to pass to <paramref name="continuation"/> when it's invoked.</param>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
<param name="flags">The flags describing the behavior of the continuation.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.ValidateToken(System.Int16)">
<summary>Ensures that the specified token matches the current version.</summary>
<param name="token">The token supplied by <see cref="T:System.Threading.Tasks.ValueTask"/>.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SignalCompletion">
<summary>Signals that the operation has completed. Invoked after the result or error has been set.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.InvokeContinuation">
<summary>
Invokes the continuation with the appropriate captured context / scheduler.
This assumes that if <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._executionContext"/> is not null we're already
running within that <see cref="T:System.Threading.ExecutionContext"/>.
</summary>
</member>
<member name="T:System.Threading.Tasks.TaskAsyncEnumerableExtensions">
<summary>Provides a set of static methods for configuring <see cref="T:System.Threading.Tasks.Task"/>-related behaviors on asynchronous enumerables and disposables.</summary>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.ConfigureAwait(System.IAsyncDisposable,System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async disposable will be performed.</summary>
<param name="source">The source async disposable.</param>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured async disposable.</returns>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.ConfigureAwait``1(System.Collections.Generic.IAsyncEnumerable{``0},System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async iteration will be performed.</summary>
<typeparam name="T">The type of the objects being iterated.</typeparam>
<param name="source">The source enumerable being iterated.</param>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured enumerable.</returns>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.WithCancellation``1(System.Collections.Generic.IAsyncEnumerable{``0},System.Threading.CancellationToken)">
<summary>Sets the <see cref="T:System.Threading.CancellationToken"/> to be passed to <see cref="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)"/> when iterating.</summary>
<typeparam name="T">The type of the objects being iterated.</typeparam>
<param name="source">The source enumerable being iterated.</param>
<param name="cancellationToken">The <see cref="T:System.Threading.CancellationToken"/> to use.</param>
<returns>The configured enumerable.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder">
<summary>Represents a builder for asynchronous iterators.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.Create">
<summary>Creates an instance of the <see cref="T:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder"/> struct.</summary>
<returns>The initialized instance.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.MoveNext``1(``0@)">
<summary>Invokes <see cref="M:System.Runtime.CompilerServices.IAsyncStateMachine.MoveNext"/> on the state machine while guarding the <see cref="T:System.Threading.ExecutionContext"/>.</summary>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="stateMachine">The state machine instance, passed by reference.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitOnCompleted``2(``0@,``1@)">
<summary>Schedules the state machine to proceed to the next action when the specified awaiter completes.</summary>
<typeparam name="TAwaiter">The type of the awaiter.</typeparam>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitUnsafeOnCompleted``2(``0@,``1@)">
<summary>Schedules the state machine to proceed to the next action when the specified awaiter completes.</summary>
<typeparam name="TAwaiter">The type of the awaiter.</typeparam>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.Complete">
<summary>Marks iteration as being completed, whether successfully or otherwise.</summary>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.ObjectIdForDebugger">
<summary>Gets an object that may be used to uniquely identify this builder to the debugger.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute">
<summary>Indicates whether a method is an asynchronous iterator.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute"/> class.</summary>
<param name="stateMachineType">The type object for the underlying state machine type that's used to implement a state machine method.</param>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredAsyncDisposable">
<summary>Provides a type that can be used to configure how awaits on an <see cref="T:System.IAsyncDisposable"/> are performed.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1">
<summary>Provides an awaitable async enumerable that enables cancelable iteration and configured awaits.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.ConfigureAwait(System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async iteration will be performed.</summary>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured enumerable.</returns>
<remarks>This will replace any previous value set by <see cref="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.ConfigureAwait(System.Boolean)"/> for this iteration.</remarks>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.WithCancellation(System.Threading.CancellationToken)">
<summary>Sets the <see cref="T:System.Threading.CancellationToken"/> to be passed to <see cref="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)"/> when iterating.</summary>
<param name="cancellationToken">The <see cref="T:System.Threading.CancellationToken"/> to use.</param>
<returns>The configured enumerable.</returns>
<remarks>This will replace any previous <see cref="T:System.Threading.CancellationToken"/> set by <see cref="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.WithCancellation(System.Threading.CancellationToken)"/> for this iteration.</remarks>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator">
<summary>Provides an awaitable async enumerator that enables cancelable iteration and configured awaits.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.MoveNextAsync">
<summary>Advances the enumerator asynchronously to the next element of the collection.</summary>
<returns>
A <see cref="T:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1"/> that will complete with a result of <c>true</c>
if the enumerator was successfully advanced to the next element, or <c>false</c> if the enumerator has
passed the end of the collection.
</returns>
</member>
<member name="P:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.Current">
<summary>Gets the element in the collection at the current position of the enumerator.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.DisposeAsync">
<summary>
Performs application-defined tasks associated with freeing, releasing, or
resetting unmanaged resources asynchronously.
</summary>
</member>
<member name="T:System.Collections.Generic.IAsyncEnumerable`1">
<summary>Exposes an enumerator that provides asynchronous iteration over values of a specified type.</summary>
<typeparam name="T">The type of values to enumerate.</typeparam>
</member>
<member name="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)">
<summary>Returns an enumerator that iterates asynchronously through the collection.</summary>
<param name="cancellationToken">A <see cref="T:System.Threading.CancellationToken"/> that may be used to cancel the asynchronous iteration.</param>
<returns>An enumerator that can be used to iterate asynchronously through the collection.</returns>
</member>
<member name="T:System.Collections.Generic.IAsyncEnumerator`1">
<summary>Supports a simple asynchronous iteration over a generic collection.</summary>
<typeparam name="T">The type of objects to enumerate.</typeparam>
</member>
<member name="M:System.Collections.Generic.IAsyncEnumerator`1.MoveNextAsync">
<summary>Advances the enumerator asynchronously to the next element of the collection.</summary>
<returns>
A <see cref="T:System.Threading.Tasks.ValueTask`1"/> that will complete with a result of <c>true</c> if the enumerator
was successfully advanced to the next element, or <c>false</c> if the enumerator has passed the end
of the collection.
</returns>
</member>
<member name="P:System.Collections.Generic.IAsyncEnumerator`1.Current">
<summary>Gets the element in the collection at the current position of the enumerator.</summary>
</member>
<member name="T:System.IAsyncDisposable">
<summary>Provides a mechanism for releasing unmanaged resources asynchronously.</summary>
</member>
<member name="M:System.IAsyncDisposable.DisposeAsync">
<summary>
Performs application-defined tasks associated with freeing, releasing, or
resetting unmanaged resources asynchronously.
</summary>
</member>
</members>
</doc>

BIN
bin/Debug/Musical.exe Normal file

Binary file not shown.

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

BIN
bin/Debug/Musical.pdb Normal file

Binary file not shown.

BIN
bin/Debug/MySql.Data.dll Normal file

Binary file not shown.

18590
bin/Debug/MySql.Data.xml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Buffers</name>
</assembly>
<members>
<member name="T:System.Buffers.ArrayPool`1">
<summary>Provides a resource pool that enables reusing instances of type <see cref="T[]"></see>.</summary>
<typeparam name="T">The type of the objects that are in the resource pool.</typeparam>
</member>
<member name="M:System.Buffers.ArrayPool`1.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class.</summary>
</member>
<member name="M:System.Buffers.ArrayPool`1.Create">
<summary>Creates a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class.</summary>
<returns>A new instance of the <see cref="System.Buffers.ArrayPool`1"></see> class.</returns>
</member>
<member name="M:System.Buffers.ArrayPool`1.Create(System.Int32,System.Int32)">
<summary>Creates a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class using the specifed configuration.</summary>
<param name="maxArrayLength">The maximum length of an array instance that may be stored in the pool.</param>
<param name="maxArraysPerBucket">The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access.</param>
<returns>A new instance of the <see cref="System.Buffers.ArrayPool`1"></see> class with the specified configuration.</returns>
</member>
<member name="M:System.Buffers.ArrayPool`1.Rent(System.Int32)">
<summary>Retrieves a buffer that is at least the requested length.</summary>
<param name="minimumLength">The minimum length of the array.</param>
<returns>An array of type <see cref="T[]"></see> that is at least <paramref name="minimumLength">minimumLength</paramref> in length.</returns>
</member>
<member name="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)">
<summary>Returns an array to the pool that was previously obtained using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method on the same <see cref="T:System.Buffers.ArrayPool`1"></see> instance.</summary>
<param name="array">A buffer to return to the pool that was previously obtained using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method.</param>
<param name="clearArray">Indicates whether the contents of the buffer should be cleared before reuse. If <paramref name="clearArray">clearArray</paramref> is set to true, and if the pool will store the buffer to enable subsequent reuse, the <see cref="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)"></see> method will clear the <paramref name="array">array</paramref> of its contents so that a subsequent caller using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method will not see the content of the previous caller. If <paramref name="clearArray">clearArray</paramref> is set to false or if the pool will release the buffer, the array&amp;#39;s contents are left unchanged.</param>
</member>
<member name="P:System.Buffers.ArrayPool`1.Shared">
<summary>Gets a shared <see cref="T:System.Buffers.ArrayPool`1"></see> instance.</summary>
<returns>A shared <see cref="System.Buffers.ArrayPool`1"></see> instance.</returns>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,341 @@
<?xml version="1.0" encoding="utf-8"?>
<doc>
<assembly>
<name>System.IO.Pipelines</name>
</assembly>
<members>
<member name="T:System.IO.Pipelines.FlushResult">
<summary>Result returned by <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> call.</summary>
</member>
<member name="M:System.IO.Pipelines.FlushResult.#ctor(System.Boolean,System.Boolean)">
<summary>Initializes a new instance of <see cref="T:System.IO.Pipelines.FlushResult" /> struct setting the <see cref="P:System.IO.Pipelines.FlushResult.IsCanceled" /> and <see cref="P:System.IO.Pipelines.FlushResult.IsCompleted" /> flags.</summary>
<param name="isCanceled">
<see langword="true" /> to indicate the current <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation that produced this <see cref="T:System.IO.Pipelines.FlushResult" /> was canceled by <see cref="M:System.IO.Pipelines.PipeWriter.CancelPendingFlush" />; otherwise, <see langword="false" />.</param>
<param name="isCompleted">
<see langword="true" /> to indicate the reader is no longer reading data written to the <see cref="T:System.IO.Pipelines.PipeWriter" />.</param>
</member>
<member name="P:System.IO.Pipelines.FlushResult.IsCanceled">
<summary>Gets a value that indicates whether the current <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation was canceled.</summary>
<returns>
<see langword="true" /> if the current <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation was canceled; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.FlushResult.IsCompleted">
<summary>Gets a value that indicates the reader is no longer reading data written to the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
<returns>
<see langword="true" /> if the reader is no longer reading data written to the <see cref="T:System.IO.Pipelines.PipeWriter" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="T:System.IO.Pipelines.IDuplexPipe">
<summary>Defines a class that provides a duplex pipe from which data can be read from and written to.</summary>
</member>
<member name="P:System.IO.Pipelines.IDuplexPipe.Input">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeReader" /> half of the duplex pipe.</summary>
</member>
<member name="P:System.IO.Pipelines.IDuplexPipe.Output">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeWriter" /> half of the duplex pipe.</summary>
</member>
<member name="T:System.IO.Pipelines.Pipe">
<summary>The default <see cref="T:System.IO.Pipelines.PipeWriter" /> and <see cref="T:System.IO.Pipelines.PipeReader" /> implementation.</summary>
</member>
<member name="M:System.IO.Pipelines.Pipe.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.Pipe" /> class using <see cref="P:System.IO.Pipelines.PipeOptions.Default" /> as options.</summary>
</member>
<member name="M:System.IO.Pipelines.Pipe.#ctor(System.IO.Pipelines.PipeOptions)">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.Pipe" /> class with the specified options.</summary>
<param name="options">The set of options for this pipe.</param>
</member>
<member name="M:System.IO.Pipelines.Pipe.Reset">
<summary>Resets the pipe.</summary>
</member>
<member name="P:System.IO.Pipelines.Pipe.Reader">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeReader" /> for this pipe.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeReader" /> instance for this pipe.</returns>
</member>
<member name="P:System.IO.Pipelines.Pipe.Writer">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeWriter" /> for this pipe.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeWriter" /> instance for this pipe.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeOptions">
<summary>Represents a set of <see cref="T:System.IO.Pipelines.Pipe" /> options.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeOptions.#ctor(System.Buffers.MemoryPool{System.Byte},System.IO.Pipelines.PipeScheduler,System.IO.Pipelines.PipeScheduler,System.Int64,System.Int64,System.Int32,System.Boolean)">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.PipeOptions" /> class with the specified parameters.</summary>
<param name="pool">The pool of memory blocks to be used for buffer management.</param>
<param name="readerScheduler">The <see cref="T:System.IO.Pipelines.PipeScheduler" /> to be used to execute <see cref="T:System.IO.Pipelines.PipeReader" /> callbacks and async continuations.</param>
<param name="writerScheduler">The <see cref="T:System.IO.Pipelines.PipeScheduler" /> used to execute <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and async continuations.</param>
<param name="pauseWriterThreshold">The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> before <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> starts blocking. A value of zero prevents <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> from ever blocking, effectively making the number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> unlimited.</param>
<param name="resumeWriterThreshold">The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> stops blocking.</param>
<param name="minimumSegmentSize">The minimum size of the segment requested from <paramref name="pool" />.</param>
<param name="useSynchronizationContext">
<see langword="true" /> if asynchronous continuations should be executed on the <see cref="T:System.Threading.SynchronizationContext" /> they were captured on; <see langword="false" /> otherwise. This takes precedence over the schedulers specified in <see cref="P:System.IO.Pipelines.PipeOptions.ReaderScheduler" /> and <see cref="P:System.IO.Pipelines.PipeOptions.WriterScheduler" />.</param>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.Default">
<summary>Gets the default instance of <see cref="T:System.IO.Pipelines.PipeOptions" />.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeOptions" /> object initialized with default parameters.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.MinimumSegmentSize">
<summary>Gets the minimum size of the segment requested from the <see cref="P:System.IO.Pipelines.PipeOptions.Pool" />.</summary>
<returns>The minimum size of the segment requested from the <see cref="P:System.IO.Pipelines.PipeOptions.Pool" />.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.PauseWriterThreshold">
<summary>Gets the number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> starts blocking.</summary>
<returns>The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> starts blocking.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.Pool">
<summary>Gets the <see cref="T:System.Buffers.MemoryPool`1" /> object used for buffer management.</summary>
<returns>A pool of memory blocks used for buffer management.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.ReaderScheduler">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeScheduler" /> used to execute <see cref="T:System.IO.Pipelines.PipeReader" /> callbacks and async continuations.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> that is used to execute <see cref="T:System.IO.Pipelines.PipeReader" /> callbacks and async continuations.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.ResumeWriterThreshold">
<summary>Gets the number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> stops blocking.</summary>
<returns>The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> stops blocking.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.UseSynchronizationContext">
<summary>Gets a value that determines if asynchronous callbacks and continuations should be executed on the <see cref="T:System.Threading.SynchronizationContext" /> they were captured on. This takes precedence over the schedulers specified in <see cref="P:System.IO.Pipelines.PipeOptions.ReaderScheduler" /> and <see cref="P:System.IO.Pipelines.PipeOptions.WriterScheduler" />.</summary>
<returns>
<see langword="true" /> if asynchronous callbacks and continuations should be executed on the <see cref="T:System.Threading.SynchronizationContext" /> they were captured on; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.WriterScheduler">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeScheduler" /> used to execute <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and async continuations.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> object used to execute <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and async continuations.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeReader">
<summary>Defines a class that provides access to a read side of pipe.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeReader.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.PipeReader" /> class.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeReader.AdvanceTo(System.SequencePosition)">
<summary>Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed.</summary>
<param name="consumed">Marks the extent of the data that has been successfully processed.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.AdvanceTo(System.SequencePosition,System.SequencePosition)">
<summary>Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed, read and examined.</summary>
<param name="consumed">Marks the extent of the data that has been successfully processed.</param>
<param name="examined">Marks the extent of the data that has been read and examined.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.AsStream(System.Boolean)">
<summary>Returns a <see cref="T:System.IO.Stream" /> representation of the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="leaveOpen">An optional flag that indicates whether disposing the returned <see cref="T:System.IO.Stream" /> leaves <see cref="T:System.IO.Pipelines.PipeReader" /> open (<see langword="true" />) or completes <see cref="T:System.IO.Pipelines.PipeReader" /> (<see langword="false" />).</param>
<returns>A stream that represents the <see cref="T:System.IO.Pipelines.PipeReader" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CancelPendingRead">
<summary>Cancels to currently pending or if none is pending next call to <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" />, without completing the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeReader.Complete(System.Exception)">
<summary>Signals to the producer that the consumer is done reading.</summary>
<param name="exception">Optional <see cref="T:System.Exception" /> indicating a failure that's causing the pipeline to complete.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CompleteAsync(System.Exception)">
<summary>Marks the current pipe reader instance as being complete, meaning no more data will be read from it.</summary>
<param name="exception">An optional exception that indicates the failure that caused the reader to complete.</param>
<returns>A value task that represents the asynchronous complete operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CopyToAsync(System.IO.Pipelines.PipeWriter,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the <see cref="T:System.IO.Pipelines.PipeReader" /> and writes them to the specified <see cref="T:System.IO.Pipelines.PipeWriter" />, using a specified buffer size and cancellation token.</summary>
<param name="destination">The pipe writer to which the contents of the current stream will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CopyToAsync(System.IO.Stream,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the <see cref="T:System.IO.Pipelines.PipeReader" /> and writes them to the specified stream, using a specified cancellation token.</summary>
<param name="destination">The stream to which the contents of the current stream will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.Create(System.IO.Stream,System.IO.Pipelines.StreamPipeReaderOptions)">
<summary>Creates a <see cref="T:System.IO.Pipelines.PipeReader" /> wrapping the specified <see cref="T:System.IO.Stream" />.</summary>
<param name="stream">The stream that the pipe reader will wrap.</param>
<param name="readerOptions">The options to configure the pipe reader.</param>
<returns>A <see cref="T:System.IO.Pipelines.PipeReader" /> that wraps the <see cref="T:System.IO.Stream" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.OnWriterCompleted(System.Action{System.Exception,System.Object},System.Object)">
<summary>Registers a callback that executes when the <see cref="T:System.IO.Pipelines.PipeWriter" /> side of the pipe is completed.</summary>
<param name="callback">The callback to register.</param>
<param name="state">The state object to pass to <paramref name="callback" /> when it's invoked.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)">
<summary>Asynchronously reads a sequence of bytes from the current <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see langword="default" />.</param>
<returns>A <see cref="T:System.Threading.Tasks.ValueTask`1" /> representing the asynchronous read operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.TryRead(System.IO.Pipelines.ReadResult@)">
<summary>Attempts to synchronously read data the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="result">When this method returns <see langword="true" />, this value is set to a <see cref="T:System.IO.Pipelines.ReadResult" /> instance that represents the result of the read call; otherwise, this value is set to <see langword="default" />.</param>
<returns>
<see langword="true" /> if data was available, or if the call was canceled or the writer was completed; otherwise, <see langword="false" />.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeScheduler">
<summary>Abstraction for running <see cref="T:System.IO.Pipelines.PipeReader" /> and <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and continuations.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeScheduler.#ctor">
<summary>Initializes new a <see cref="T:System.IO.Pipelines.PipeScheduler" /> instance.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeScheduler.Schedule(System.Action{System.Object},System.Object)">
<summary>Requests <paramref name="action" /> to be run on scheduler with <paramref name="state" /> being passed in.</summary>
<param name="action">The single-parameter action delegate to schedule.</param>
<param name="state">The parameter to pass to the <paramref name="action" /> delegate.</param>
</member>
<member name="P:System.IO.Pipelines.PipeScheduler.Inline">
<summary>The <see cref="T:System.IO.Pipelines.PipeScheduler" /> implementation that runs callbacks inline.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> instance that runs callbacks inline.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeScheduler.ThreadPool">
<summary>The <see cref="T:System.IO.Pipelines.PipeScheduler" /> implementation that queues callbacks to the thread pool.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> instance that queues callbacks to the thread pool.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeWriter">
<summary>Defines a class that provides a pipeline to which data can be written.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.#ctor">
<summary>Initializes a new instance of the class.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.Advance(System.Int32)">
<summary>Notifies the <see cref="T:System.IO.Pipelines.PipeWriter" /> that <paramref name="bytes" /> bytes were written to the output <see cref="T:System.Span`1" /> or <see cref="T:System.Memory`1" />. You must request a new buffer after calling <see cref="M:System.IO.Pipelines.PipeWriter.Advance(System.Int32)" /> to continue writing more data; you cannot write to a previously acquired buffer.</summary>
<param name="bytes">The number of bytes written to the <see cref="T:System.Span`1" /> or <see cref="T:System.Memory`1" />.</param>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.AsStream(System.Boolean)">
<summary>Returns a <see cref="T:System.IO.Stream" /> representation of the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
<param name="leaveOpen">An optional flag that indicates whether disposing the returned <see cref="T:System.IO.Stream" /> leaves <see cref="T:System.IO.Pipelines.PipeReader" /> open (<see langword="true" />) or completes <see cref="T:System.IO.Pipelines.PipeReader" /> (<see langword="false" />).</param>
<returns>A stream that represents the <see cref="T:System.IO.Pipelines.PipeWriter" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.CancelPendingFlush">
<summary>Cancels the pending <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation. If there is none, cancels next <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation, without completing the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.Complete(System.Exception)">
<summary>Marks the <see cref="T:System.IO.Pipelines.PipeWriter" /> as being complete, meaning no more items will be written to it.</summary>
<param name="exception">Optional <see cref="T:System.Exception" /> indicating a failure that's causing the pipeline to complete.</param>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.CompleteAsync(System.Exception)">
<summary>Marks the current pipe writer instance as being complete, meaning no more data will be written to it.</summary>
<param name="exception">An optional exception that indicates the failure that caused the pipeline to complete.</param>
<returns>A value task that represents the asynchronous complete operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.CopyFromAsync(System.IO.Stream,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the specified stream and writes them to the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
<param name="source">The stream from which the contents will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.Create(System.IO.Stream,System.IO.Pipelines.StreamPipeWriterOptions)">
<summary>Creates a <see cref="T:System.IO.Pipelines.PipeWriter" /> wrapping the specified <see cref="T:System.IO.Stream" />.</summary>
<param name="stream">The stream that the pipe writer will wrap.</param>
<param name="writerOptions">The options to configure the pipe writer.</param>
<returns>A <see cref="T:System.IO.Pipelines.PipeWriter" /> that wraps the <see cref="T:System.IO.Stream" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)">
<summary>Makes bytes written available to <see cref="T:System.IO.Pipelines.PipeReader" /> and runs <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> continuation.</summary>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents and wraps the asynchronous flush operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.GetMemory(System.Int32)">
<summary>Returns a <see cref="T:System.Memory`1" /> to write to that is at least the requested size, as specified by the <paramref name="sizeHint" /> parameter.</summary>
<param name="sizeHint">The minimum length of the returned <see cref="T:System.Memory`1" />. If 0, a non-empty memory buffer of arbitrary size is returned.</param>
<exception cref="T:System.OutOfMemoryException">The requested buffer size is not available.</exception>
<returns>A memory buffer of at least <paramref name="sizeHint" /> bytes. If <paramref name="sizeHint" /> is 0, returns a non-empty buffer of arbitrary size.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.GetSpan(System.Int32)">
<summary>Returns a <see cref="T:System.Span`1" /> to write to that is at least the requested size, as specified by the <paramref name="sizeHint" /> parameter.</summary>
<param name="sizeHint">The minimum length of the returned <see cref="T:System.Span`1" />. If 0, a non-empty buffer of arbitrary size is returned.</param>
<exception cref="T:System.OutOfMemoryException">The requested buffer size is not available.</exception>
<returns>A buffer of at least <paramref name="sizeHint" /> bytes. If <paramref name="sizeHint" /> is 0, returns a non-empty buffer of arbitrary size.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.OnReaderCompleted(System.Action{System.Exception,System.Object},System.Object)">
<summary>Registers a callback that executes when the <see cref="T:System.IO.Pipelines.PipeReader" /> side of the pipe is completed.</summary>
<param name="callback">The callback to register.</param>
<param name="state">The state object to pass to <paramref name="callback" /> when it's invoked.</param>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.WriteAsync(System.ReadOnlyMemory{System.Byte},System.Threading.CancellationToken)">
<summary>Writes the specified byte memory range to the pipe and makes data accessible to the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="source">The read-only byte memory region to write.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous write operation, and wraps the flush asynchronous operation.</returns>
</member>
<member name="T:System.IO.Pipelines.ReadResult">
<summary>Represents the result of a <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</summary>
</member>
<member name="M:System.IO.Pipelines.ReadResult.#ctor(System.Buffers.ReadOnlySequence{System.Byte},System.Boolean,System.Boolean)">
<summary>Creates a new instance of <see cref="T:System.IO.Pipelines.ReadResult" /> setting <see cref="P:System.IO.Pipelines.ReadResult.IsCanceled" /> and <see cref="P:System.IO.Pipelines.ReadResult.IsCompleted" /> flags.</summary>
<param name="buffer">The read-only sequence containing the bytes of data that were read in the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</param>
<param name="isCanceled">A flag that indicates if the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation that produced this <see cref="T:System.IO.Pipelines.ReadResult" /> was canceled by <see cref="M:System.IO.Pipelines.PipeReader.CancelPendingRead" />.</param>
<param name="isCompleted">A flag that indicates whether the end of the data stream has been reached.</param>
</member>
<member name="P:System.IO.Pipelines.ReadResult.Buffer">
<summary>Gets the <see cref="T:System.Buffers.ReadOnlySequence`1" /> that was read.</summary>
<returns>A read-only sequence containing the bytes of data that were read in the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</returns>
</member>
<member name="P:System.IO.Pipelines.ReadResult.IsCanceled">
<summary>Gets a value that indicates whether the current <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation was canceled.</summary>
<returns>
<see langword="true" /> if the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation that produced this <see cref="T:System.IO.Pipelines.ReadResult" /> was canceled by <see cref="M:System.IO.Pipelines.PipeReader.CancelPendingRead" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.ReadResult.IsCompleted">
<summary>Gets a value that indicates whether the end of the data stream has been reached.</summary>
<returns>
<see langword="true" /> if the end of the data stream has been reached; otherwise, <see langword="false" />.</returns>
</member>
<member name="T:System.IO.Pipelines.StreamPipeExtensions">
<summary>Provides extension methods for <see cref="T:System.IO.Stream" /> that support read and write operations directly into pipes.</summary>
</member>
<member name="M:System.IO.Pipelines.StreamPipeExtensions.CopyToAsync(System.IO.Stream,System.IO.Pipelines.PipeWriter,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the <see cref="T:System.IO.Stream" /> and writes them to the specified <see cref="T:System.IO.Pipelines.PipeWriter" />, using a cancellation token.</summary>
<param name="source">The stream from which the contents of the current stream will be copied.</param>
<param name="destination">The writer to which the contents of the source stream will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="T:System.IO.Pipelines.StreamPipeReaderOptions">
<summary>Represents a set of options for controlling the creation of the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
</member>
<member name="M:System.IO.Pipelines.StreamPipeReaderOptions.#ctor(System.Buffers.MemoryPool{System.Byte},System.Int32,System.Int32,System.Boolean)">
<summary>Initializes a <see cref="T:System.IO.Pipelines.StreamPipeReaderOptions" /> instance, optionally specifying a memory pool, a minimum buffer size, a minimum read size, and whether the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes.</summary>
<param name="pool">The memory pool to use when allocating memory. The default value is <see langword="null" />.</param>
<param name="bufferSize">The minimum buffer size to use when renting memory from the <paramref name="pool" />. The default value is 4096.</param>
<param name="minimumReadSize">The threshold of remaining bytes in the buffer before a new buffer is allocated. The default value is 1024.</param>
<param name="leaveOpen">
<see langword="true" /> to leave the underlying stream open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes; <see langword="false" /> to close it. The default is <see langword="false" />.</param>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.BufferSize">
<summary>Gets the minimum buffer size to use when renting memory from the <see cref="P:System.IO.Pipelines.StreamPipeReaderOptions.Pool" />.</summary>
<returns>The buffer size.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.LeaveOpen">
<summary>Gets the value that indicates if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes.</summary>
<returns>
<see langword="true" /> if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.MinimumReadSize">
<summary>Gets the threshold of remaining bytes in the buffer before a new buffer is allocated.</summary>
<returns>The minimum read size.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.Pool">
<summary>Gets the <see cref="T:System.Buffers.MemoryPool`1" /> to use when allocating memory.</summary>
<returns>A memory pool instance.</returns>
</member>
<member name="T:System.IO.Pipelines.StreamPipeWriterOptions">
<summary>Represents a set of options for controlling the creation of the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
</member>
<member name="M:System.IO.Pipelines.StreamPipeWriterOptions.#ctor(System.Buffers.MemoryPool{System.Byte},System.Int32,System.Boolean)">
<summary>Initializes a <see cref="T:System.IO.Pipelines.StreamPipeWriterOptions" /> instance, optionally specifying a memory pool, a minimum buffer size, and whether the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes.</summary>
<param name="pool">The memory pool to use when allocating memory. The default value is <see langword="null" />.</param>
<param name="minimumBufferSize">The minimum buffer size to use when renting memory from the <paramref name="pool" />. The default value is 4096.</param>
<param name="leaveOpen">
<see langword="true" /> to leave the underlying stream open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes; <see langword="false" /> to close it. The default is <see langword="false" />.</param>
</member>
<member name="P:System.IO.Pipelines.StreamPipeWriterOptions.LeaveOpen">
<summary>Gets the value that indicates if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes.</summary>
<returns>
<see langword="true" /> if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeWriterOptions.MinimumBufferSize">
<summary>Gets the minimum buffer size to use when renting memory from the <see cref="P:System.IO.Pipelines.StreamPipeWriterOptions.Pool" />.</summary>
<returns>An integer representing the minimum buffer size.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeWriterOptions.Pool">
<summary>Gets the <see cref="T:System.Buffers.MemoryPool`1" /> to use when allocating memory.</summary>
<returns>A memory pool instance.</returns>
</member>
</members>
</doc>

BIN
bin/Debug/System.Memory.dll Normal file

Binary file not shown.

355
bin/Debug/System.Memory.xml Normal file
View File

@ -0,0 +1,355 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Memory</name>
</assembly>
<members>
<member name="T:System.Span`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.Span`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.Span`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.Clear">
</member>
<member name="M:System.Span`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.Span`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.Span`1.Empty">
<returns></returns>
</member>
<member name="M:System.Span`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Fill(`0)">
<param name="value"></param>
</member>
<member name="M:System.Span`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.Span`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.Span`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.Span`1.Length">
<returns></returns>
</member>
<member name="M:System.Span`1.op_Equality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.ArraySegment{T})~System.Span{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.Span{T})~System.ReadOnlySpan{T}">
<param name="span"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(T[])~System.Span{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Inequality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.ToArray">
<returns></returns>
</member>
<member name="M:System.Span`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
<member name="T:System.SpanExtensions">
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.Span{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan(System.String)">
<param name="text"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(System.ArraySegment{``0})">
<param name="arraySegment"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(``0[])">
<param name="array"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.CopyTo``1(``0[],System.Span{``0})">
<param name="array"></param>
<param name="destination"></param>
<typeparam name="T"></typeparam>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.Span{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="T:System.ReadOnlySpan`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Empty">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Length">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Equality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(System.ArraySegment{T})~System.ReadOnlySpan{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(T[])~System.ReadOnlySpan{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Inequality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.ToArray">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
</members>
</doc>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,291 @@
<?xml version="1.0" encoding="utf-8"?>
<doc>
<assembly>
<name>System.Runtime.CompilerServices.Unsafe</name>
</assembly>
<members>
<member name="T:System.Runtime.CompilerServices.Unsafe">
<summary>Contains generic, low-level functionality for manipulating pointers.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.Int32)">
<summary>Adds an element offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.IntPtr)">
<summary>Adds an element offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.UIntPtr)">
<summary>Adds an element offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(System.Void*,System.Int32)">
<summary>Adds an element offset to the given void pointer.</summary>
<param name="source">The void pointer to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of void pointer.</typeparam>
<returns>A new void pointer that reflects the addition of offset to the specified pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AddByteOffset``1(``0@,System.IntPtr)">
<summary>Adds a byte offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="byteOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of byte offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AddByteOffset``1(``0@,System.UIntPtr)">
<summary>Adds a byte offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="byteOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of byte offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AreSame``1(``0@,``0@)">
<summary>Determines whether the specified references point to the same location.</summary>
<param name="left">The first reference to compare.</param>
<param name="right">The second reference to compare.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>
<see langword="true" /> if <paramref name="left" /> and <paramref name="right" /> point to the same location; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.As``1(System.Object)">
<summary>Casts the given object to the specified type.</summary>
<param name="o">The object to cast.</param>
<typeparam name="T">The type which the object will be cast to.</typeparam>
<returns>The original object, casted to the given type.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.As``2(``0@)">
<summary>Reinterprets the given reference as a reference to a value of type <typeparamref name="TTo" />.</summary>
<param name="source">The reference to reinterpret.</param>
<typeparam name="TFrom">The type of reference to reinterpret.</typeparam>
<typeparam name="TTo">The desired type of the reference.</typeparam>
<returns>A reference to a value of type <typeparamref name="TTo" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AsPointer``1(``0@)">
<summary>Returns a pointer to the given by-ref parameter.</summary>
<param name="value">The object whose pointer is obtained.</param>
<typeparam name="T">The type of object.</typeparam>
<returns>A pointer to the given value.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AsRef``1(``0@)">
<summary>Reinterprets the given read-only reference as a reference.</summary>
<param name="source">The read-only reference to reinterpret.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A reference to a value of type <typeparamref name="T" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AsRef``1(System.Void*)">
<summary>Reinterprets the given location as a reference to a value of type <typeparamref name="T" />.</summary>
<param name="source">The location of the value to reference.</param>
<typeparam name="T">The type of the interpreted location.</typeparam>
<returns>A reference to a value of type <typeparamref name="T" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ByteOffset``1(``0@,``0@)">
<summary>Determines the byte offset from origin to target from the given references.</summary>
<param name="origin">The reference to origin.</param>
<param name="target">The reference to target.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>Byte offset from origin to target i.e. <paramref name="target" /> - <paramref name="origin" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(``0@,System.Void*)">
<summary>Copies a value of type <typeparamref name="T" /> to the given location.</summary>
<param name="destination">The location to copy to.</param>
<param name="source">A pointer to the value to copy.</param>
<typeparam name="T">The type of value to copy.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(System.Void*,``0@)">
<summary>Copies a value of type <typeparamref name="T" /> to the given location.</summary>
<param name="destination">The location to copy to.</param>
<param name="source">A reference to the value to copy.</param>
<typeparam name="T">The type of value to copy.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Byte@,System.Byte@,System.UInt32)">
<summary>Copies bytes from the source address to the destination address.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Void*,System.Void*,System.UInt32)">
<summary>Copies bytes from the source address to the destination address.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Byte@,System.Byte@,System.UInt32)">
<summary>Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32)">
<summary>Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Byte@,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Void*,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Byte@,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Void*,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.IsAddressGreaterThan``1(``0@,``0@)">
<summary>Returns a value that indicates whether a specified reference is greater than another specified reference.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The second value to compare.</param>
<typeparam name="T">The type of the reference.</typeparam>
<returns>
<see langword="true" /> if <paramref name="left" /> is greater than <paramref name="right" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.IsAddressLessThan``1(``0@,``0@)">
<summary>Returns a value that indicates whether a specified reference is less than another specified reference.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The second value to compare.</param>
<typeparam name="T">The type of the reference.</typeparam>
<returns>
<see langword="true" /> if <paramref name="left" /> is less than <paramref name="right" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.IsNullRef``1(``0@)">
<summary>Determines if a given reference to a value of type <typeparamref name="T" /> is a null reference.</summary>
<param name="source">The reference to check.</param>
<typeparam name="T">The type of the reference.</typeparam>
<returns>
<see langword="true" /> if <paramref name="source" /> is a null reference; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.NullRef``1">
<summary>Returns a reference to a value of type <typeparamref name="T" /> that is a null reference.</summary>
<typeparam name="T">The type of the reference.</typeparam>
<returns>A reference to a value of type <typeparamref name="T" /> that is a null reference.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Read``1(System.Void*)">
<summary>Reads a value of type <typeparamref name="T" /> from the given location.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T" /> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Byte@)">
<summary>Reads a value of type <typeparamref name="T" /> from the given location without assuming architecture dependent alignment of the addresses.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T" /> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Void*)">
<summary>Reads a value of type <typeparamref name="T" /> from the given location without assuming architecture dependent alignment of the addresses.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T" /> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SizeOf``1">
<summary>Returns the size of an object of the given type parameter.</summary>
<typeparam name="T">The type of object whose size is retrieved.</typeparam>
<returns>The size of an object of type <typeparamref name="T" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SkipInit``1(``0@)">
<summary>Bypasses definite assignment rules for a given value.</summary>
<param name="value">The uninitialized object.</param>
<typeparam name="T">The type of the uninitialized object.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.Int32)">
<summary>Subtracts an element offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subtraction of offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.IntPtr)">
<summary>Subtracts an element offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subtraction of offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.UIntPtr)">
<summary>Subtracts an element offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subraction of offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(System.Void*,System.Int32)">
<summary>Subtracts an element offset from the given void pointer.</summary>
<param name="source">The void pointer to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of the void pointer.</typeparam>
<returns>A new void pointer that reflects the subtraction of offset from the specified pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.IntPtr)">
<summary>Subtracts a byte offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="byteOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subtraction of byte offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.UIntPtr)">
<summary>Subtracts a byte offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="byteOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subraction of byte offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Unbox``1(System.Object)">
<summary>Returns a <see langword="mutable ref" /> to a boxed value.</summary>
<param name="box">The value to unbox.</param>
<typeparam name="T">The type to be unboxed.</typeparam>
<exception cref="T:System.NullReferenceException">
<paramref name="box" /> is <see langword="null" />, and <typeparamref name="T" /> is a non-nullable value type.</exception>
<exception cref="T:System.InvalidCastException">
<paramref name="box" /> is not a boxed value type.
-or-
<paramref name="box" /> is not a boxed <typeparamref name="T" />.</exception>
<exception cref="T:System.TypeLoadException">
<typeparamref name="T" /> cannot be found.</exception>
<returns>A <see langword="mutable ref" /> to the boxed value <paramref name="box" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Write``1(System.Void*,``0)">
<summary>Writes a value of type <typeparamref name="T" /> to the given location.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Byte@,``0)">
<summary>Writes a value of type <typeparamref name="T" /> to the given location without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Void*,``0)">
<summary>Writes a value of type <typeparamref name="T" /> to the given location without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Threading.Tasks.Extensions</name>
</assembly>
<members>
<member name="T:System.Runtime.CompilerServices.ValueTaskAwaiter`1">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.ValueTaskAwaiter`1.GetResult">
<returns></returns>
</member>
<member name="P:System.Runtime.CompilerServices.ValueTaskAwaiter`1.IsCompleted">
<returns></returns>
</member>
<member name="M:System.Runtime.CompilerServices.ValueTaskAwaiter`1.OnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="M:System.Runtime.CompilerServices.ValueTaskAwaiter`1.UnsafeOnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="T:System.Threading.Tasks.ValueTask`1">
<summary>Provides a value type that wraps a <see cref="Task{TResult}"></see> and a <typeparamref name="TResult">TResult</typeparamref>, only one of which is used.</summary>
<typeparam name="TResult">The result.</typeparam>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.#ctor(System.Threading.Tasks.Task{`0})">
<summary>Initializes a new instance of the <see cref="ValueTask{TResult}"></see> class using the supplied task that represents the operation.</summary>
<param name="task">The task.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="task">task</paramref> argument is null.</exception>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.#ctor(`0)">
<summary>Initializes a new instance of the <see cref="ValueTask{TResult}"></see> class using the supplied result of a successful operation.</summary>
<param name="result">The result.</param>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.AsTask">
<summary>Retrieves a <see cref="Task{TResult}"></see> object that represents this <see cref="ValueTask{TResult}"></see>.</summary>
<returns>The <see cref="Task{TResult}"></see> object that is wrapped in this <see cref="ValueTask{TResult}"></see> if one exists, or a new <see cref="Task{TResult}"></see> object that represents the result.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.ConfigureAwait(System.Boolean)">
<summary>Configures an awaiter for this value.</summary>
<param name="continueOnCapturedContext">true to attempt to marshal the continuation back to the captured context; otherwise, false.</param>
<returns>The configured awaiter.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.CreateAsyncMethodBuilder">
<summary>Creates a method builder for use with an async method.</summary>
<returns>The created builder.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.Equals(System.Object)">
<summary>Determines whether the specified object is equal to the current object.</summary>
<param name="obj">The object to compare with the current object.</param>
<returns>true if the specified object is equal to the current object; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.Equals(System.Threading.Tasks.ValueTask{`0})">
<summary>Determines whether the specified <see cref="ValueTask{TResult}"></see> object is equal to the current <see cref="ValueTask{TResult}"></see> object.</summary>
<param name="other">The object to compare with the current object.</param>
<returns>true if the specified object is equal to the current object; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.GetAwaiter">
<summary>Creates an awaiter for this value.</summary>
<returns>The awaiter.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.GetHashCode">
<summary>Returns the hash code for this instance.</summary>
<returns>The hash code for the current object.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsCanceled">
<summary>Gets a value that indicates whether this object represents a canceled operation.</summary>
<returns>true if this object represents a canceled operation; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsCompleted">
<summary>Gets a value that indicates whether this object represents a completed operation.</summary>
<returns>true if this object represents a completed operation; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsCompletedSuccessfully">
<summary>Gets a value that indicates whether this object represents a successfully completed operation.</summary>
<returns>true if this object represents a successfully completed operation; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsFaulted">
<summary>Gets a value that indicates whether this object represents a failed operation.</summary>
<returns>true if this object represents a failed operation; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.op_Equality(System.Threading.Tasks.ValueTask{`0},System.Threading.Tasks.ValueTask{`0})">
<summary>Compares two values for equality.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The second value to compare.</param>
<returns>true if the two <see cref="ValueTask{TResult}"></see> values are equal; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.op_Inequality(System.Threading.Tasks.ValueTask{`0},System.Threading.Tasks.ValueTask{`0})">
<summary>Determines whether two <see cref="ValueTask{TResult}"></see> values are unequal.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The seconed value to compare.</param>
<returns>true if the two <see cref="ValueTask{TResult}"></see> values are not equal; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.Result">
<summary>Gets the result.</summary>
<returns>The result.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.ToString">
<summary>Returns a string that represents the current object.</summary>
<returns>A string that represents the current object.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute">
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.#ctor(System.Type)">
<param name="builderType"></param>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.BuilderType">
<returns></returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.AwaitOnCompleted``2(``0@,``1@)">
<param name="awaiter"></param>
<param name="stateMachine"></param>
<typeparam name="TAwaiter"></typeparam>
<typeparam name="TStateMachine"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.AwaitUnsafeOnCompleted``2(``0@,``1@)">
<param name="awaiter"></param>
<param name="stateMachine"></param>
<typeparam name="TAwaiter"></typeparam>
<typeparam name="TStateMachine"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.Create">
<returns></returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetException(System.Exception)">
<param name="exception"></param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetResult(`0)">
<param name="result"></param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
<param name="stateMachine"></param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.Start``1(``0@)">
<param name="stateMachine"></param>
<typeparam name="TStateMachine"></typeparam>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.Task">
<returns></returns>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult">
<returns></returns>
</member>
<member name="P:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.IsCompleted">
<returns></returns>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.OnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.UnsafeOnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.GetAwaiter">
<returns></returns>
</member>
</members>
</doc>

BIN
bin/Debug/ZstdSharp.dll Normal file

Binary file not shown.

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

View File

@ -0,0 +1 @@
bf31eab6fe4b8c7b6f3ab799e111a29b034834f2f44782bfcdb92c6939c4cebe

View File

@ -0,0 +1,43 @@
C:\Users\Student\source\repos\Musical\obj\Debug\Musical.csproj.AssemblyReference.cache
C:\Users\Student\source\repos\Musical\obj\Debug\Musical.Form1.resources
C:\Users\Student\source\repos\Musical\obj\Debug\Musical.Properties.Resources.resources
C:\Users\Student\source\repos\Musical\obj\Debug\Musical.csproj.GenerateResource.cache
C:\Users\Student\source\repos\Musical\obj\Debug\Musical.csproj.CoreCompileInputs.cache
C:\Users\Student\source\repos\Musical\bin\Debug\Musical.exe.config
C:\Users\Student\source\repos\Musical\bin\Debug\Musical.exe
C:\Users\Student\source\repos\Musical\bin\Debug\Musical.pdb
C:\Users\Student\source\repos\Musical\bin\Debug\BCrypt.Net-Next.dll
C:\Users\Student\source\repos\Musical\bin\Debug\BouncyCastle.Cryptography.dll
C:\Users\Student\source\repos\Musical\bin\Debug\Google.Protobuf.dll
C:\Users\Student\source\repos\Musical\bin\Debug\K4os.Compression.LZ4.dll
C:\Users\Student\source\repos\Musical\bin\Debug\K4os.Compression.LZ4.Streams.dll
C:\Users\Student\source\repos\Musical\bin\Debug\K4os.Hash.xxHash.dll
C:\Users\Student\source\repos\Musical\bin\Debug\Microsoft.Bcl.AsyncInterfaces.dll
C:\Users\Student\source\repos\Musical\bin\Debug\MySql.Data.dll
C:\Users\Student\source\repos\Musical\bin\Debug\System.Buffers.dll
C:\Users\Student\source\repos\Musical\bin\Debug\System.Configuration.ConfigurationManager.dll
C:\Users\Student\source\repos\Musical\bin\Debug\System.IO.Pipelines.dll
C:\Users\Student\source\repos\Musical\bin\Debug\System.Memory.dll
C:\Users\Student\source\repos\Musical\bin\Debug\System.Numerics.Vectors.dll
C:\Users\Student\source\repos\Musical\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll
C:\Users\Student\source\repos\Musical\bin\Debug\System.Threading.Tasks.Extensions.dll
C:\Users\Student\source\repos\Musical\bin\Debug\ZstdSharp.dll
C:\Users\Student\source\repos\Musical\bin\Debug\BCrypt.Net-Next.xml
C:\Users\Student\source\repos\Musical\bin\Debug\BouncyCastle.Cryptography.xml
C:\Users\Student\source\repos\Musical\bin\Debug\Google.Protobuf.pdb
C:\Users\Student\source\repos\Musical\bin\Debug\Google.Protobuf.xml
C:\Users\Student\source\repos\Musical\bin\Debug\K4os.Compression.LZ4.xml
C:\Users\Student\source\repos\Musical\bin\Debug\K4os.Compression.LZ4.Streams.xml
C:\Users\Student\source\repos\Musical\bin\Debug\K4os.Hash.xxHash.xml
C:\Users\Student\source\repos\Musical\bin\Debug\Microsoft.Bcl.AsyncInterfaces.xml
C:\Users\Student\source\repos\Musical\bin\Debug\MySql.Data.xml
C:\Users\Student\source\repos\Musical\bin\Debug\System.Buffers.xml
C:\Users\Student\source\repos\Musical\bin\Debug\System.Configuration.ConfigurationManager.xml
C:\Users\Student\source\repos\Musical\bin\Debug\System.IO.Pipelines.xml
C:\Users\Student\source\repos\Musical\bin\Debug\System.Memory.xml
C:\Users\Student\source\repos\Musical\bin\Debug\System.Numerics.Vectors.xml
C:\Users\Student\source\repos\Musical\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml
C:\Users\Student\source\repos\Musical\bin\Debug\System.Threading.Tasks.Extensions.xml
C:\Users\Student\source\repos\Musical\obj\Debug\Musical.csproj.CopyComplete
C:\Users\Student\source\repos\Musical\obj\Debug\Musical.exe
C:\Users\Student\source\repos\Musical\obj\Debug\Musical.pdb

Binary file not shown.

BIN
obj/Debug/Musical.exe Normal file

Binary file not shown.

BIN
obj/Debug/Musical.pdb Normal file

Binary file not shown.

19
packages.config Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="BCrypt.Net-Next" version="4.0.3" targetFramework="net48" />
<package id="BouncyCastle.Cryptography" version="2.6.2" targetFramework="net48" />
<package id="Google.Protobuf" version="3.32.0" targetFramework="net48" />
<package id="K4os.Compression.LZ4" version="1.3.8" targetFramework="net48" />
<package id="K4os.Compression.LZ4.Streams" version="1.3.8" targetFramework="net48" />
<package id="K4os.Hash.xxHash" version="1.0.8" targetFramework="net48" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net48" />
<package id="MySql.Data" version="9.5.0" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Configuration.ConfigurationManager" version="8.0.0" targetFramework="net48" />
<package id="System.IO.Pipelines" version="5.0.2" targetFramework="net48" />
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
<package id="ZstdSharp.Port" version="0.8.6" targetFramework="net48" />
</packages>

Binary file not shown.

Binary file not shown.

BIN
packages/BCrypt.Net-Next.4.0.3/ico.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

View File

@ -0,0 +1,424 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BCrypt.Net-Next</name>
</assembly>
<members>
<member name="T:BCrypt.Net.BCrypt">
<summary>BCrypt implementation.</summary>
<remarks>
<para>
BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
<a href="http://www.usenix.org/event/usenix99/provos/provos_html/index.html">"A Future-
Adaptable Password Scheme"</a> by Niels Provos and David Mazieres.
</para>
<para>
This password hashing system tries to thwart off-line password cracking using a
computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
The work factor of the algorithm is parameterised, so it can be increased as computers
get faster.
</para>
<para>
To hash a password using the defaults, call the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String)"/> (which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.HashPassword(plain_password);</code>
<para>
To hash a password using SHA384 pre-hashing for increased entropy call <see cref="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)"/>
(which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.EnhancedHashPassword(plain_password);</code>
<para>
To check whether a plaintext password matches one that has been hashed previously,
use the <see cref="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)"/> method:
(To validate an enhanced hash you can pass true as the last parameter of Verify or use <see cref="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)"/>)
</para>
<code>
if (BCrypt.Verify(candidate_password, stored_hash))
Console.WriteLine("It matches");
else
Console.WriteLine("It does not match");
</code>
<para>
The <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/> method takes an optional parameter (workFactor) that
determines the computational complexity of the hashing:
</para>
<code>
string strong_salt = BCrypt.GenerateSalt(10);
string stronger_salt = BCrypt.GenerateSalt(12);
</code>
<para>
The amount of work increases exponentially (2^workFactor), so each increment is twice
as much work. The default workFactor is 10, and the valid range is 4 to 31.
</para>
</remarks>
</member>
<member name="F:BCrypt.Net.BCrypt.DefaultRounds">
<summary>
Default Work Factor
</summary>
</member>
<member name="F:BCrypt.Net.BCrypt.RngCsp">
<summary>
RandomNumberGenerator.Create calls RandomNumberGenerator.Create("System.Security.Cryptography.RandomNumberGenerator"), which will create an instance of RNGCryptoServiceProvider.
https://msdn.microsoft.com/en-us/library/42ks8fz1
</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType,System.String,System.Boolean,BCrypt.Net.HashType,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="currentKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="oldHashType">HashType used (default SHA384)</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="newKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="newHashType">HashType to use (default SHA384)</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.HashString(System.String,System.Int32)">
<summary>
Hash a string using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<remarks>Just an alias for HashPassword.</remarks>
<param name="inputKey"> The string to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<returns>The hashed string.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32,BCrypt.Net.HashType)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,BCrypt.Net.HashType,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor">Defaults to 11</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.Int32,System.Boolean)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)"/> using the given <paramref name="workFactor"/>.
</summary>
<param name="inputKey"> The password to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<returns>The hashed password</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<param name="enhancedEntropy">Set to true,the string will undergo hashing (defaults to SHA384 then base64 encoding) to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="inputKey"/> is null.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHash(System.Byte[],System.Char,BCrypt.Net.HashType)">
<summary>
Hashes key, base64 encodes before returning byte array
</summary>
<param name="inputBytes"></param>
<param name="bcryptMinorRevision"></param>
<param name="hashType"></param>
<returns></returns>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method.
</summary>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2**workFactor.</param>
<param name="bcryptMinorRevision"></param>
<exception cref="T:System.ArgumentOutOfRangeException">Work factor must be between 4 and 31</exception>
<returns>A base64 encoded salt value.</returns>
<exception cref="T:System.ArgumentException">BCrypt Revision should be a, b, x or y</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.PasswordNeedsRehash(System.String,System.Int32)">
<summary>
Based on password_needs_rehash in PHP this method will return true
if the work factor (logrounds) set on the hash is lower than the new minimum workload passed in
</summary>
<param name="hash">full bcrypt hash</param>
<param name="newMinimumWorkLoad">target workload</param>
<returns>true if new work factor is higher than the one in the hash</returns>
<exception cref="T:System.ArgumentException">throws if the current hash workload (logrounds) can not be parsed</exception>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.InterrogateHash(System.String)">
<summary>
Takes a valid hash and outputs its component parts
</summary>
<param name="hash"></param>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method
selecting a reasonable default for the number of hashing rounds to apply.
</summary>
<returns>A base64 encoded salt value.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>; the string will undergo SHA384 hashing to maintain the enhanced entropy work done during hashing
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EncodeBase64(System.Byte[],System.Int32)">
<summary>
Encode a byte array using BCrypt's slightly-modified base64 encoding scheme. Note that this
is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="byteArray">The byte array to encode.</param>
<param name="length"> The number of bytes to encode.</param>
<returns>Base64-encoded string.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.DecodeBase64(System.String,System.Int32)">
<summary>
Decode a string encoded using BCrypt's base64 scheme to a byte array.
Note that this is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="encodedString">The string to decode.</param>
<param name="maximumBytes"> The maximum bytes to decode.</param>
<returns>The decoded byte array.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Char64(System.Char)">
<summary>
Look up the 3 bits base64-encoded by the specified character, range-checking against
conversion table.
</summary>
<param name="character">The base64-encoded value.</param>
<returns>The decoded value of x.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Encipher(System.UInt32[],System.Int32)">
<summary>Blowfish encipher a single 64-bit block encoded as two 32-bit halves.</summary>
<param name="blockArray">An array containing the two 32-bit half blocks.</param>
<param name="offset"> The position in the array of the blocks.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.StreamToWord(System.Byte[],System.Int32@)">
<summary>Cyclically extract a word of key material.</summary>
<param name="data">The string to extract the data from.</param>
<param name="offset"> [in,out] The current offset.</param>
<returns>The next word of material from data.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.InitializeKey">
<summary>Initializes the Blowfish key schedule.</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.Key(System.Byte[])">
<summary>Key the Blowfish cipher.</summary>
<param name="keyBytes">The key byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.EKSKey(System.Byte[],System.Byte[])">
<summary>
Perform the "enhanced key schedule" step described by Provos and Mazieres in
"A Future Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
</summary>
<param name="saltBytes"> Salt byte array.</param>
<param name="inputBytes">Input byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.CryptRaw(System.Byte[],System.Byte[],System.Int32)">
<summary>Perform the central hashing step in the BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="inputBytes">The input byte array to hash.</param>
<param name="saltBytes"> The salt byte array to hash with.</param>
<param name="workFactor"> The binary logarithm of the number of rounds of hashing to apply.</param>
<returns>A byte array containing the hashed result.</returns>
</member>
<member name="T:BCrypt.Net.BcryptAuthenticationException">
<inheritdoc />
<summary>Exception for signalling hash validation errors. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor">
<inheritdoc />
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String,System.Exception)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="T:BCrypt.Net.HashInformation">
<summary>
HashInformation : A value object that contains the results of interrogating a hash
Namely its settings (2a$10 for example); version (2a); workfactor (log rounds), and the raw hash returned
</summary>
</member>
<member name="M:BCrypt.Net.HashInformation.#ctor(System.String,System.String,System.String,System.String)">
<summary>Constructor. </summary>
<param name="settings">The message.</param>
<param name="version">The message.</param>
<param name="workFactor">The message.</param>
<param name="rawHash">The message.</param>
</member>
<member name="P:BCrypt.Net.HashInformation.Settings">
<summary>
Settings string
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.Version">
<summary>
Hash Version
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.WorkFactor">
<summary>
log rounds used / workfactor
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.RawHash">
<summary>
Raw Hash
</summary>
</member>
<member name="T:BCrypt.Net.HashInformationException">
<summary>
Exception used to signal errors that occur during use of the hash information methods
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
<param name="innerException"></param>
</member>
<member name="T:BCrypt.Net.HashType">
<summary>
Type of SHA implementation to use
Keys will be hashed, then base64 encoded before being passed to crypt.
Unless legacy is selected in which case simply SHA384 hashed.
</summary>
</member>
<member name="T:BCrypt.Net.SaltParseException">
<summary>Exception for signalling parse errors during salt checks. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor">
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,424 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BCrypt.Net-Next</name>
</assembly>
<members>
<member name="T:BCrypt.Net.BCrypt">
<summary>BCrypt implementation.</summary>
<remarks>
<para>
BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
<a href="http://www.usenix.org/event/usenix99/provos/provos_html/index.html">"A Future-
Adaptable Password Scheme"</a> by Niels Provos and David Mazieres.
</para>
<para>
This password hashing system tries to thwart off-line password cracking using a
computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
The work factor of the algorithm is parameterised, so it can be increased as computers
get faster.
</para>
<para>
To hash a password using the defaults, call the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String)"/> (which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.HashPassword(plain_password);</code>
<para>
To hash a password using SHA384 pre-hashing for increased entropy call <see cref="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)"/>
(which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.EnhancedHashPassword(plain_password);</code>
<para>
To check whether a plaintext password matches one that has been hashed previously,
use the <see cref="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)"/> method:
(To validate an enhanced hash you can pass true as the last parameter of Verify or use <see cref="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)"/>)
</para>
<code>
if (BCrypt.Verify(candidate_password, stored_hash))
Console.WriteLine("It matches");
else
Console.WriteLine("It does not match");
</code>
<para>
The <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/> method takes an optional parameter (workFactor) that
determines the computational complexity of the hashing:
</para>
<code>
string strong_salt = BCrypt.GenerateSalt(10);
string stronger_salt = BCrypt.GenerateSalt(12);
</code>
<para>
The amount of work increases exponentially (2^workFactor), so each increment is twice
as much work. The default workFactor is 10, and the valid range is 4 to 31.
</para>
</remarks>
</member>
<member name="F:BCrypt.Net.BCrypt.DefaultRounds">
<summary>
Default Work Factor
</summary>
</member>
<member name="F:BCrypt.Net.BCrypt.RngCsp">
<summary>
RandomNumberGenerator.Create calls RandomNumberGenerator.Create("System.Security.Cryptography.RandomNumberGenerator"), which will create an instance of RNGCryptoServiceProvider.
https://msdn.microsoft.com/en-us/library/42ks8fz1
</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType,System.String,System.Boolean,BCrypt.Net.HashType,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="currentKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="oldHashType">HashType used (default SHA384)</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="newKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="newHashType">HashType to use (default SHA384)</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.HashString(System.String,System.Int32)">
<summary>
Hash a string using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<remarks>Just an alias for HashPassword.</remarks>
<param name="inputKey"> The string to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<returns>The hashed string.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32,BCrypt.Net.HashType)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,BCrypt.Net.HashType,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor">Defaults to 11</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.Int32,System.Boolean)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)"/> using the given <paramref name="workFactor"/>.
</summary>
<param name="inputKey"> The password to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<returns>The hashed password</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<param name="enhancedEntropy">Set to true,the string will undergo hashing (defaults to SHA384 then base64 encoding) to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="inputKey"/> is null.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHash(System.Byte[],System.Char,BCrypt.Net.HashType)">
<summary>
Hashes key, base64 encodes before returning byte array
</summary>
<param name="inputBytes"></param>
<param name="bcryptMinorRevision"></param>
<param name="hashType"></param>
<returns></returns>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method.
</summary>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2**workFactor.</param>
<param name="bcryptMinorRevision"></param>
<exception cref="T:System.ArgumentOutOfRangeException">Work factor must be between 4 and 31</exception>
<returns>A base64 encoded salt value.</returns>
<exception cref="T:System.ArgumentException">BCrypt Revision should be a, b, x or y</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.PasswordNeedsRehash(System.String,System.Int32)">
<summary>
Based on password_needs_rehash in PHP this method will return true
if the work factor (logrounds) set on the hash is lower than the new minimum workload passed in
</summary>
<param name="hash">full bcrypt hash</param>
<param name="newMinimumWorkLoad">target workload</param>
<returns>true if new work factor is higher than the one in the hash</returns>
<exception cref="T:System.ArgumentException">throws if the current hash workload (logrounds) can not be parsed</exception>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.InterrogateHash(System.String)">
<summary>
Takes a valid hash and outputs its component parts
</summary>
<param name="hash"></param>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method
selecting a reasonable default for the number of hashing rounds to apply.
</summary>
<returns>A base64 encoded salt value.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>; the string will undergo SHA384 hashing to maintain the enhanced entropy work done during hashing
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EncodeBase64(System.Byte[],System.Int32)">
<summary>
Encode a byte array using BCrypt's slightly-modified base64 encoding scheme. Note that this
is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="byteArray">The byte array to encode.</param>
<param name="length"> The number of bytes to encode.</param>
<returns>Base64-encoded string.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.DecodeBase64(System.String,System.Int32)">
<summary>
Decode a string encoded using BCrypt's base64 scheme to a byte array.
Note that this is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="encodedString">The string to decode.</param>
<param name="maximumBytes"> The maximum bytes to decode.</param>
<returns>The decoded byte array.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Char64(System.Char)">
<summary>
Look up the 3 bits base64-encoded by the specified character, range-checking against
conversion table.
</summary>
<param name="character">The base64-encoded value.</param>
<returns>The decoded value of x.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Encipher(System.UInt32[],System.Int32)">
<summary>Blowfish encipher a single 64-bit block encoded as two 32-bit halves.</summary>
<param name="blockArray">An array containing the two 32-bit half blocks.</param>
<param name="offset"> The position in the array of the blocks.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.StreamToWord(System.Byte[],System.Int32@)">
<summary>Cyclically extract a word of key material.</summary>
<param name="data">The string to extract the data from.</param>
<param name="offset"> [in,out] The current offset.</param>
<returns>The next word of material from data.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.InitializeKey">
<summary>Initializes the Blowfish key schedule.</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.Key(System.Byte[])">
<summary>Key the Blowfish cipher.</summary>
<param name="keyBytes">The key byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.EKSKey(System.Byte[],System.Byte[])">
<summary>
Perform the "enhanced key schedule" step described by Provos and Mazieres in
"A Future Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
</summary>
<param name="saltBytes"> Salt byte array.</param>
<param name="inputBytes">Input byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.CryptRaw(System.Byte[],System.Byte[],System.Int32)">
<summary>Perform the central hashing step in the BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="inputBytes">The input byte array to hash.</param>
<param name="saltBytes"> The salt byte array to hash with.</param>
<param name="workFactor"> The binary logarithm of the number of rounds of hashing to apply.</param>
<returns>A byte array containing the hashed result.</returns>
</member>
<member name="T:BCrypt.Net.BcryptAuthenticationException">
<inheritdoc />
<summary>Exception for signalling hash validation errors. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor">
<inheritdoc />
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String,System.Exception)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="T:BCrypt.Net.HashInformation">
<summary>
HashInformation : A value object that contains the results of interrogating a hash
Namely its settings (2a$10 for example); version (2a); workfactor (log rounds), and the raw hash returned
</summary>
</member>
<member name="M:BCrypt.Net.HashInformation.#ctor(System.String,System.String,System.String,System.String)">
<summary>Constructor. </summary>
<param name="settings">The message.</param>
<param name="version">The message.</param>
<param name="workFactor">The message.</param>
<param name="rawHash">The message.</param>
</member>
<member name="P:BCrypt.Net.HashInformation.Settings">
<summary>
Settings string
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.Version">
<summary>
Hash Version
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.WorkFactor">
<summary>
log rounds used / workfactor
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.RawHash">
<summary>
Raw Hash
</summary>
</member>
<member name="T:BCrypt.Net.HashInformationException">
<summary>
Exception used to signal errors that occur during use of the hash information methods
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
<param name="innerException"></param>
</member>
<member name="T:BCrypt.Net.HashType">
<summary>
Type of SHA implementation to use
Keys will be hashed, then base64 encoded before being passed to crypt.
Unless legacy is selected in which case simply SHA384 hashed.
</summary>
</member>
<member name="T:BCrypt.Net.SaltParseException">
<summary>Exception for signalling parse errors during salt checks. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor">
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,424 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BCrypt.Net-Next</name>
</assembly>
<members>
<member name="T:BCrypt.Net.BCrypt">
<summary>BCrypt implementation.</summary>
<remarks>
<para>
BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
<a href="http://www.usenix.org/event/usenix99/provos/provos_html/index.html">"A Future-
Adaptable Password Scheme"</a> by Niels Provos and David Mazieres.
</para>
<para>
This password hashing system tries to thwart off-line password cracking using a
computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
The work factor of the algorithm is parameterised, so it can be increased as computers
get faster.
</para>
<para>
To hash a password using the defaults, call the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String)"/> (which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.HashPassword(plain_password);</code>
<para>
To hash a password using SHA384 pre-hashing for increased entropy call <see cref="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)"/>
(which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.EnhancedHashPassword(plain_password);</code>
<para>
To check whether a plaintext password matches one that has been hashed previously,
use the <see cref="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)"/> method:
(To validate an enhanced hash you can pass true as the last parameter of Verify or use <see cref="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)"/>)
</para>
<code>
if (BCrypt.Verify(candidate_password, stored_hash))
Console.WriteLine("It matches");
else
Console.WriteLine("It does not match");
</code>
<para>
The <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/> method takes an optional parameter (workFactor) that
determines the computational complexity of the hashing:
</para>
<code>
string strong_salt = BCrypt.GenerateSalt(10);
string stronger_salt = BCrypt.GenerateSalt(12);
</code>
<para>
The amount of work increases exponentially (2^workFactor), so each increment is twice
as much work. The default workFactor is 10, and the valid range is 4 to 31.
</para>
</remarks>
</member>
<member name="F:BCrypt.Net.BCrypt.DefaultRounds">
<summary>
Default Work Factor
</summary>
</member>
<member name="F:BCrypt.Net.BCrypt.RngCsp">
<summary>
RandomNumberGenerator.Create calls RandomNumberGenerator.Create("System.Security.Cryptography.RandomNumberGenerator"), which will create an instance of RNGCryptoServiceProvider.
https://msdn.microsoft.com/en-us/library/42ks8fz1
</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType,System.String,System.Boolean,BCrypt.Net.HashType,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="currentKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="oldHashType">HashType used (default SHA384)</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="newKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="newHashType">HashType to use (default SHA384)</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.HashString(System.String,System.Int32)">
<summary>
Hash a string using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<remarks>Just an alias for HashPassword.</remarks>
<param name="inputKey"> The string to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<returns>The hashed string.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32,BCrypt.Net.HashType)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,BCrypt.Net.HashType,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor">Defaults to 11</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.Int32,System.Boolean)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)"/> using the given <paramref name="workFactor"/>.
</summary>
<param name="inputKey"> The password to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<returns>The hashed password</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<param name="enhancedEntropy">Set to true,the string will undergo hashing (defaults to SHA384 then base64 encoding) to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="inputKey"/> is null.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHash(System.Byte[],System.Char,BCrypt.Net.HashType)">
<summary>
Hashes key, base64 encodes before returning byte array
</summary>
<param name="inputBytes"></param>
<param name="bcryptMinorRevision"></param>
<param name="hashType"></param>
<returns></returns>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method.
</summary>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2**workFactor.</param>
<param name="bcryptMinorRevision"></param>
<exception cref="T:System.ArgumentOutOfRangeException">Work factor must be between 4 and 31</exception>
<returns>A base64 encoded salt value.</returns>
<exception cref="T:System.ArgumentException">BCrypt Revision should be a, b, x or y</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.PasswordNeedsRehash(System.String,System.Int32)">
<summary>
Based on password_needs_rehash in PHP this method will return true
if the work factor (logrounds) set on the hash is lower than the new minimum workload passed in
</summary>
<param name="hash">full bcrypt hash</param>
<param name="newMinimumWorkLoad">target workload</param>
<returns>true if new work factor is higher than the one in the hash</returns>
<exception cref="T:System.ArgumentException">throws if the current hash workload (logrounds) can not be parsed</exception>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.InterrogateHash(System.String)">
<summary>
Takes a valid hash and outputs its component parts
</summary>
<param name="hash"></param>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method
selecting a reasonable default for the number of hashing rounds to apply.
</summary>
<returns>A base64 encoded salt value.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>; the string will undergo SHA384 hashing to maintain the enhanced entropy work done during hashing
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EncodeBase64(System.Byte[],System.Int32)">
<summary>
Encode a byte array using BCrypt's slightly-modified base64 encoding scheme. Note that this
is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="byteArray">The byte array to encode.</param>
<param name="length"> The number of bytes to encode.</param>
<returns>Base64-encoded string.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.DecodeBase64(System.String,System.Int32)">
<summary>
Decode a string encoded using BCrypt's base64 scheme to a byte array.
Note that this is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="encodedString">The string to decode.</param>
<param name="maximumBytes"> The maximum bytes to decode.</param>
<returns>The decoded byte array.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Char64(System.Char)">
<summary>
Look up the 3 bits base64-encoded by the specified character, range-checking against
conversion table.
</summary>
<param name="character">The base64-encoded value.</param>
<returns>The decoded value of x.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Encipher(System.UInt32[],System.Int32)">
<summary>Blowfish encipher a single 64-bit block encoded as two 32-bit halves.</summary>
<param name="blockArray">An array containing the two 32-bit half blocks.</param>
<param name="offset"> The position in the array of the blocks.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.StreamToWord(System.Byte[],System.Int32@)">
<summary>Cyclically extract a word of key material.</summary>
<param name="data">The string to extract the data from.</param>
<param name="offset"> [in,out] The current offset.</param>
<returns>The next word of material from data.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.InitializeKey">
<summary>Initializes the Blowfish key schedule.</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.Key(System.Byte[])">
<summary>Key the Blowfish cipher.</summary>
<param name="keyBytes">The key byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.EKSKey(System.Byte[],System.Byte[])">
<summary>
Perform the "enhanced key schedule" step described by Provos and Mazieres in
"A Future Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
</summary>
<param name="saltBytes"> Salt byte array.</param>
<param name="inputBytes">Input byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.CryptRaw(System.Byte[],System.Byte[],System.Int32)">
<summary>Perform the central hashing step in the BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="inputBytes">The input byte array to hash.</param>
<param name="saltBytes"> The salt byte array to hash with.</param>
<param name="workFactor"> The binary logarithm of the number of rounds of hashing to apply.</param>
<returns>A byte array containing the hashed result.</returns>
</member>
<member name="T:BCrypt.Net.BcryptAuthenticationException">
<inheritdoc />
<summary>Exception for signalling hash validation errors. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor">
<inheritdoc />
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String,System.Exception)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="T:BCrypt.Net.HashInformation">
<summary>
HashInformation : A value object that contains the results of interrogating a hash
Namely its settings (2a$10 for example); version (2a); workfactor (log rounds), and the raw hash returned
</summary>
</member>
<member name="M:BCrypt.Net.HashInformation.#ctor(System.String,System.String,System.String,System.String)">
<summary>Constructor. </summary>
<param name="settings">The message.</param>
<param name="version">The message.</param>
<param name="workFactor">The message.</param>
<param name="rawHash">The message.</param>
</member>
<member name="P:BCrypt.Net.HashInformation.Settings">
<summary>
Settings string
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.Version">
<summary>
Hash Version
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.WorkFactor">
<summary>
log rounds used / workfactor
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.RawHash">
<summary>
Raw Hash
</summary>
</member>
<member name="T:BCrypt.Net.HashInformationException">
<summary>
Exception used to signal errors that occur during use of the hash information methods
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
<param name="innerException"></param>
</member>
<member name="T:BCrypt.Net.HashType">
<summary>
Type of SHA implementation to use
Keys will be hashed, then base64 encoded before being passed to crypt.
Unless legacy is selected in which case simply SHA384 hashed.
</summary>
</member>
<member name="T:BCrypt.Net.SaltParseException">
<summary>Exception for signalling parse errors during salt checks. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor">
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,424 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BCrypt.Net-Next</name>
</assembly>
<members>
<member name="T:BCrypt.Net.BCrypt">
<summary>BCrypt implementation.</summary>
<remarks>
<para>
BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
<a href="http://www.usenix.org/event/usenix99/provos/provos_html/index.html">"A Future-
Adaptable Password Scheme"</a> by Niels Provos and David Mazieres.
</para>
<para>
This password hashing system tries to thwart off-line password cracking using a
computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
The work factor of the algorithm is parameterised, so it can be increased as computers
get faster.
</para>
<para>
To hash a password using the defaults, call the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String)"/> (which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.HashPassword(plain_password);</code>
<para>
To hash a password using SHA384 pre-hashing for increased entropy call <see cref="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)"/>
(which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.EnhancedHashPassword(plain_password);</code>
<para>
To check whether a plaintext password matches one that has been hashed previously,
use the <see cref="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)"/> method:
(To validate an enhanced hash you can pass true as the last parameter of Verify or use <see cref="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)"/>)
</para>
<code>
if (BCrypt.Verify(candidate_password, stored_hash))
Console.WriteLine("It matches");
else
Console.WriteLine("It does not match");
</code>
<para>
The <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/> method takes an optional parameter (workFactor) that
determines the computational complexity of the hashing:
</para>
<code>
string strong_salt = BCrypt.GenerateSalt(10);
string stronger_salt = BCrypt.GenerateSalt(12);
</code>
<para>
The amount of work increases exponentially (2^workFactor), so each increment is twice
as much work. The default workFactor is 10, and the valid range is 4 to 31.
</para>
</remarks>
</member>
<member name="F:BCrypt.Net.BCrypt.DefaultRounds">
<summary>
Default Work Factor
</summary>
</member>
<member name="F:BCrypt.Net.BCrypt.RngCsp">
<summary>
RandomNumberGenerator.Create calls RandomNumberGenerator.Create("System.Security.Cryptography.RandomNumberGenerator"), which will create an instance of RNGCryptoServiceProvider.
https://msdn.microsoft.com/en-us/library/42ks8fz1
</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType,System.String,System.Boolean,BCrypt.Net.HashType,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="currentKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="oldHashType">HashType used (default SHA384)</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="newKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="newHashType">HashType to use (default SHA384)</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.HashString(System.String,System.Int32)">
<summary>
Hash a string using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<remarks>Just an alias for HashPassword.</remarks>
<param name="inputKey"> The string to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<returns>The hashed string.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32,BCrypt.Net.HashType)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,BCrypt.Net.HashType,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor">Defaults to 11</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.Int32,System.Boolean)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)"/> using the given <paramref name="workFactor"/>.
</summary>
<param name="inputKey"> The password to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<returns>The hashed password</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<param name="enhancedEntropy">Set to true,the string will undergo hashing (defaults to SHA384 then base64 encoding) to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="inputKey"/> is null.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHash(System.Byte[],System.Char,BCrypt.Net.HashType)">
<summary>
Hashes key, base64 encodes before returning byte array
</summary>
<param name="inputBytes"></param>
<param name="bcryptMinorRevision"></param>
<param name="hashType"></param>
<returns></returns>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method.
</summary>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2**workFactor.</param>
<param name="bcryptMinorRevision"></param>
<exception cref="T:System.ArgumentOutOfRangeException">Work factor must be between 4 and 31</exception>
<returns>A base64 encoded salt value.</returns>
<exception cref="T:System.ArgumentException">BCrypt Revision should be a, b, x or y</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.PasswordNeedsRehash(System.String,System.Int32)">
<summary>
Based on password_needs_rehash in PHP this method will return true
if the work factor (logrounds) set on the hash is lower than the new minimum workload passed in
</summary>
<param name="hash">full bcrypt hash</param>
<param name="newMinimumWorkLoad">target workload</param>
<returns>true if new work factor is higher than the one in the hash</returns>
<exception cref="T:System.ArgumentException">throws if the current hash workload (logrounds) can not be parsed</exception>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.InterrogateHash(System.String)">
<summary>
Takes a valid hash and outputs its component parts
</summary>
<param name="hash"></param>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method
selecting a reasonable default for the number of hashing rounds to apply.
</summary>
<returns>A base64 encoded salt value.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>; the string will undergo SHA384 hashing to maintain the enhanced entropy work done during hashing
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EncodeBase64(System.Byte[],System.Int32)">
<summary>
Encode a byte array using BCrypt's slightly-modified base64 encoding scheme. Note that this
is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="byteArray">The byte array to encode.</param>
<param name="length"> The number of bytes to encode.</param>
<returns>Base64-encoded string.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.DecodeBase64(System.String,System.Int32)">
<summary>
Decode a string encoded using BCrypt's base64 scheme to a byte array.
Note that this is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="encodedString">The string to decode.</param>
<param name="maximumBytes"> The maximum bytes to decode.</param>
<returns>The decoded byte array.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Char64(System.Char)">
<summary>
Look up the 3 bits base64-encoded by the specified character, range-checking against
conversion table.
</summary>
<param name="character">The base64-encoded value.</param>
<returns>The decoded value of x.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Encipher(System.Span{System.UInt32},System.Int32)">
<summary>Blowfish encipher a single 64-bit block encoded as two 32-bit halves.</summary>
<param name="blockArray">An array containing the two 32-bit half blocks.</param>
<param name="offset"> The position in the array of the blocks.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.StreamToWord(System.ReadOnlySpan{System.Byte},System.Int32@)">
<summary>Cyclically extract a word of key material.</summary>
<param name="data">The string to extract the data from.</param>
<param name="offset"> [in,out] The current offset.</param>
<returns>The next word of material from data.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.InitializeKey">
<summary>Initializes the Blowfish key schedule.</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.Key(System.ReadOnlySpan{System.Byte})">
<summary>Key the Blowfish cipher.</summary>
<param name="keyBytes">The key byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.EKSKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Perform the "enhanced key schedule" step described by Provos and Mazieres in
"A Future Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
</summary>
<param name="saltBytes"> Salt byte array.</param>
<param name="inputBytes">Input byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.CryptRaw(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32)">
<summary>Perform the central hashing step in the BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="inputBytes">The input byte array to hash.</param>
<param name="saltBytes"> The salt byte array to hash with.</param>
<param name="workFactor"> The binary logarithm of the number of rounds of hashing to apply.</param>
<returns>A byte array containing the hashed result.</returns>
</member>
<member name="T:BCrypt.Net.BcryptAuthenticationException">
<inheritdoc />
<summary>Exception for signalling hash validation errors. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor">
<inheritdoc />
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String,System.Exception)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="T:BCrypt.Net.HashInformation">
<summary>
HashInformation : A value object that contains the results of interrogating a hash
Namely its settings (2a$10 for example); version (2a); workfactor (log rounds), and the raw hash returned
</summary>
</member>
<member name="M:BCrypt.Net.HashInformation.#ctor(System.String,System.String,System.String,System.String)">
<summary>Constructor. </summary>
<param name="settings">The message.</param>
<param name="version">The message.</param>
<param name="workFactor">The message.</param>
<param name="rawHash">The message.</param>
</member>
<member name="P:BCrypt.Net.HashInformation.Settings">
<summary>
Settings string
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.Version">
<summary>
Hash Version
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.WorkFactor">
<summary>
log rounds used / workfactor
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.RawHash">
<summary>
Raw Hash
</summary>
</member>
<member name="T:BCrypt.Net.HashInformationException">
<summary>
Exception used to signal errors that occur during use of the hash information methods
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
<param name="innerException"></param>
</member>
<member name="T:BCrypt.Net.HashType">
<summary>
Type of SHA implementation to use
Keys will be hashed, then base64 encoded before being passed to crypt.
Unless legacy is selected in which case simply SHA384 hashed.
</summary>
</member>
<member name="T:BCrypt.Net.SaltParseException">
<summary>Exception for signalling parse errors during salt checks. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor">
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,424 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BCrypt.Net-Next</name>
</assembly>
<members>
<member name="T:BCrypt.Net.BCrypt">
<summary>BCrypt implementation.</summary>
<remarks>
<para>
BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
<a href="http://www.usenix.org/event/usenix99/provos/provos_html/index.html">"A Future-
Adaptable Password Scheme"</a> by Niels Provos and David Mazieres.
</para>
<para>
This password hashing system tries to thwart off-line password cracking using a
computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
The work factor of the algorithm is parameterised, so it can be increased as computers
get faster.
</para>
<para>
To hash a password using the defaults, call the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String)"/> (which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.HashPassword(plain_password);</code>
<para>
To hash a password using SHA384 pre-hashing for increased entropy call <see cref="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)"/>
(which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.EnhancedHashPassword(plain_password);</code>
<para>
To check whether a plaintext password matches one that has been hashed previously,
use the <see cref="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)"/> method:
(To validate an enhanced hash you can pass true as the last parameter of Verify or use <see cref="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)"/>)
</para>
<code>
if (BCrypt.Verify(candidate_password, stored_hash))
Console.WriteLine("It matches");
else
Console.WriteLine("It does not match");
</code>
<para>
The <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/> method takes an optional parameter (workFactor) that
determines the computational complexity of the hashing:
</para>
<code>
string strong_salt = BCrypt.GenerateSalt(10);
string stronger_salt = BCrypt.GenerateSalt(12);
</code>
<para>
The amount of work increases exponentially (2^workFactor), so each increment is twice
as much work. The default workFactor is 10, and the valid range is 4 to 31.
</para>
</remarks>
</member>
<member name="F:BCrypt.Net.BCrypt.DefaultRounds">
<summary>
Default Work Factor
</summary>
</member>
<member name="F:BCrypt.Net.BCrypt.RngCsp">
<summary>
RandomNumberGenerator.Create calls RandomNumberGenerator.Create("System.Security.Cryptography.RandomNumberGenerator"), which will create an instance of RNGCryptoServiceProvider.
https://msdn.microsoft.com/en-us/library/42ks8fz1
</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType,System.String,System.Boolean,BCrypt.Net.HashType,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="currentKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="oldHashType">HashType used (default SHA384)</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="newKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="newHashType">HashType to use (default SHA384)</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.HashString(System.String,System.Int32)">
<summary>
Hash a string using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<remarks>Just an alias for HashPassword.</remarks>
<param name="inputKey"> The string to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<returns>The hashed string.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32,BCrypt.Net.HashType)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,BCrypt.Net.HashType,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor">Defaults to 11</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.Int32,System.Boolean)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)"/> using the given <paramref name="workFactor"/>.
</summary>
<param name="inputKey"> The password to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<returns>The hashed password</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<param name="enhancedEntropy">Set to true,the string will undergo hashing (defaults to SHA384 then base64 encoding) to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="inputKey"/> is null.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHash(System.Byte[],System.Char,BCrypt.Net.HashType)">
<summary>
Hashes key, base64 encodes before returning byte array
</summary>
<param name="inputBytes"></param>
<param name="bcryptMinorRevision"></param>
<param name="hashType"></param>
<returns></returns>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method.
</summary>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2**workFactor.</param>
<param name="bcryptMinorRevision"></param>
<exception cref="T:System.ArgumentOutOfRangeException">Work factor must be between 4 and 31</exception>
<returns>A base64 encoded salt value.</returns>
<exception cref="T:System.ArgumentException">BCrypt Revision should be a, b, x or y</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.PasswordNeedsRehash(System.String,System.Int32)">
<summary>
Based on password_needs_rehash in PHP this method will return true
if the work factor (logrounds) set on the hash is lower than the new minimum workload passed in
</summary>
<param name="hash">full bcrypt hash</param>
<param name="newMinimumWorkLoad">target workload</param>
<returns>true if new work factor is higher than the one in the hash</returns>
<exception cref="T:System.ArgumentException">throws if the current hash workload (logrounds) can not be parsed</exception>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.InterrogateHash(System.String)">
<summary>
Takes a valid hash and outputs its component parts
</summary>
<param name="hash"></param>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method
selecting a reasonable default for the number of hashing rounds to apply.
</summary>
<returns>A base64 encoded salt value.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>; the string will undergo SHA384 hashing to maintain the enhanced entropy work done during hashing
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EncodeBase64(System.Byte[],System.Int32)">
<summary>
Encode a byte array using BCrypt's slightly-modified base64 encoding scheme. Note that this
is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="byteArray">The byte array to encode.</param>
<param name="length"> The number of bytes to encode.</param>
<returns>Base64-encoded string.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.DecodeBase64(System.String,System.Int32)">
<summary>
Decode a string encoded using BCrypt's base64 scheme to a byte array.
Note that this is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="encodedString">The string to decode.</param>
<param name="maximumBytes"> The maximum bytes to decode.</param>
<returns>The decoded byte array.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Char64(System.Char)">
<summary>
Look up the 3 bits base64-encoded by the specified character, range-checking against
conversion table.
</summary>
<param name="character">The base64-encoded value.</param>
<returns>The decoded value of x.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Encipher(System.Span{System.UInt32},System.Int32)">
<summary>Blowfish encipher a single 64-bit block encoded as two 32-bit halves.</summary>
<param name="blockArray">An array containing the two 32-bit half blocks.</param>
<param name="offset"> The position in the array of the blocks.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.StreamToWord(System.ReadOnlySpan{System.Byte},System.Int32@)">
<summary>Cyclically extract a word of key material.</summary>
<param name="data">The string to extract the data from.</param>
<param name="offset"> [in,out] The current offset.</param>
<returns>The next word of material from data.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.InitializeKey">
<summary>Initializes the Blowfish key schedule.</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.Key(System.ReadOnlySpan{System.Byte})">
<summary>Key the Blowfish cipher.</summary>
<param name="keyBytes">The key byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.EKSKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Perform the "enhanced key schedule" step described by Provos and Mazieres in
"A Future Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
</summary>
<param name="saltBytes"> Salt byte array.</param>
<param name="inputBytes">Input byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.CryptRaw(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32)">
<summary>Perform the central hashing step in the BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="inputBytes">The input byte array to hash.</param>
<param name="saltBytes"> The salt byte array to hash with.</param>
<param name="workFactor"> The binary logarithm of the number of rounds of hashing to apply.</param>
<returns>A byte array containing the hashed result.</returns>
</member>
<member name="T:BCrypt.Net.BcryptAuthenticationException">
<inheritdoc />
<summary>Exception for signalling hash validation errors. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor">
<inheritdoc />
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String,System.Exception)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="T:BCrypt.Net.HashInformation">
<summary>
HashInformation : A value object that contains the results of interrogating a hash
Namely its settings (2a$10 for example); version (2a); workfactor (log rounds), and the raw hash returned
</summary>
</member>
<member name="M:BCrypt.Net.HashInformation.#ctor(System.String,System.String,System.String,System.String)">
<summary>Constructor. </summary>
<param name="settings">The message.</param>
<param name="version">The message.</param>
<param name="workFactor">The message.</param>
<param name="rawHash">The message.</param>
</member>
<member name="P:BCrypt.Net.HashInformation.Settings">
<summary>
Settings string
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.Version">
<summary>
Hash Version
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.WorkFactor">
<summary>
log rounds used / workfactor
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.RawHash">
<summary>
Raw Hash
</summary>
</member>
<member name="T:BCrypt.Net.HashInformationException">
<summary>
Exception used to signal errors that occur during use of the hash information methods
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
<param name="innerException"></param>
</member>
<member name="T:BCrypt.Net.HashType">
<summary>
Type of SHA implementation to use
Keys will be hashed, then base64 encoded before being passed to crypt.
Unless legacy is selected in which case simply SHA384 hashed.
</summary>
</member>
<member name="T:BCrypt.Net.SaltParseException">
<summary>Exception for signalling parse errors during salt checks. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor">
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,424 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BCrypt.Net-Next</name>
</assembly>
<members>
<member name="T:BCrypt.Net.BCrypt">
<summary>BCrypt implementation.</summary>
<remarks>
<para>
BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
<a href="http://www.usenix.org/event/usenix99/provos/provos_html/index.html">"A Future-
Adaptable Password Scheme"</a> by Niels Provos and David Mazieres.
</para>
<para>
This password hashing system tries to thwart off-line password cracking using a
computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
The work factor of the algorithm is parameterised, so it can be increased as computers
get faster.
</para>
<para>
To hash a password using the defaults, call the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String)"/> (which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.HashPassword(plain_password);</code>
<para>
To hash a password using SHA384 pre-hashing for increased entropy call <see cref="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)"/>
(which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.EnhancedHashPassword(plain_password);</code>
<para>
To check whether a plaintext password matches one that has been hashed previously,
use the <see cref="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)"/> method:
(To validate an enhanced hash you can pass true as the last parameter of Verify or use <see cref="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)"/>)
</para>
<code>
if (BCrypt.Verify(candidate_password, stored_hash))
Console.WriteLine("It matches");
else
Console.WriteLine("It does not match");
</code>
<para>
The <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/> method takes an optional parameter (workFactor) that
determines the computational complexity of the hashing:
</para>
<code>
string strong_salt = BCrypt.GenerateSalt(10);
string stronger_salt = BCrypt.GenerateSalt(12);
</code>
<para>
The amount of work increases exponentially (2^workFactor), so each increment is twice
as much work. The default workFactor is 10, and the valid range is 4 to 31.
</para>
</remarks>
</member>
<member name="F:BCrypt.Net.BCrypt.DefaultRounds">
<summary>
Default Work Factor
</summary>
</member>
<member name="F:BCrypt.Net.BCrypt.RngCsp">
<summary>
RandomNumberGenerator.Create calls RandomNumberGenerator.Create("System.Security.Cryptography.RandomNumberGenerator"), which will create an instance of RNGCryptoServiceProvider.
https://msdn.microsoft.com/en-us/library/42ks8fz1
</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType,System.String,System.Boolean,BCrypt.Net.HashType,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="currentKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="oldHashType">HashType used (default SHA384)</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="newKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="newHashType">HashType to use (default SHA384)</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.HashString(System.String,System.Int32)">
<summary>
Hash a string using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<remarks>Just an alias for HashPassword.</remarks>
<param name="inputKey"> The string to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<returns>The hashed string.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32,BCrypt.Net.HashType)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,BCrypt.Net.HashType,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor">Defaults to 11</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.Int32,System.Boolean)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)"/> using the given <paramref name="workFactor"/>.
</summary>
<param name="inputKey"> The password to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<returns>The hashed password</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<param name="enhancedEntropy">Set to true,the string will undergo hashing (defaults to SHA384 then base64 encoding) to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="inputKey"/> is null.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHash(System.Byte[],System.Char,BCrypt.Net.HashType)">
<summary>
Hashes key, base64 encodes before returning byte array
</summary>
<param name="inputBytes"></param>
<param name="bcryptMinorRevision"></param>
<param name="hashType"></param>
<returns></returns>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method.
</summary>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2**workFactor.</param>
<param name="bcryptMinorRevision"></param>
<exception cref="T:System.ArgumentOutOfRangeException">Work factor must be between 4 and 31</exception>
<returns>A base64 encoded salt value.</returns>
<exception cref="T:System.ArgumentException">BCrypt Revision should be a, b, x or y</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.PasswordNeedsRehash(System.String,System.Int32)">
<summary>
Based on password_needs_rehash in PHP this method will return true
if the work factor (logrounds) set on the hash is lower than the new minimum workload passed in
</summary>
<param name="hash">full bcrypt hash</param>
<param name="newMinimumWorkLoad">target workload</param>
<returns>true if new work factor is higher than the one in the hash</returns>
<exception cref="T:System.ArgumentException">throws if the current hash workload (logrounds) can not be parsed</exception>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.InterrogateHash(System.String)">
<summary>
Takes a valid hash and outputs its component parts
</summary>
<param name="hash"></param>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method
selecting a reasonable default for the number of hashing rounds to apply.
</summary>
<returns>A base64 encoded salt value.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>; the string will undergo SHA384 hashing to maintain the enhanced entropy work done during hashing
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EncodeBase64(System.Byte[],System.Int32)">
<summary>
Encode a byte array using BCrypt's slightly-modified base64 encoding scheme. Note that this
is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="byteArray">The byte array to encode.</param>
<param name="length"> The number of bytes to encode.</param>
<returns>Base64-encoded string.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.DecodeBase64(System.String,System.Int32)">
<summary>
Decode a string encoded using BCrypt's base64 scheme to a byte array.
Note that this is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="encodedString">The string to decode.</param>
<param name="maximumBytes"> The maximum bytes to decode.</param>
<returns>The decoded byte array.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Char64(System.Char)">
<summary>
Look up the 3 bits base64-encoded by the specified character, range-checking against
conversion table.
</summary>
<param name="character">The base64-encoded value.</param>
<returns>The decoded value of x.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Encipher(System.Span{System.UInt32},System.Int32)">
<summary>Blowfish encipher a single 64-bit block encoded as two 32-bit halves.</summary>
<param name="blockArray">An array containing the two 32-bit half blocks.</param>
<param name="offset"> The position in the array of the blocks.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.StreamToWord(System.ReadOnlySpan{System.Byte},System.Int32@)">
<summary>Cyclically extract a word of key material.</summary>
<param name="data">The string to extract the data from.</param>
<param name="offset"> [in,out] The current offset.</param>
<returns>The next word of material from data.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.InitializeKey">
<summary>Initializes the Blowfish key schedule.</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.Key(System.ReadOnlySpan{System.Byte})">
<summary>Key the Blowfish cipher.</summary>
<param name="keyBytes">The key byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.EKSKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Perform the "enhanced key schedule" step described by Provos and Mazieres in
"A Future Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
</summary>
<param name="saltBytes"> Salt byte array.</param>
<param name="inputBytes">Input byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.CryptRaw(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32)">
<summary>Perform the central hashing step in the BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="inputBytes">The input byte array to hash.</param>
<param name="saltBytes"> The salt byte array to hash with.</param>
<param name="workFactor"> The binary logarithm of the number of rounds of hashing to apply.</param>
<returns>A byte array containing the hashed result.</returns>
</member>
<member name="T:BCrypt.Net.BcryptAuthenticationException">
<inheritdoc />
<summary>Exception for signalling hash validation errors. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor">
<inheritdoc />
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String,System.Exception)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="T:BCrypt.Net.HashInformation">
<summary>
HashInformation : A value object that contains the results of interrogating a hash
Namely its settings (2a$10 for example); version (2a); workfactor (log rounds), and the raw hash returned
</summary>
</member>
<member name="M:BCrypt.Net.HashInformation.#ctor(System.String,System.String,System.String,System.String)">
<summary>Constructor. </summary>
<param name="settings">The message.</param>
<param name="version">The message.</param>
<param name="workFactor">The message.</param>
<param name="rawHash">The message.</param>
</member>
<member name="P:BCrypt.Net.HashInformation.Settings">
<summary>
Settings string
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.Version">
<summary>
Hash Version
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.WorkFactor">
<summary>
log rounds used / workfactor
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.RawHash">
<summary>
Raw Hash
</summary>
</member>
<member name="T:BCrypt.Net.HashInformationException">
<summary>
Exception used to signal errors that occur during use of the hash information methods
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
<param name="innerException"></param>
</member>
<member name="T:BCrypt.Net.HashType">
<summary>
Type of SHA implementation to use
Keys will be hashed, then base64 encoded before being passed to crypt.
Unless legacy is selected in which case simply SHA384 hashed.
</summary>
</member>
<member name="T:BCrypt.Net.SaltParseException">
<summary>Exception for signalling parse errors during salt checks. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor">
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,424 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BCrypt.Net-Next</name>
</assembly>
<members>
<member name="T:BCrypt.Net.BCrypt">
<summary>BCrypt implementation.</summary>
<remarks>
<para>
BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
<a href="http://www.usenix.org/event/usenix99/provos/provos_html/index.html">"A Future-
Adaptable Password Scheme"</a> by Niels Provos and David Mazieres.
</para>
<para>
This password hashing system tries to thwart off-line password cracking using a
computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
The work factor of the algorithm is parameterised, so it can be increased as computers
get faster.
</para>
<para>
To hash a password using the defaults, call the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String)"/> (which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.HashPassword(plain_password);</code>
<para>
To hash a password using SHA384 pre-hashing for increased entropy call <see cref="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)"/>
(which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.EnhancedHashPassword(plain_password);</code>
<para>
To check whether a plaintext password matches one that has been hashed previously,
use the <see cref="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)"/> method:
(To validate an enhanced hash you can pass true as the last parameter of Verify or use <see cref="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)"/>)
</para>
<code>
if (BCrypt.Verify(candidate_password, stored_hash))
Console.WriteLine("It matches");
else
Console.WriteLine("It does not match");
</code>
<para>
The <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/> method takes an optional parameter (workFactor) that
determines the computational complexity of the hashing:
</para>
<code>
string strong_salt = BCrypt.GenerateSalt(10);
string stronger_salt = BCrypt.GenerateSalt(12);
</code>
<para>
The amount of work increases exponentially (2^workFactor), so each increment is twice
as much work. The default workFactor is 10, and the valid range is 4 to 31.
</para>
</remarks>
</member>
<member name="F:BCrypt.Net.BCrypt.DefaultRounds">
<summary>
Default Work Factor
</summary>
</member>
<member name="F:BCrypt.Net.BCrypt.RngCsp">
<summary>
RandomNumberGenerator.Create calls RandomNumberGenerator.Create("System.Security.Cryptography.RandomNumberGenerator"), which will create an instance of RNGCryptoServiceProvider.
https://msdn.microsoft.com/en-us/library/42ks8fz1
</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType,System.String,System.Boolean,BCrypt.Net.HashType,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="currentKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="oldHashType">HashType used (default SHA384)</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="newKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="newHashType">HashType to use (default SHA384)</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.HashString(System.String,System.Int32)">
<summary>
Hash a string using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<remarks>Just an alias for HashPassword.</remarks>
<param name="inputKey"> The string to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<returns>The hashed string.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32,BCrypt.Net.HashType)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,BCrypt.Net.HashType,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor">Defaults to 11</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.Int32,System.Boolean)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)"/> using the given <paramref name="workFactor"/>.
</summary>
<param name="inputKey"> The password to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<returns>The hashed password</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<param name="enhancedEntropy">Set to true,the string will undergo hashing (defaults to SHA384 then base64 encoding) to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="inputKey"/> is null.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHash(System.Byte[],System.Char,BCrypt.Net.HashType)">
<summary>
Hashes key, base64 encodes before returning byte array
</summary>
<param name="inputBytes"></param>
<param name="bcryptMinorRevision"></param>
<param name="hashType"></param>
<returns></returns>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method.
</summary>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2**workFactor.</param>
<param name="bcryptMinorRevision"></param>
<exception cref="T:System.ArgumentOutOfRangeException">Work factor must be between 4 and 31</exception>
<returns>A base64 encoded salt value.</returns>
<exception cref="T:System.ArgumentException">BCrypt Revision should be a, b, x or y</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.PasswordNeedsRehash(System.String,System.Int32)">
<summary>
Based on password_needs_rehash in PHP this method will return true
if the work factor (logrounds) set on the hash is lower than the new minimum workload passed in
</summary>
<param name="hash">full bcrypt hash</param>
<param name="newMinimumWorkLoad">target workload</param>
<returns>true if new work factor is higher than the one in the hash</returns>
<exception cref="T:System.ArgumentException">throws if the current hash workload (logrounds) can not be parsed</exception>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.InterrogateHash(System.String)">
<summary>
Takes a valid hash and outputs its component parts
</summary>
<param name="hash"></param>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method
selecting a reasonable default for the number of hashing rounds to apply.
</summary>
<returns>A base64 encoded salt value.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>; the string will undergo SHA384 hashing to maintain the enhanced entropy work done during hashing
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EncodeBase64(System.Byte[],System.Int32)">
<summary>
Encode a byte array using BCrypt's slightly-modified base64 encoding scheme. Note that this
is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="byteArray">The byte array to encode.</param>
<param name="length"> The number of bytes to encode.</param>
<returns>Base64-encoded string.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.DecodeBase64(System.String,System.Int32)">
<summary>
Decode a string encoded using BCrypt's base64 scheme to a byte array.
Note that this is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="encodedString">The string to decode.</param>
<param name="maximumBytes"> The maximum bytes to decode.</param>
<returns>The decoded byte array.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Char64(System.Char)">
<summary>
Look up the 3 bits base64-encoded by the specified character, range-checking against
conversion table.
</summary>
<param name="character">The base64-encoded value.</param>
<returns>The decoded value of x.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Encipher(System.Span{System.UInt32},System.Int32)">
<summary>Blowfish encipher a single 64-bit block encoded as two 32-bit halves.</summary>
<param name="blockArray">An array containing the two 32-bit half blocks.</param>
<param name="offset"> The position in the array of the blocks.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.StreamToWord(System.ReadOnlySpan{System.Byte},System.Int32@)">
<summary>Cyclically extract a word of key material.</summary>
<param name="data">The string to extract the data from.</param>
<param name="offset"> [in,out] The current offset.</param>
<returns>The next word of material from data.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.InitializeKey">
<summary>Initializes the Blowfish key schedule.</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.Key(System.ReadOnlySpan{System.Byte})">
<summary>Key the Blowfish cipher.</summary>
<param name="keyBytes">The key byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.EKSKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Perform the "enhanced key schedule" step described by Provos and Mazieres in
"A Future Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
</summary>
<param name="saltBytes"> Salt byte array.</param>
<param name="inputBytes">Input byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.CryptRaw(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32)">
<summary>Perform the central hashing step in the BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="inputBytes">The input byte array to hash.</param>
<param name="saltBytes"> The salt byte array to hash with.</param>
<param name="workFactor"> The binary logarithm of the number of rounds of hashing to apply.</param>
<returns>A byte array containing the hashed result.</returns>
</member>
<member name="T:BCrypt.Net.BcryptAuthenticationException">
<inheritdoc />
<summary>Exception for signalling hash validation errors. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor">
<inheritdoc />
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String,System.Exception)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="T:BCrypt.Net.HashInformation">
<summary>
HashInformation : A value object that contains the results of interrogating a hash
Namely its settings (2a$10 for example); version (2a); workfactor (log rounds), and the raw hash returned
</summary>
</member>
<member name="M:BCrypt.Net.HashInformation.#ctor(System.String,System.String,System.String,System.String)">
<summary>Constructor. </summary>
<param name="settings">The message.</param>
<param name="version">The message.</param>
<param name="workFactor">The message.</param>
<param name="rawHash">The message.</param>
</member>
<member name="P:BCrypt.Net.HashInformation.Settings">
<summary>
Settings string
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.Version">
<summary>
Hash Version
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.WorkFactor">
<summary>
log rounds used / workfactor
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.RawHash">
<summary>
Raw Hash
</summary>
</member>
<member name="T:BCrypt.Net.HashInformationException">
<summary>
Exception used to signal errors that occur during use of the hash information methods
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
<param name="innerException"></param>
</member>
<member name="T:BCrypt.Net.HashType">
<summary>
Type of SHA implementation to use
Keys will be hashed, then base64 encoded before being passed to crypt.
Unless legacy is selected in which case simply SHA384 hashed.
</summary>
</member>
<member name="T:BCrypt.Net.SaltParseException">
<summary>Exception for signalling parse errors during salt checks. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor">
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
</members>
</doc>

View File

@ -0,0 +1,424 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BCrypt.Net-Next</name>
</assembly>
<members>
<member name="T:BCrypt.Net.BCrypt">
<summary>BCrypt implementation.</summary>
<remarks>
<para>
BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
<a href="http://www.usenix.org/event/usenix99/provos/provos_html/index.html">"A Future-
Adaptable Password Scheme"</a> by Niels Provos and David Mazieres.
</para>
<para>
This password hashing system tries to thwart off-line password cracking using a
computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
The work factor of the algorithm is parameterised, so it can be increased as computers
get faster.
</para>
<para>
To hash a password using the defaults, call the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String)"/> (which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.HashPassword(plain_password);</code>
<para>
To hash a password using SHA384 pre-hashing for increased entropy call <see cref="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)"/>
(which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.EnhancedHashPassword(plain_password);</code>
<para>
To check whether a plaintext password matches one that has been hashed previously,
use the <see cref="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)"/> method:
(To validate an enhanced hash you can pass true as the last parameter of Verify or use <see cref="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)"/>)
</para>
<code>
if (BCrypt.Verify(candidate_password, stored_hash))
Console.WriteLine("It matches");
else
Console.WriteLine("It does not match");
</code>
<para>
The <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/> method takes an optional parameter (workFactor) that
determines the computational complexity of the hashing:
</para>
<code>
string strong_salt = BCrypt.GenerateSalt(10);
string stronger_salt = BCrypt.GenerateSalt(12);
</code>
<para>
The amount of work increases exponentially (2^workFactor), so each increment is twice
as much work. The default workFactor is 10, and the valid range is 4 to 31.
</para>
</remarks>
</member>
<member name="F:BCrypt.Net.BCrypt.DefaultRounds">
<summary>
Default Work Factor
</summary>
</member>
<member name="F:BCrypt.Net.BCrypt.RngCsp">
<summary>
RandomNumberGenerator.Create calls RandomNumberGenerator.Create("System.Security.Cryptography.RandomNumberGenerator"), which will create an instance of RNGCryptoServiceProvider.
https://msdn.microsoft.com/en-us/library/42ks8fz1
</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType,System.String,System.Boolean,BCrypt.Net.HashType,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="currentKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="oldHashType">HashType used (default SHA384)</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="newKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="newHashType">HashType to use (default SHA384)</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.HashString(System.String,System.Int32)">
<summary>
Hash a string using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<remarks>Just an alias for HashPassword.</remarks>
<param name="inputKey"> The string to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<returns>The hashed string.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32,BCrypt.Net.HashType)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,BCrypt.Net.HashType,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor">Defaults to 11</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.Int32,System.Boolean)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)"/> using the given <paramref name="workFactor"/>.
</summary>
<param name="inputKey"> The password to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<returns>The hashed password</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<param name="enhancedEntropy">Set to true,the string will undergo hashing (defaults to SHA384 then base64 encoding) to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="inputKey"/> is null.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHash(System.Byte[],System.Char,BCrypt.Net.HashType)">
<summary>
Hashes key, base64 encodes before returning byte array
</summary>
<param name="inputBytes"></param>
<param name="bcryptMinorRevision"></param>
<param name="hashType"></param>
<returns></returns>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method.
</summary>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2**workFactor.</param>
<param name="bcryptMinorRevision"></param>
<exception cref="T:System.ArgumentOutOfRangeException">Work factor must be between 4 and 31</exception>
<returns>A base64 encoded salt value.</returns>
<exception cref="T:System.ArgumentException">BCrypt Revision should be a, b, x or y</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.PasswordNeedsRehash(System.String,System.Int32)">
<summary>
Based on password_needs_rehash in PHP this method will return true
if the work factor (logrounds) set on the hash is lower than the new minimum workload passed in
</summary>
<param name="hash">full bcrypt hash</param>
<param name="newMinimumWorkLoad">target workload</param>
<returns>true if new work factor is higher than the one in the hash</returns>
<exception cref="T:System.ArgumentException">throws if the current hash workload (logrounds) can not be parsed</exception>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.InterrogateHash(System.String)">
<summary>
Takes a valid hash and outputs its component parts
</summary>
<param name="hash"></param>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method
selecting a reasonable default for the number of hashing rounds to apply.
</summary>
<returns>A base64 encoded salt value.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>; the string will undergo SHA384 hashing to maintain the enhanced entropy work done during hashing
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EncodeBase64(System.Byte[],System.Int32)">
<summary>
Encode a byte array using BCrypt's slightly-modified base64 encoding scheme. Note that this
is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="byteArray">The byte array to encode.</param>
<param name="length"> The number of bytes to encode.</param>
<returns>Base64-encoded string.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.DecodeBase64(System.String,System.Int32)">
<summary>
Decode a string encoded using BCrypt's base64 scheme to a byte array.
Note that this is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="encodedString">The string to decode.</param>
<param name="maximumBytes"> The maximum bytes to decode.</param>
<returns>The decoded byte array.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Char64(System.Char)">
<summary>
Look up the 3 bits base64-encoded by the specified character, range-checking against
conversion table.
</summary>
<param name="character">The base64-encoded value.</param>
<returns>The decoded value of x.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Encipher(System.Span{System.UInt32},System.Int32)">
<summary>Blowfish encipher a single 64-bit block encoded as two 32-bit halves.</summary>
<param name="blockArray">An array containing the two 32-bit half blocks.</param>
<param name="offset"> The position in the array of the blocks.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.StreamToWord(System.ReadOnlySpan{System.Byte},System.Int32@)">
<summary>Cyclically extract a word of key material.</summary>
<param name="data">The string to extract the data from.</param>
<param name="offset"> [in,out] The current offset.</param>
<returns>The next word of material from data.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.InitializeKey">
<summary>Initializes the Blowfish key schedule.</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.Key(System.ReadOnlySpan{System.Byte})">
<summary>Key the Blowfish cipher.</summary>
<param name="keyBytes">The key byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.EKSKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Perform the "enhanced key schedule" step described by Provos and Mazieres in
"A Future Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
</summary>
<param name="saltBytes"> Salt byte array.</param>
<param name="inputBytes">Input byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.CryptRaw(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32)">
<summary>Perform the central hashing step in the BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="inputBytes">The input byte array to hash.</param>
<param name="saltBytes"> The salt byte array to hash with.</param>
<param name="workFactor"> The binary logarithm of the number of rounds of hashing to apply.</param>
<returns>A byte array containing the hashed result.</returns>
</member>
<member name="T:BCrypt.Net.BcryptAuthenticationException">
<inheritdoc />
<summary>Exception for signalling hash validation errors. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor">
<inheritdoc />
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String,System.Exception)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="T:BCrypt.Net.HashInformation">
<summary>
HashInformation : A value object that contains the results of interrogating a hash
Namely its settings (2a$10 for example); version (2a); workfactor (log rounds), and the raw hash returned
</summary>
</member>
<member name="M:BCrypt.Net.HashInformation.#ctor(System.String,System.String,System.String,System.String)">
<summary>Constructor. </summary>
<param name="settings">The message.</param>
<param name="version">The message.</param>
<param name="workFactor">The message.</param>
<param name="rawHash">The message.</param>
</member>
<member name="P:BCrypt.Net.HashInformation.Settings">
<summary>
Settings string
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.Version">
<summary>
Hash Version
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.WorkFactor">
<summary>
log rounds used / workfactor
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.RawHash">
<summary>
Raw Hash
</summary>
</member>
<member name="T:BCrypt.Net.HashInformationException">
<summary>
Exception used to signal errors that occur during use of the hash information methods
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
<param name="innerException"></param>
</member>
<member name="T:BCrypt.Net.HashType">
<summary>
Type of SHA implementation to use
Keys will be hashed, then base64 encoded before being passed to crypt.
Unless legacy is selected in which case simply SHA384 hashed.
</summary>
</member>
<member name="T:BCrypt.Net.SaltParseException">
<summary>Exception for signalling parse errors during salt checks. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor">
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
</members>
</doc>

View File

@ -0,0 +1,424 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BCrypt.Net-Next</name>
</assembly>
<members>
<member name="T:BCrypt.Net.BCrypt">
<summary>BCrypt implementation.</summary>
<remarks>
<para>
BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
<a href="http://www.usenix.org/event/usenix99/provos/provos_html/index.html">"A Future-
Adaptable Password Scheme"</a> by Niels Provos and David Mazieres.
</para>
<para>
This password hashing system tries to thwart off-line password cracking using a
computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
The work factor of the algorithm is parameterised, so it can be increased as computers
get faster.
</para>
<para>
To hash a password using the defaults, call the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String)"/> (which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.HashPassword(plain_password);</code>
<para>
To hash a password using SHA384 pre-hashing for increased entropy call <see cref="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)"/>
(which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.EnhancedHashPassword(plain_password);</code>
<para>
To check whether a plaintext password matches one that has been hashed previously,
use the <see cref="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)"/> method:
(To validate an enhanced hash you can pass true as the last parameter of Verify or use <see cref="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)"/>)
</para>
<code>
if (BCrypt.Verify(candidate_password, stored_hash))
Console.WriteLine("It matches");
else
Console.WriteLine("It does not match");
</code>
<para>
The <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/> method takes an optional parameter (workFactor) that
determines the computational complexity of the hashing:
</para>
<code>
string strong_salt = BCrypt.GenerateSalt(10);
string stronger_salt = BCrypt.GenerateSalt(12);
</code>
<para>
The amount of work increases exponentially (2^workFactor), so each increment is twice
as much work. The default workFactor is 10, and the valid range is 4 to 31.
</para>
</remarks>
</member>
<member name="F:BCrypt.Net.BCrypt.DefaultRounds">
<summary>
Default Work Factor
</summary>
</member>
<member name="F:BCrypt.Net.BCrypt.RngCsp">
<summary>
RandomNumberGenerator.Create calls RandomNumberGenerator.Create("System.Security.Cryptography.RandomNumberGenerator"), which will create an instance of RNGCryptoServiceProvider.
https://msdn.microsoft.com/en-us/library/42ks8fz1
</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType,System.String,System.Boolean,BCrypt.Net.HashType,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="currentKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="oldHashType">HashType used (default SHA384)</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="newKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="newHashType">HashType to use (default SHA384)</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.HashString(System.String,System.Int32)">
<summary>
Hash a string using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<remarks>Just an alias for HashPassword.</remarks>
<param name="inputKey"> The string to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<returns>The hashed string.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32,BCrypt.Net.HashType)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,BCrypt.Net.HashType,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor">Defaults to 11</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.Int32,System.Boolean)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)"/> using the given <paramref name="workFactor"/>.
</summary>
<param name="inputKey"> The password to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<returns>The hashed password</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<param name="enhancedEntropy">Set to true,the string will undergo hashing (defaults to SHA384 then base64 encoding) to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="inputKey"/> is null.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHash(System.Byte[],System.Char,BCrypt.Net.HashType)">
<summary>
Hashes key, base64 encodes before returning byte array
</summary>
<param name="inputBytes"></param>
<param name="bcryptMinorRevision"></param>
<param name="hashType"></param>
<returns></returns>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method.
</summary>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2**workFactor.</param>
<param name="bcryptMinorRevision"></param>
<exception cref="T:System.ArgumentOutOfRangeException">Work factor must be between 4 and 31</exception>
<returns>A base64 encoded salt value.</returns>
<exception cref="T:System.ArgumentException">BCrypt Revision should be a, b, x or y</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.PasswordNeedsRehash(System.String,System.Int32)">
<summary>
Based on password_needs_rehash in PHP this method will return true
if the work factor (logrounds) set on the hash is lower than the new minimum workload passed in
</summary>
<param name="hash">full bcrypt hash</param>
<param name="newMinimumWorkLoad">target workload</param>
<returns>true if new work factor is higher than the one in the hash</returns>
<exception cref="T:System.ArgumentException">throws if the current hash workload (logrounds) can not be parsed</exception>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.InterrogateHash(System.String)">
<summary>
Takes a valid hash and outputs its component parts
</summary>
<param name="hash"></param>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method
selecting a reasonable default for the number of hashing rounds to apply.
</summary>
<returns>A base64 encoded salt value.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>; the string will undergo SHA384 hashing to maintain the enhanced entropy work done during hashing
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EncodeBase64(System.Byte[],System.Int32)">
<summary>
Encode a byte array using BCrypt's slightly-modified base64 encoding scheme. Note that this
is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="byteArray">The byte array to encode.</param>
<param name="length"> The number of bytes to encode.</param>
<returns>Base64-encoded string.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.DecodeBase64(System.String,System.Int32)">
<summary>
Decode a string encoded using BCrypt's base64 scheme to a byte array.
Note that this is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="encodedString">The string to decode.</param>
<param name="maximumBytes"> The maximum bytes to decode.</param>
<returns>The decoded byte array.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Char64(System.Char)">
<summary>
Look up the 3 bits base64-encoded by the specified character, range-checking against
conversion table.
</summary>
<param name="character">The base64-encoded value.</param>
<returns>The decoded value of x.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Encipher(System.Span{System.UInt32},System.Int32)">
<summary>Blowfish encipher a single 64-bit block encoded as two 32-bit halves.</summary>
<param name="blockArray">An array containing the two 32-bit half blocks.</param>
<param name="offset"> The position in the array of the blocks.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.StreamToWord(System.ReadOnlySpan{System.Byte},System.Int32@)">
<summary>Cyclically extract a word of key material.</summary>
<param name="data">The string to extract the data from.</param>
<param name="offset"> [in,out] The current offset.</param>
<returns>The next word of material from data.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.InitializeKey">
<summary>Initializes the Blowfish key schedule.</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.Key(System.ReadOnlySpan{System.Byte})">
<summary>Key the Blowfish cipher.</summary>
<param name="keyBytes">The key byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.EKSKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Perform the "enhanced key schedule" step described by Provos and Mazieres in
"A Future Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
</summary>
<param name="saltBytes"> Salt byte array.</param>
<param name="inputBytes">Input byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.CryptRaw(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32)">
<summary>Perform the central hashing step in the BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="inputBytes">The input byte array to hash.</param>
<param name="saltBytes"> The salt byte array to hash with.</param>
<param name="workFactor"> The binary logarithm of the number of rounds of hashing to apply.</param>
<returns>A byte array containing the hashed result.</returns>
</member>
<member name="T:BCrypt.Net.BcryptAuthenticationException">
<inheritdoc />
<summary>Exception for signalling hash validation errors. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor">
<inheritdoc />
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String,System.Exception)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="T:BCrypt.Net.HashInformation">
<summary>
HashInformation : A value object that contains the results of interrogating a hash
Namely its settings (2a$10 for example); version (2a); workfactor (log rounds), and the raw hash returned
</summary>
</member>
<member name="M:BCrypt.Net.HashInformation.#ctor(System.String,System.String,System.String,System.String)">
<summary>Constructor. </summary>
<param name="settings">The message.</param>
<param name="version">The message.</param>
<param name="workFactor">The message.</param>
<param name="rawHash">The message.</param>
</member>
<member name="P:BCrypt.Net.HashInformation.Settings">
<summary>
Settings string
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.Version">
<summary>
Hash Version
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.WorkFactor">
<summary>
log rounds used / workfactor
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.RawHash">
<summary>
Raw Hash
</summary>
</member>
<member name="T:BCrypt.Net.HashInformationException">
<summary>
Exception used to signal errors that occur during use of the hash information methods
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
<param name="innerException"></param>
</member>
<member name="T:BCrypt.Net.HashType">
<summary>
Type of SHA implementation to use
Keys will be hashed, then base64 encoded before being passed to crypt.
Unless legacy is selected in which case simply SHA384 hashed.
</summary>
</member>
<member name="T:BCrypt.Net.SaltParseException">
<summary>Exception for signalling parse errors during salt checks. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor">
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
</members>
</doc>

287
packages/BCrypt.Net-Next.4.0.3/readme.md vendored Normal file
View File

@ -0,0 +1,287 @@
# bcrypt.net - next
Porting of bcrypt.codeplex.com with enhanced security, missing fixes, features and better .net support.
[![Build status](https://ci.appveyor.com/api/projects/status/me6tlh95u59jl17d/branch/master?svg=true)](https://ci.appveyor.com/project/ChrisMcKee/bcrypt-net/branch/master)
[![SonarCloud](https://sonarcloud.io/api/project_badges/quality_gate?project=bcryptnet)]()
# Nuget
Download using nuget or Paket (https://fsprojects.github.io/Paket/)
Package: https://www.nuget.org/packages/BCrypt.Net-Next/
[![NuGet](https://img.shields.io/nuget/v/BCrypt.Net-Next.svg?style=flat-square)](https://www.nuget.org/packages/BCrypt.Net-Next)
Signed Package - https://www.nuget.org/packages/BCrypt.Net-Next.StrongName/
[![NuGet Signed Package](https://img.shields.io/nuget/v/BCrypt.Net-Next.StrongName.svg?style=plastic)](https://www.nuget.org/packages/BCrypt.Net-Next.StrongName)
# How to use
The simplest usage is as follows...
To Hash a password:
```csharp
string passwordHash = BCrypt.HashPassword("my password");
```
_Note: Although this library allows you to supply your own salt, it is **highly** advisable that you allow the library to generate the salt for you.
These methods are supplied to maintain compatibility and for more advanced cross-platform requirements that may necessitate their use._
To Verify a password against a hash (assuming you've stored the hash and retrieved from storage for verification):
```csharp
BCrypt.Verify("my password", passwordHash);
```
This implementation on hashing will generate a salt automatically for you with the work factor (2^number of rounds) set to 11 (which matches the default across most implementation and is currently viewed as a good level of security/risk).
To save you the maths a small table covering the iterations is provided below. The minimum allowed in this library is 4 for compatibility, the maximum is 31 (at 31 your processor will be wishing for death).
```
| Cost | Iterations |
|-------|--------------------------|
| 8 | 256 iterations |
| 9 | 512 iterations |
| 10 | 1,024 iterations |
| 11 | 2,048 iterations |
| 12 | 4,096 iterations |
| 13 | 8,192 iterations |
| 14 | 16,384 iterations |
| 15 | 32,768 iterations |
| 16 | 65,536 iterations |
| 17 | 131,072 iterations |
| 18 | 262,144 iterations |
| 19 | 524,288 iterations |
| 20 | 1,048,576 iterations |
| 21 | 2,097,152 iterations |
| 22 | 4,194,304 iterations |
| 23 | 8,388,608 iterations |
| 24 | 16,777,216 iterations |
| 25 | 33,554,432 iterations |
| 26 | 67,108,864 iterations |
| 27 | 134,217,728 iterations |
| 28 | 268,435,456 iterations |
| 29 | 536,870,912 iterations |
| 30 | 1,073,741,824 iterations |
| 31 | 2,147,483,648 iterations |
etc
```
and a simple benchmark you can run by creating a console program, adding this BCrypt Library and using this code.
```csharp
var cost = 16;
var timeTarget = 100; // Milliseconds
long timeTaken;
do
{
var sw = Stopwatch.StartNew();
BCrypt.HashPassword("RwiKnN>9xg3*C)1AZl.)y8f_:GCz,vt3T]PI", workFactor: cost);
sw.Stop();
timeTaken = sw.ElapsedMilliseconds;
cost -= 1;
} while ((timeTaken) >= timeTarget);
Console.WriteLine("Appropriate Cost Found: " + (cost + 1));
Console.ReadLine();
```
This will start at 16 which is `65,536 iterations` and reduce the cost until the time target is reached.
It's up to you what you consider an allowable time, but if it's below 10, I'd seriously advice leaving it at 10
and maybe investing in a larger server package.
## Enhanced Entropy
The recommended 56 byte password limit (including null termination byte) for bcrypt relates to the 448 bit limit of the Blowfish key; Any
bytes beyond that limit are not fully mixed into the hash, as such making the 72 byte absolute limit on bcrypt passwords less relevant
considering what actual effect on the resulting hash by those bytes.
Other languages have handled this perceived issue by pre-hashing the passphrase/password to increase the used entropy, dropbox being one of the more public articles on this.
- https://blogs.dropbox.com/tech/2016/09/how-dropbox-securely-stores-your-passwords/
- https://crypto.stackexchange.com/questions/42415/dropbox-password-security
You can opt into enhanced hashing simply using the following code (basically prefixing the method calls with Enhanced)
```csharp
var enhancedHashPassword = BCrypt.EnhancedHashPassword(myPassword);
var validatePassword = BCrypt.EnhancedVerify(myPassword, enhancedHashPassword);
```
By default the library uses SHA384 hashing of the passphrase, the material generated is then passed to bcrypt to form your hash via the usual bcrypt routine.
If you want to specify a different version of SHA, or just wish to explicitly set in your code the version used in case it ever changes in a major release of the library,
you can do so by using the following change to the above.
```csharp
var enhancedHashPassword = BCrypt.EnhancedHashPassword(myPassword, hashType: HashType.SHA384);
var validatePassword = BCrypt.EnhancedVerify(myPassword, enhancedHashPassword, hashType:HashType.SHA384);
```
_Why SHA384?_ It's a good balance of performance, security, collision protection and is the only version that wasn't vulnerable to length extension attacks https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks .
_Should I use Enhanced Entropy?_ You lose nothing by using it
_Why would I need to change the SHA type?_ Some libraries like PassLib hash using SHA256, so mostly a compatibility thing. DropBox used SHA512 so if you worked at dropbox you'd want compatibility. The enhancing is mostly a convenience extension in that you could already pre-hash and pass into the standard method calls.
_What does it do?_ We take the utf8 bytes of your password as inputBytes SHA hash them, convert to base64 (for compatibility with other language implementations) then use those bytes to perform the standard bcrypt call.
## Compiling
You'll need at least VS2017 with the current SDK https://www.microsoft.com/net/download;
The nuget packages can be built by running `buildfornuget.cmd`
or
```shell
dotnet restore .\src
dotnet pack .\src\BCrypt.Net --configuration Release
```
## Tests
You can run the tests from the main folder by typing `dotnet test .\src\BCrypt.Net.UnitTests\`
Running `TestGenerateSaltWithMaxWorkFactor` will take significant time.
## Description
A .Net port of jBCrypt implemented in C#. It uses a variant of the Blowfish encryption algorithms keying schedule, and introduces a work factor, which allows you to determine how expensive the hash function will be, allowing the algorithm to be "future-proof".
## Details
This is, for all intents and purposes, a direct port of jBCrypt written by Damien Miller. The main differences are the addition of some convenience methods and some mild re-factoring. The easiest way to verify BCrypt.Net's parity with jBCrypt is to compare the unit tests.
For an overview of why BCrypt is important, see How to Safely Store a Password. In general, it's a hashing algorithm that can be adjusted over time to require more CPU power to generate the hashes. This, in essence, provides some protection against Moore's Law. That is, as computers get faster, this algorithm can be adjusted to require more CPU power. The more CPU power that's required to hash a given password, the more time a "hacker" must invest, per password. Since the "work factor" is embedded in the resultant hash, the hashes generated by this algorithm are forward/backward-compatible.
## Why BCrypt
### From How to Safely Store a Password:
It uses a variant of the Blowfish encryption algorithms keying schedule and introduces a work factor, which allows you to determine how expensive the hash function will be. Because of this, BCrypt can keep up with Moores law. As computers get faster you can increase the work factor and the hash will get slower.
### Blowfish-based scheme - Versioning/BCrypt Revisions
> Niels Provos and David Mazières designed a crypt() scheme called bcrypt based on Blowfish, and presented it at USENIX in 1999.[14]
The printable form of these hashes starts with $2$, $2a$, $2b$, $2x$ or $2y$ depending on which variant of the algorithm is used:
```
$2$ Currently obsolete
$2a$ The current key used to identify this scheme.
Since a major security flaw was discovered in 2011 in a third-party implementation of the algorithm,
hashes indicated by this string are now ambiguous and might have been generated by the flawed
implementation, or a subsequent fixed, implementation.
The flaw may be triggered by some password strings containing non-ASCII characters, such as specially
crafted password strings.
$2b$ Used by some recent implementations which include a mitigation to a wraparound problem.
Previous versions of the algorithm have a problem with long passwords. By design, long passwords
are truncated at 72 characters, but there is an 8-bit wraparound problem with certain password
lengths resulting in weak hashes.
$2x$ Post-2011 bug discovery, old hashes can be renamed to be $2x$ to indicate that they were generated with
the broken algorithm. These hashes are still weak, but at least it's clear which algorithm was used to
generate them.
$2y$ Post Post-2011 bug discovery, $2y$ may be used to unambiguously use the new, corrected algorithm. On an
implementation suffering from the bug, $2y$ simply won't work. On a newer, fixed implementation, it will
produce the same result as using $2a$.
```
First and foremost this library originated as a port of jBCrypt from `mindrot`, and subsequently the bcrypt revision
was set to match, which in this case is `$2a$`.
This has been changed as handling only the single revision causes issues cross-platform with implementations that moved
altered their revision to handle migrations and other issues.
```
The original bcrypt code (released in OpenBSD 2.1) identified itself as
$2$. Shortly after release, a bug was fixed and the hash identifier
changed to $2a$. Support for "minor" versions wasn't really
planned, but it was backwards compatible.
Solar Designer wrote a second implementation of bcrypt. This
reimplementation suffered from a flaw dealing with 8 bit characters
and led to the introduction of the 'x' and 'y' flavours. OpenBSD did
not have this problem and supports neither 'x' nor 'y' hash versions.
---
Solar found a bug in their OpenBSD implementation of bcrypt when hashing
long passwords. The length is stored in an unsigned char type, which
will overflow and wrap at 256. Although we consider the existence of
affected hashes very rare, in order to differentiate hashes generated
before and after the fix, we are introducing a new minor 'b'.
OpenBSD 5.5 (coming this spring) will accept and verify 'b' hashes,
although it will still generate 'a' hashes. OpenBSD 5.6 (coming this
fall) will change to generating 'b' hashes by default.
A future release of Solar's bcrypt code should also support 'b'.
```
**There is no difference between 2a, 2x, 2y, and 2b. They all output the same result.**
- https://github.com/spring-projects/spring-security/issues/3320
- https://en.wikipedia.org/wiki/Crypt_(C)#Blowfish-based_scheme
- http://undeadly.org/cgi?action=article&sid=20140224132743
- http://marc.info/?l=openbsd-misc&m=139320023202696
# Releases
release notes are here https://github.com/BcryptNet/bcrypt.net/releases
_v4.0.2_ - Addition of .net 5 targeting; wrap `shaxxx` creation in using to release.
_v4.0.0 (breaking changes)_ - A bug in `Enhanced Hashing` was discovered that causes the hashes created to be inoperable between different languages.
V4 provides the fix for this as well as adding test vectors from PHP and Python to ensure the issue remains fixed in the future. V4 also removes the legacy 384 option that came before Base64 was added.
_v3.5.0_ - A bug in `Enhanced Hashing` was discovered that causes the hashes created to be inoperable between different languages.
As part of the fix 3.5 release contains the ability to `Verify` and `HashPassword` were given an additional `v4CompatibleEnhancedEntropy` parameter.
This allows the user to verify their Enhanced hash as normal; then re-hash + store using V4. This functionality is purely to allow migration and is removed in V4.
_v3.3.3_ -Performance (heap reduction) for netcore and removal of regex https://github.com/BcryptNet/bcrypt.net/releases/tag/3.3.0
_v2.1.3 -_
- Update test SDK
- Match versions between Strong-Signed / Normal package
- Update copyright year in metadata
- Typo correction
_v2.1.2 -_
- NetStandard2 and Net 4.7 addition
- Correct typo in `PasswordNeedsReshash` to `PasswordNeedsRehash`
- Consolidate config changes
_v2.1.1 -_
- Minor csproj changes / typo
_v2.1.0 -_
- Adds enhanced mode; enhanced hashing allows you to opt-in to ensuring optimal entropy on your users passwords by first making use of the fast SHA384 algorithm before BCrypt hashes the password.
- Added Hash interrogation to allow a hash to be passed in and its component parts are returned.
- Added timeouts to regex and set compiler flags for msbuild so < .net 4.5 (where timeouts were added to regex) we use old regex method.
- Alter safe equals from ceq/and to xor/and/ceq moving the check outside of the loop to mitigate against branch prediction causing a timing leak
- Add new method `PasswordNeedsReshash(string hash, int newMinimumWorkLoad)` as a helper method for developers to use when logging a user in to increase legacy workloads
- Add `ValidateAndReplacePassword` method to allow inline password validation and replacement. Throws `BcryptAuthenticationException` in the event of authentication failure.
- Cleaned up XML-doc for intellisense
- Increased compatibility by allowing BCrypt revisions from other frameworks/languages to be validated and generated whilst maintaining compatibility.
- VS2017 RTW changes
_v2.0.1 -_
- Corrects usage of Secure random number generator
- Change UTF8 handling to safer default (throwOnInvalidBytes: true)
- .NET Encoding.UTF8 encoding instance does not raise exceptions used to encode bytes which cannot represent a valid encoding & will return the same 'unknown' character instead. This can cause entropy loss when converting from bytes to strings.
- Change secure equals to match .net identity implementation
- Inline vars in encipher method
_v2.0.0 -_
Fresh release packaged for the majority of .net & containing safe-equals to reduce the risks from timing attacks https://en.wikipedia.org/wiki/Timing_attack / https://cryptocoding.net/index.php/Coding_rules#Compare_secret_strings_in_constant_time
Technically the implementation details of BCrypt theoretically mitigate against timing attacks. But the Bcrypt.net official validation function was vulnerable to timing attacks as it returned as soon as a non-matching byte was found in the hash comparison.

Binary file not shown.

View File

@ -0,0 +1,13 @@
Copyright (c) 2000-2025 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org).
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sub license, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions: The above copyright notice and this
permission notice shall be included in all copies or substantial portions of the Software.
**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.**

View File

@ -0,0 +1,43 @@
# The Bouncy Castle Cryptography Library For .NET
[![NuGet](https://img.shields.io/nuget/dt/BouncyCastle.Cryptography.svg)](https://www.nuget.org/packages/BouncyCastle.Cryptography) [![NuGet](https://img.shields.io/nuget/vpre/BouncyCastle.Cryptography.svg)](https://www.nuget.org/packages/BouncyCastle.Cryptography)
The Bouncy Castle Cryptography library is a .NET implementation of cryptographic algorithms and protocols. It was developed by the Legion of the Bouncy Castle, a registered Australian Charity, with a little help! The Legion, and the latest goings on with this package, can be found at [https://www.bouncycastle.org](https://www.bouncycastle.org).
In addition to providing basic cryptography algorithms, the package also provides support for CMS, OpenPGP, (D)TLS, TSP, X.509 certificate generation and more. The package also includes implementations of the following NIST Post-Quantum Cryptography Standardization algorithms: ML-DSA, ML-KEM, SLH-DSA, Falcon, Classic McEliece, FrodoKEM, NTRU, NTRU Prime, Picnic, Saber, and BIKE. These should all be considered EXPERIMENTAL and subject to change or removal.
The Legion also gratefully acknowledges the contributions made to this package by others (see [here](https://www.bouncycastle.org/csharp/contributors.html) for the current list). If you would like to contribute to our efforts please feel free to get in touch with us or visit our [donations page](https://www.bouncycastle.org/donate), sponsor some specific work, or purchase a [support contract](https://www.keyfactor.com/platform/bouncy-castle-support/).
Except where otherwise stated, this software is distributed under a license based on the MIT X Consortium license. To view the license, [see here](https://www.bouncycastle.org/licence.html). This software includes a modified Bzip2 library, which is licensed under the [Apache Software License, Version 2.0](http://www.apache.org/licenses/).
**Note**: This source tree is not the FIPS version of the APIs - if you are interested in our FIPS version please visit us [here](https://www.bouncycastle.org/fips-csharp) or contact us directly at [office@bouncycastle.org](mailto:office@bouncycastle.org).
## Installing BouncyCastle
You should install [BouncyCastle with NuGet:](https://www.nuget.org/packages/BouncyCastle.Cryptography)
Install-Package BouncyCastle.Cryptography
Or via the .NET Core command line interface:
dotnet add package BouncyCastle.Cryptography
Either commands, from Package Manager Console or .NET Core CLI, will download and install BouncyCastle.Cryptography.
## Mailing Lists
To subscribe use the link below and include the word subscribe in the message body. (To unsubscribe, replace **subscribe** with **unsubscribe** in the message body).
* [announce-crypto-csharp-request@bouncycastle.org](mailto:announce-crypto-csharp-request@bouncycastle.org)
This mailing list is for new release announcements only, general subscribers cannot post to it.
Note that the former dev-crypto-csharp mailing list has been discontinued. Please use https://github.com/bcgit/bc-csharp/discussions instead for usage questions, enhancement requests, etc.
## Feedback
If you want to provide feedback directly to the members of **The Legion** then please use [feedback-crypto@bouncycastle.org](mailto:feedback-crypto@bouncycastle.org). If you want to help this project survive please consider [donating](https://www.bouncycastle.org/donate).
For bug reporting/requests you can report issues on [github](https://github.com/bcgit/bc-csharp), or via [feedback-crypto@bouncycastle.org](mailto:feedback-crypto@bouncycastle.org) if required. We will accept pull requests based on this repository as well, but only on the basis that any code included may be distributed under the [Bouncy Castle License](https://www.bouncycastle.org/licence.html).
## Finally
Enjoy!

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More