Asn-Package

Das Asn-Package enthält eine Java Bibliothek, mit der Daten im ASN.1 Format geparst und erzeugt werden können:

AsnAnyType - Superklasse aller ASN-Datentypen
AsnBitString - repräsentiert eine Folge von Bits
AsnBoolean - repräsentiert einen Wahrheitswert
AsnEnumerated - repräsentiert einen Wert einer Enumeration
AsnInteger - repräsentiert eine nichtnegative ganze Zahl
AsnNull - hat keinen Inhalt
AsnObjectIdentifier - identifiziert ein Objekt
AsnOctetString - repräsentiert eine Folge von Bytes
AsnSequence - Sequenz von ASN-Datenobjekten
AsnSet - Menge von ASN-Datenobjekten
AsnString - repräsentiert eine Zeichenkette
AsnUtcTime - repräsentiert einen Datumswert
AsnVariant - enthält die Header-Informationen zu einem ASN-Datenobjekt und einen Parser
AsnObjectDictionary - liefert verständliche Namen zu Objektbezeichnern


Parser

ASN-Datenobjekte können mit der Methode AsnVariant.parse(byte[] buffer, int offset) geparst werden. Die Binärdarstellung der Objekte muss dabei im Puffer ab der angegebenen Position vorliegen.

Beispiel für ein geparstes Zertifikat (Kommandozeile: java asn1.AsnVariant <Dateiname>):

SEQUENCE {SEQUENCE {INTEGER 1001, SEQUENCE {OBJECT dsa with sha, NULL}, SEQUENCE {SET {SEQUENCE {OBJECT country, STRING Germany}}, SET {SEQUENCE {OBJECT organization, STRING (none)}}, SET {SEQUENCE {OBJECT organizational unit, STRING (none)}}, SET {SEQUENCE {OBJECT common name, STRING Andreas Motzek}}}, SEQUENCE {UTCTIME true, UTCTIME true}, SEQUENCE {SET {SEQUENCE {OBJECT country, STRING Germany}}, SET {SEQUENCE {OBJECT organization, STRING (none)}}, SET {SEQUENCE {OBJECT organizational unit, STRING (none)}}, SET {SEQUENCE {OBJECT common name, STRING Andreas Motzek}}}, SEQUENCE {SEQUENCE {OBJECT dsa, SEQUENCE {INTEGER 13232376895198612407547930718267435757728527029623408872245156039757713029036368719146452186041204237350521785240337048752071462798273003935646236777459223, INTEGER 857393771208094202104259627990318636601332086981, INTEGER 5421644057436475141609648488325705128047428394380474376834667300766108262613900542681289080713724597310673074119355136085795982097390670890367185141189796}}, BITSTRING 02407380a88866c98c8a1bb5372ee96e2f3fd45d1ed4bc80b9eb0a1d1943fc67ab9772d1e4cae3c710dfc7015b314c62b8e151c1323aa1fbadca4fc8146a9d406621}}, SEQUENCE {OBJECT dsa with sha, NULL}, BITSTRING 302c02142cb88b4dc49fd2fcb8d3e11e94e264f36405c30d02141b6cab226825090a7a27e2547c0312dd9b2d18ef}


Umwandlung in BER

In ihre Binärdarstellung verwandelt werden die Datenobjekte durch die Methode int writeTo(byte[] buffer, int offset). Die Methode liefert die Zahl der in den Puffer geschriebenen Bytes zurück. Die Binärdarstellung beginnt ab der angegebenen Position.


Download

Die Quelltexte unterliegen der Modified Artistic License v1 und finden sich in der Version v3 in der unten verlinkten Jar-Datei mit dem Namen asnsrc.jar.

Zusätzlich wird noch das Collections-Package benötigt.


asnsrc.jar