Difference between revisions of "Unit ASN.1"

From Ultibo.org
Jump to: navigation, search
Line 140: Line 140:
 
----
 
----
  
''To be documented''
+
 
 +
'''ASN1 tag'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PASN1Tag = ^TASN1Tag;</code>
 +
 
 +
<code>TASN1Tag = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>TagNumber:LongWord;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>TagClass:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Length:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Constructed:Boolean;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Contents:PByte;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''ASN1 OID'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PASN1OID = ^TASN1OID;</code>
 +
 
 +
<code>TASN1OID = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Len:Integer;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>OID:array[0..ASN1_MAX_OID_LEN - 1] of LongWord;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
  
 
=== Public variables ===
 
=== Public variables ===

Revision as of 00:27, 19 April 2018

Return to Unit Reference


Description


Ultibo ASN.1 interface unit

Abstract Syntax Notation One (ASN.1) is an interface description language for defining data structures that can be serialized and deserialized in a standard, cross-platform way. It's broadly used in telecommunications and computer networking, and especially in cryptography.

This unit currently only provides the basic functionality required by X509 to read and parse a certificate in DER format.

It is expected that this unit will be expanded to incorporate additional functions over time.

Constants



ASN1 specific constants ASN1_*
ASN1_TAG_EOC = $00; Not used with DER
ASN1_TAG_BOOLEAN = $01;  
ASN1_TAG_INTEGER = $02;  
ASN1_TAG_BITSTRING = $03;  
ASN1_TAG_OCTETSTRING = $04;  
ASN1_TAG_NULL = $05;  
ASN1_TAG_OID = $06;  
ASN1_TAG_OBJECT_DESCRIPTOR = $07; Not supported
ASN1_TAG_EXTERNAL = $08; Not supported
ASN1_TAG_REAL = $09; Not supported
ASN1_TAG_ENUMERATED = $0A; Not supported
ASN1_TAG_EMBEDDED_PDV = $0B; Not supported
ASN1_TAG_UTF8STRING = $0C; Not supported
ANS1_TAG_RELATIVE_OID = $0D;  
ASN1_TAG_SEQUENCE = $10; Constructed
ASN1_TAG_SET = $11;  
ASN1_TAG_NUMERICSTRING = $12; Not supported
ASN1_TAG_PRINTABLESTRING = $13;  
ASN1_TAG_TG1STRING = $14; Not supported
ASN1_TAG_VIDEOTEXSTRING = $15; Not supported
ASN1_TAG_IA5STRING = $16;  
ASN1_TAG_UTCTIME = $17;  
ASN1_TAG_GENERALIZEDTIME = $18; Not supported
ASN1_TAG_GRAPHICSTRING = $19; Not supported
ASN1_TAG_VISIBLESTRING = $1A;  
ASN1_TAG_GENERALSTRING = $1B; Not supported
ASN1_TAG_UNIVERSALSTRING = $1C; Not supported
ASN1_TAG_CHARACTERSTRING = $1D; Not supported
ASN1_TAG_BMPSTRING = $1E; Not supported
 
ASN1_TAG_LONGFORM = $1F; Tag is encoded in long form
 
ASN1_CLASS_UNIVERSAL = 0;  
ASN1_CLASS_APPLICATION = 1;  
ASN1_CLASS_CONTEXT_SPECIFIC = 2;  
ASN1_CLASS_PRIVATE = 3;  
 
ASN1_MAX_OID_LEN = 20;  


Type definitions



ASN1 tag

PASN1Tag = ^TASN1Tag;

TASN1Tag = record

TagNumber:LongWord;  
TagClass:LongWord;  
Length:LongWord;  
Constructed:Boolean;  
Contents:PByte;  

ASN1 OID

PASN1OID = ^TASN1OID;

TASN1OID = record

Len:Integer;  
OID:array[0..ASN1_MAX_OID_LEN - 1] of LongWord;  


Public variables


None defined

Function declarations


To be documented


Return to Unit Reference