class File_ASN1 (View source)

Pure-PHP ASN.1 Parser

Properties

array $oids ASN.1 object identifier
string $format Default date format
array $encoded Default date format
array $filters Filters
array $ANYmap Type mapping table for the ANY type.
array $stringTypeSize String type to character size mapping table.

Methods

__construct()

Default Constructor.

File_ASN1()

PHP4 compatible Default Constructor.

array
decodeBER(string $encoded)

Parse BER-encoding

array
_decode_ber(string $encoded, int $start = 0, int $encoded_pos = 0)

Parse BER-encoding (Helper function)

array
asn1map(array $decoded, array $mapping, array $special = array())

ASN.1 Map

string
encodeDER(string $source, string $mapping, array $special = array())

ASN.1 Encode

string
_encode_der(string $source, string $mapping, int $idx = null, array $special = array())

ASN.1 Encode (Helper function)

string
_encodeLength(int $length)

DER-encode the length

string
_decodeOID(string $content)

BER-decode the OID

string
_encodeOID(string $source)

DER-encode the OID

string
_decodeUnixTime(string $content, int $tag)

BER-decode the time (using UNIX time)

string
_decodeDateTime(string $content, int $tag)

BER-decode the time (using DateTime)

setTimeFormat(string $format)

Set the time format

loadOIDs(array $oids)

Load OIDs

loadFilters(array $filters)

Load filters

string
_string_shift(string $string, int $index = 1)

String Shift

string
convert(string $in, int $from = FILE_ASN1_TYPE_UTF8_STRING, int $to = FILE_ASN1_TYPE_UTF8_STRING)

String type conversion

Details

__construct()

Default Constructor.

File_ASN1()

PHP4 compatible Default Constructor.

See also

\self::__construct()

array decodeBER(string $encoded)

Parse BER-encoding

Serves a similar purpose to openssl's asn1parse

Parameters

string $encoded

Return Value

array

array _decode_ber(string $encoded, int $start = 0, int $encoded_pos = 0)

Parse BER-encoding (Helper function)

Sometimes we want to get the BER encoding of a particular tag. $start lets us do that without having to reencode. $encoded is passed by reference for the recursive calls done for FILE_ASN1_TYPE_BIT_STRING and FILE_ASN1_TYPE_OCTET_STRING. In those cases, the indefinite length is used.

Parameters

string $encoded
int $start
int $encoded_pos

Return Value

array

array asn1map(array $decoded, array $mapping, array $special = array())

ASN.1 Map

Provides an ASN.1 semantic mapping ($mapping) from a parsed BER-encoding to a human readable format.

"Special" mappings may be applied on a per tag-name basis via $special.

Parameters

array $decoded
array $mapping
array $special

Return Value

array

string encodeDER(string $source, string $mapping, array $special = array())

ASN.1 Encode

DER-encodes an ASN.1 semantic mapping ($mapping). Some libraries would probably call this function an ASN.1 compiler.

"Special" mappings can be applied via $special.

Parameters

string $source
string $mapping
array $special

Return Value

string

string _encode_der(string $source, string $mapping, int $idx = null, array $special = array())

ASN.1 Encode (Helper function)

Parameters

string $source
string $mapping
int $idx
array $special

Return Value

string

string _encodeLength(int $length)

DER-encode the length

DER supports lengths up to (28)127, however, we'll only support lengths up to (28)4. See {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 paragraph 8.1.3} for more information.

Parameters

int $length

Return Value

string

string _decodeOID(string $content)

BER-decode the OID

Called by _decode_ber()

Parameters

string $content

Return Value

string

string _encodeOID(string $source)

DER-encode the OID

Called by _encode_der()

Parameters

string $source

Return Value

string

string _decodeUnixTime(string $content, int $tag)

BER-decode the time (using UNIX time)

Called by _decode_ber() and in the case of implicit tags asn1map().

Parameters

string $content
int $tag

Return Value

string

string _decodeDateTime(string $content, int $tag)

BER-decode the time (using DateTime)

Called by _decode_ber() and in the case of implicit tags asn1map().

Parameters

string $content
int $tag

Return Value

string

setTimeFormat(string $format)

Set the time format

Sets the time / date format for asn1map().

Parameters

string $format

loadOIDs(array $oids)

Load OIDs

Load the relevant OIDs for a particular ASN.1 semantic mapping.

Parameters

array $oids

loadFilters(array $filters)

Load filters

See File_X509, etc, for an example.

Parameters

array $filters

string _string_shift(string $string, int $index = 1)

String Shift

Inspired by array_shift

Parameters

string $string
int $index

Return Value

string

string convert(string $in, int $from = FILE_ASN1_TYPE_UTF8_STRING, int $to = FILE_ASN1_TYPE_UTF8_STRING)

String type conversion

This is a lazy conversion, dealing only with character size. No real conversion table is used.

Parameters

string $in
int $from
int $to

Return Value

string