Pakete, Repositories und App-Kategorien suchen

Paketdetailsv1.6.8

asn1lib

Eine ASN1-Parser-Bibliothek für Dart. Codiert/Dekodiert ASN1-Objekte in BER-Bytes

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
2,3 Mio.
Likes
27
Pub-Punkte
150

Paket installieren

flutter pub add asn1lib

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

asn1lib ist eine Dart-Bibliothek zum Parsen und Generieren von ASN.1-Datenstrukturen (Abstract Syntax Notation One) unter Verwendung der BER-Regeln (Basic Encoding Rules). Sie ermöglicht die Kodierung und Dekodierung von ASN.1-Objekten in und aus binären BER-Byte-Streams und eignet sich somit für die Arbeit mit Protokollen, die auf ASN.1 basieren, wie beispielsweise X.509-Zertifikate, LDAP und SNMP. Die Bibliothek unterstützt alle wichtigen Plattformen, darunter Android, iOS, Web, macOS, Windows und Linux. Sie bietet eine saubere, typensichere API zur Handhabung komplexer verschachtelter ASN.1-Strukturen.

Anwendungsfälle

  • Parsing von X.509-Zertifikaten
  • Arbeiten mit LDAP-Daten
  • Implementierung von SNMP-Clients
  • Umgang mit kryptografischen Datenformaten
  • Interoperabilität mit veralteten Systemen

Hauptmerkmale

  • BER-Codierung/Dekodierung
  • Unterstützung für verschachtelte ASN.1-Strukturen
  • Plattformübergreifende Kompatibilität
  • Typsichere Objektzuordnung
  • Leichtgewichtig und minimale Abhängigkeiten

Geeignet für

  • Entwickler, die mit kryptografischen Standards arbeiten
  • Systemintegratoren, die mit ASN.1-basierten Protokollen arbeiten
  • Anwendungen, die sichere Datenübertragung erfordern

Hinweise

  • Kenntnisse von ASN.1 und BER erforderlich
  • Nicht ideal für einfache JSON-ähnliche Daten
  • Eingeschränkte Dokumentation im Vergleich zu Hauptbibliotheken

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

ASN.1 Parser for Dart

Encodes & decodes ASN1 using BER encoding.

Samples

Encoding
import 'package:asn1lib/asn1lib.dart';

var s = ASN1Sequence();
s.add(ASN1Integer(23));
s.add(ASN1OctetString('This is a test'));
s.add(ASN1Boolean(true));

// GET the BER Stream
var bytes = s
.
encodedBytes;
Decoding
import 'package:asn1lib/asn1lib.dart';

// e.g. bytes from the Encoding Example
var p = ASN1Parser(bytes);
var s2 = p.nextObject();
// s2 is a sequence...


// relaxed parsing, returning a generic ASN1Object from (yet) unsupported structures, instead of throwing
var p2 = ASN1Parser(bytes, relaxedParsing: true);
var s3 = p2.nextObject();
// s3 is a sequence...

ASN1 Object classes

The library has been most thoroughly tested against ASN1 primitive class types, such as strings, integers, sequences and sets.

There is minimal support for ASN1 Application, Context-specific and Private classes. If the parser encounters these tags, it will wrap them in an a corresponding object ( ASN1Application, ASN1ContextSpecific, ASN1Private). You can force decode these to another type, by doing something like this:

    var s = parser.nextObject();
    // We expect this is a context-specific class
    expect(s, isA<ASN1ContextSpecific>());
    // which is also an ASN1Object...
    expect(s, isA<ASN1Object>());
    // We expect this is a sequence, so "recast" to a sequence type
    var sequence = ASN1Sequence.fromBytes(s.encodedBytes);
    expect(sequence, isA<ASN1Sequence>());

Breaking Changes

As of 1.6, the default encoding of ASN1OctetString("some string") has changed. It now encodes octets using utf8 encoding. This is different than Dart's default utf16 encoding.

If you need to encode to utf16, you should convert to bytes first:

var x = ASN1OctetString(Uint8List.fromList('some string'.codeUnits));
// new getter
var y = x.utf16StringValue;

The getter ASN1OctetString.stringValue is deprecated. You should use ASN1OctetString.utf8StringValue or ASN1OctetString.utf16StringValue instead.

Issues

ASN1 parsing is complex, so bugs are expected. If you find a bug, please provide a test case that demonstrates the issue, along with the expected output. Bonus points if it is formatted as a dart test.

References

  • https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/
  • https://luca.ntop.org/Teaching/Appunti/asn1.html
  • https://ldap.com/ldapv3-wire-protocol-reference-asn1-ber/

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden