System.Formats.Asn1 11.0.0-preview.7.26381.103
About
Provides functionality for parsing, encoding, and decoding data using Abstract Syntax Notation One (ASN.1). ASN.1 is a standard interface description language for defining data structures that can be serialized and deserialized in a cross-platform way.
Key Features
- Parse ASN.1 data into .NET types.
- Encode .NET types into ASN.1 format.
- Support for BER, CER, DER: Handles Basic Encoding Rules (BER), Canonical Encoding Rules (CER), and Distinguished Encoding Rules (DER).
How to Use
Parsing ASN.1 data:
using System.Formats.Asn1;
using System.Numerics;
// Sample ASN.1 encoded data (DER format)
byte[] asn1Data = [0x30, 0x09, 0x02, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01, 0x03];
// Create an AsnReader to parse the data
AsnReader reader = new(asn1Data, AsnEncodingRules.DER);
// Parse the sequence
AsnReader sequenceReader = reader.ReadSequence();
// Read integers from the sequence
BigInteger firstInt = sequenceReader.ReadInteger();
BigInteger secondInt = sequenceReader.ReadInteger();
BigInteger thirdInt = sequenceReader.ReadInteger();
Console.WriteLine($"First integer: {firstInt}");
Console.WriteLine($"Second integer: {secondInt}");
Console.WriteLine($"Third integer: {thirdInt}");
// First integer: 1
// Second integer: 2
// Third integer: 3
Decoding ASN.1 data using AsnDecoder:
using System.Formats.Asn1;
using System.Numerics;
using System.Text;
// Sample ASN.1 encoded data
byte[] booleanData = [0x01, 0x01, 0xFF]; // BOOLEAN TRUE
byte[] integerData = [0x02, 0x01, 0x05]; // INTEGER 5
byte[] octetStringData = [0x04, 0x03, 0x41, 0x42, 0x43]; // OCTET STRING "ABC"
byte[] objectIdentifierData = [0x06, 0x03, 0x2A, 0x03, 0x04]; // OBJECT IDENTIFIER 1.2.3.4
byte[] utf8StringData = [0x0C, 0x05, 0x48, 0x65, 0x6C, 0x6C, 0x6F]; // UTF8String "Hello"
int bytesConsumed;
bool booleanValue = AsnDecoder.ReadBoolean(booleanData, AsnEncodingRules.DER, out bytesConsumed);
Console.WriteLine($"Decoded BOOLEAN value: {booleanValue}, Bytes consumed: {bytesConsumed}");
// Decoded BOOLEAN value: True, Bytes consumed: 3
BigInteger integerValue = AsnDecoder.ReadInteger(integerData, AsnEncodingRules.DER, out bytesConsumed);
Console.WriteLine($"Decoded INTEGER value: {integerValue}, Bytes consumed: {bytesConsumed}");
// Decoded INTEGER value: 5, Bytes consumed: 3
byte[] octetStringValue = AsnDecoder.ReadOctetString(octetStringData, AsnEncodingRules.DER, out bytesConsumed);
Console.WriteLine($"Decoded OCTET STRING value: {Encoding.ASCII.GetString(octetStringValue)}, Bytes consumed: {bytesConsumed}");
// Decoded OCTET STRING value: ABC, Bytes consumed: 5
string objectIdentifierValue = AsnDecoder.ReadObjectIdentifier(objectIdentifierData, AsnEncodingRules.DER, out bytesConsumed);
Console.WriteLine($"Decoded OBJECT IDENTIFIER value: {objectIdentifierValue}, Bytes consumed: {bytesConsumed}");
// Decoded OBJECT IDENTIFIER value: 1.2.3.4, Bytes consumed: 5
string utf8StringValue = AsnDecoder.ReadCharacterString(utf8StringData, AsnEncodingRules.DER, UniversalTagNumber.UTF8String, out bytesConsumed);
Console.WriteLine($"Decoded UTF8String value: {utf8StringValue}, Bytes consumed: {bytesConsumed}");
// Decoded UTF8String value: Hello, Bytes consumed: 7
Encoding ASN.1 data:
// Create an AsnWriter to encode data
AsnWriter writer = new(AsnEncodingRules.DER);
// Create a scope for the sequence
using (AsnWriter.Scope scope = writer.PushSequence())
{
// Write integers to the sequence
writer.WriteInteger(1);
writer.WriteInteger(2);
writer.WriteInteger(3);
}
// Get the encoded data
byte[] encodedData = writer.Encode();
Console.WriteLine($"Encoded ASN.1 Data: {BitConverter.ToString(encodedData)}");
// Encoded ASN.1 Data: 30-09-02-01-01-02-01-02-02-01-03
Main Types
The main types provided by this library are:
System.Formats.Asn1.AsnReaderSystem.Formats.Asn1.AsnWriterSystem.Formats.Asn1.AsnDecoderSystem.Formats.Asn1.AsnEncodingRules
Additional Documentation
- API documentation
- X.680 - Abstract Syntax Notation One (ASN.1): Specification of basic notation
- X.690 - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)
Feedback & Contributing
System.Formats.Asn1 is released as open source under the MIT license. Bug reports and contributions are welcome at the GitHub repository.
Showing the top 20 packages that depend on System.Formats.Asn1.
| Packages | Downloads |
|---|---|
|
Microsoft.DotNet.Scaffolding.Shared
Contains interfaces for Project Model and messaging for scaffolding.
|
173 |
|
Microsoft.EntityFrameworkCore.SqlServer
Microsoft SQL Server database provider for Entity Framework Core.
|
303 |
|
Microsoft.VisualStudio.Web.CodeGeneration
Contains the CodeGenCommand that finds the appropriate code generator and invokes it from project dependencies.
|
165 |
|
Microsoft.VisualStudio.Web.CodeGeneration.Design
Code Generation tool for ASP.NET Core. Contains the dotnet-aspnet-codegenerator command used for generating controllers and views.
|
596 |
|
Microsoft.VisualStudio.Web.CodeGenerators.Mvc
Code Generators for ASP.NET Core MVC. Contains code generators for MVC Controllers and Views.
|
208 |
|
NuGet.Packaging
NuGet's understanding of packages. Reading nuspec, nupkgs and package signing.
|
167 |
|
System.Security.Cryptography.Cng
Provides cryptographic algorithm implementations and key management with Windows Cryptographic Next Generation API (CNG).
Commonly Used Types:
System.Security.Cryptography.RSACng
System.Security.Cryptography.ECDsaCng
System.Security.Cryptography.CngKey
When using NuGet 3.x this package requires at least version 3.4.
|
269 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
|
165 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
|
167 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
|
170 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
|
172 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
|
174 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
|
176 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
|
181 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
|
184 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
|
199 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
|
206 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
When using NuGet 3.x this package requires at least version 3.4.
|
164 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
When using NuGet 3.x this package requires at least version 3.4.
|
167 |
|
System.Security.Cryptography.Pkcs
Provides support for PKCS and CMS algorithms.
Commonly Used Types:
System.Security.Cryptography.Pkcs.EnvelopedCms
When using NuGet 3.x this package requires at least version 3.4.
|
276 |
https://go.microsoft.com/fwlink/?LinkID=799421
.NET 10.0
- No dependencies.
.NET 11.0
- No dependencies.
.NET Framework 4.6.2
- System.Memory (>= 4.6.3)
- System.ValueTuple (>= 4.6.2)
.NET Standard 2.0
- System.Memory (>= 4.6.3)
| Version | Downloads | Last updated |
|---|---|---|
| 11.0.0-preview.7.26381.103 | 1 | 08/14/2026 |
| 11.0.0-preview.6.26359.118 | 14 | 07/17/2026 |
| 11.0.0-preview.5.26302.115 | 21 | 06/11/2026 |
| 11.0.0-preview.4.26230.115 | 19 | 05/12/2026 |
| 11.0.0-preview.3.26207.106 | 37 | 04/14/2026 |
| 11.0.0-preview.2.26159.112 | 47 | 03/12/2026 |
| 11.0.0-preview.1.26104.118 | 47 | 02/12/2026 |
| 10.0.11 | 1 | 08/14/2026 |
| 10.0.10 | 11 | 07/17/2026 |
| 10.0.9 | 16 | 06/10/2026 |
| 10.0.8 | 22 | 05/12/2026 |
| 10.0.7 | 40 | 04/21/2026 |
| 10.0.6 | 38 | 04/14/2026 |
| 10.0.5 | 40 | 03/12/2026 |
| 10.0.4 | 39 | 03/12/2026 |
| 10.0.3 | 47 | 02/12/2026 |
| 10.0.2 | 50 | 01/13/2026 |
| 10.0.1 | 50 | 12/10/2025 |
| 10.0.0 | 62 | 11/13/2025 |
| 10.0.0-rc.2.25502.107 | 78 | 10/15/2025 |
| 10.0.0-rc.1.25451.107 | 87 | 09/09/2025 |
| 10.0.0-preview.7.25380.108 | 104 | 08/15/2025 |
| 10.0.0-preview.6.25358.103 | 100 | 07/17/2025 |
| 10.0.0-preview.5.25277.114 | 99 | 06/10/2025 |
| 10.0.0-preview.4.25258.110 | 94 | 05/15/2025 |
| 10.0.0-preview.3.25171.5 | 130 | 04/13/2025 |
| 10.0.0-preview.2.25163.2 | 125 | 04/01/2025 |
| 10.0.0-preview.1.25080.5 | 127 | 04/01/2025 |
| 9.0.19 | 1 | 08/14/2026 |
| 9.0.18 | 9 | 07/18/2026 |
| 9.0.17 | 18 | 06/10/2026 |
| 9.0.16 | 29 | 05/12/2026 |
| 9.0.15 | 43 | 04/14/2026 |
| 9.0.14 | 39 | 03/12/2026 |
| 9.0.13 | 41 | 02/12/2026 |
| 9.0.12 | 47 | 01/13/2026 |
| 9.0.11 | 71 | 11/13/2025 |
| 9.0.10 | 88 | 10/15/2025 |
| 9.0.9 | 76 | 09/09/2025 |
| 9.0.8 | 93 | 08/06/2025 |
| 9.0.7 | 104 | 07/09/2025 |
| 9.0.6 | 113 | 06/12/2025 |
| 9.0.5 | 124 | 05/16/2025 |
| 9.0.4 | 109 | 04/10/2025 |
| 9.0.3 | 124 | 04/01/2025 |
| 9.0.2 | 116 | 04/01/2025 |
| 9.0.1 | 116 | 04/01/2025 |
| 9.0.0 | 117 | 11/14/2024 |
| 9.0.0-rc.2.24473.5 | 150 | 10/16/2024 |
| 9.0.0-rc.1.24431.7 | 114 | 09/19/2024 |
| 9.0.0-preview.7.24405.7 | 116 | 09/02/2024 |
| 9.0.0-preview.6.24327.7 | 129 | 07/22/2024 |
| 9.0.0-preview.5.24306.7 | 145 | 07/22/2024 |
| 9.0.0-preview.4.24266.19 | 119 | 07/22/2024 |
| 9.0.0-preview.3.24172.9 | 139 | 07/22/2024 |
| 9.0.0-preview.2.24128.5 | 144 | 07/22/2024 |
| 9.0.0-preview.1.24080.9 | 132 | 07/22/2024 |
| 8.0.2 | 130 | 04/02/2025 |
| 8.0.1 | 181 | 07/22/2024 |
| 8.0.0 | 146 | 02/05/2024 |
| 8.0.0-rc.2.23479.6 | 130 | 07/22/2024 |
| 8.0.0-rc.1.23419.4 | 138 | 07/22/2024 |
| 8.0.0-preview.7.23375.6 | 137 | 07/22/2024 |
| 8.0.0-preview.6.23329.7 | 131 | 07/22/2024 |
| 8.0.0-preview.5.23280.8 | 132 | 07/22/2024 |
| 8.0.0-preview.4.23259.5 | 136 | 07/22/2024 |
| 8.0.0-preview.3.23174.8 | 132 | 07/22/2024 |
| 8.0.0-preview.2.23128.3 | 147 | 07/22/2024 |
| 8.0.0-preview.1.23110.8 | 129 | 07/22/2024 |
| 7.0.0 | 132 | 07/22/2024 |
| 7.0.0-rc.2.22472.3 | 135 | 07/22/2024 |
| 7.0.0-rc.1.22426.10 | 138 | 07/22/2024 |
| 7.0.0-preview.7.22375.6 | 144 | 07/22/2024 |
| 7.0.0-preview.6.22324.4 | 144 | 07/22/2024 |
| 7.0.0-preview.5.22301.12 | 140 | 07/22/2024 |
| 7.0.0-preview.4.22229.4 | 136 | 07/22/2024 |
| 7.0.0-preview.3.22175.4 | 130 | 07/22/2024 |
| 7.0.0-preview.2.22152.2 | 144 | 07/22/2024 |
| 7.0.0-preview.1.22076.8 | 132 | 07/22/2024 |
| 6.0.2-mauipre.1.22054.8 | 59 | 11/27/2025 |
| 6.0.1 | 136 | 07/22/2024 |
| 6.0.0 | 294 | 02/09/2024 |
| 6.0.0-rc.2.21480.5 | 142 | 07/22/2024 |
| 6.0.0-rc.1.21451.13 | 144 | 07/22/2024 |
| 6.0.0-preview.7.21377.19 | 131 | 07/22/2024 |
| 6.0.0-preview.6.21352.12 | 142 | 07/22/2024 |
| 6.0.0-preview.5.21301.5 | 127 | 07/22/2024 |
| 6.0.0-preview.4.21253.7 | 143 | 07/22/2024 |
| 6.0.0-preview.3.21201.4 | 140 | 07/22/2024 |
| 6.0.0-preview.2.21154.6 | 139 | 07/22/2024 |
| 6.0.0-preview.1.21102.12 | 138 | 07/22/2024 |
| 5.0.0 | 299 | 02/04/2024 |
| 5.0.0-rc.2.20475.5 | 133 | 07/22/2024 |
| 5.0.0-rc.1.20451.14 | 139 | 07/22/2024 |
| 5.0.0-preview.8.20407.11 | 141 | 07/22/2024 |
| 5.0.0-preview.7.20364.11 | 136 | 07/22/2024 |