Zeichenfolgentypen

Eine der häufigsten Verwendungsmöglichkeiten von Zeichenfolgen in einer Public Key-Infrastruktur (PKI) ist das Erstellen eines X.500-Distinguished Name. Beispielsweise wird der Betreffname einer Zertifikatanforderung erstellt, indem eine Sequenz relativer Distinguished Names kombiniert wird, wie im folgenden Syntaxbeispiel gezeigt.

---------------------------------------------------------------------
-- Breakdown of a subject name in a certificate request.
---------------------------------------------------------------------

CertificationRequestInfo ::= SEQUENCE 
{
   version                 CertificationRequestInfoVersion,
   subject                 Name,
   subjectPublicKeyInfo    SubjectPublicKeyInfo,
   attributes              [0] IMPLICIT Attributes
}

Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeTypeValue

AttributeTypeValue ::= SEQUENCE 
{
   type       OBJECT IDENTIFIER,
   value      ANY 
}

DirectoryString ::= CHOICE 
{
   teletexString           TeletexString (SIZE (1..MAX)),
   printableString         PrintableString (SIZE (1..MAX)),
   universalString         UniversalString (SIZE (1..MAX)),
   utf8String              UTF8String (SIZE (1..MAX)),
   bmpString               BMPString (SIZE (1..MAX)) 
}

Die Zertifikatregistrierungs-API unterstützt die folgenden ASN.1-Zeichenfolgentypen.

BMPString

Codierungstag: 0x1E

Certreq.exe Name: UNICODE _ STRING

Die Basic Multilingual Plane (BMP) ist eine Zeichencodierung, die die erste Ebene des Universal Character Set (UCS) umfasst. Es gibt siebzehn Ebenen mit der Nummer 0 bis 16. BMP belegt Ebene 0 und umfasst 65.536 Codepunkte von 0x0000 0xFFFF. Dies ist der Abschnitt der Unicode-Zeichenzuordnung, in dem die meisten Zeichenzuweisungen bisher vorgenommen wurden. Dazu gehören Lateinisch, Naher Osten, Asiatisch, Afrika und andere Sprachen.

IA5String

Codierungstag: 0x16

Certreq.exe Name: IA5 _ STRING

Das internationale Alphabet Nummer 5 (IA5) entspricht im Allgemeinen dem ASCII-Alphabet, aber verschiedene Versionen können Akzente oder andere Zeichen enthalten, die für eine regionale Sprache spezifisch sind. Das folgende Beispiel zeigt den IA5String-Typ, der in der ASN.1-Definition der AlternativeNames-Zertifikaterweiterung verwendet wird.

---------------------------------------------------------------------
-- AlternativeNames extension
---------------------------------------------------------------------

AltNames ::= SEQUENCE OF GeneralName

GeneralNames ::= AltNames

GeneralName ::= CHOICE 
{
   otherName               [0] IMPLICIT OtherName,
   rfc822Name              [1] IMPLICIT IA5String,
   dNSName                 [2] IMPLICIT IA5String,
   x400Address             [3] IMPLICIT SEQUENCE OF ANY, 
   directoryName           [4] EXPLICIT ANY,    
   ediPartyName            [5] IMPLICIT SEQUENCE OF ANY,
   uniformResourceLocator  [6] IMPLICIT IA5String,
   iPAddress               [7] IMPLICIT OCTET STRING,
   registeredID            [8] IMPLICIT OBJECT IDENTIFIER
}

OtherName ::= SEQUENCE 
{
   type                    OBJECT IDENTIFIER,
   value                   [0] EXPLICIT ANY 
}

PrintableString

Codierungstag: 0x13

Certreq.exe Name: DRUCKBARE _ ZEICHENFOLGE

Der PrintableString-Datentyp sollte ursprünglich die begrenzten Zeichensätze darstellen, die für Mainframeeingabeterminals verfügbar sind, wird aber weiterhin häufig verwendet. Sie enthält die folgenden Zeichen:

  • A-Z
  • a-z
  • 0-9
  • ' ( ) + , - . / : = ? [space]

TeletexString

Codierungstag: 0x14

Die Datentypen TeletexString und T61String werden auf 8 Bits (oder 16 Bits für zusammengesetzte Zeichen) codiert. Beide verfügen über eine Tagnummer von 0x14. Sie werden nicht häufig verwendet.

UTF8String

Codierungstag: 0x0C

Certreq.exe Name: UTF8 _ STRING

Das 8-Bit UCS/Unicode Transformation Format (UTF-8) ist eine Zeichencodierung variabler Länge, die jedes universelle Zeichen als Unicode-Zeichen darstellen kann, während anfängliche Codepunkte mit ASCII konsistent bleiben können. UTF-8 verwendet ein bis vier Bytes. Die Tagnummer ist 0x0C.

ASN.1-Typsystem

Distinguished Encoding Rules

DER-Codierung von ASN.1-Typen