Pure-PHP ASN.1 Parser
author | Jim Wigginton terrafrost@php.net |
---|---|
package | Default |
asn1map(array $decoded,array $mapping,array $special = array()): array|boolean|\phpseclib3\File\ASN1\Element|string|null
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.
array
array
array
array|boolean|\phpseclib3\File\ASN1\Element|string|null
convert(string $in,integer $from = self::TYPE_UTF8_STRING,integer $to = self::TYPE_UTF8_STRING): string
This is a lazy conversion, dealing only with character size. No real conversion table is used.
string
integer
integer
string
decode_ber(string $encoded,integer $start,integer $encoded_pos): array|boolean
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 self::TYPE_BIT_STRING and self::TYPE_OCTET_STRING. In those cases, the indefinite length is used.
string
integer
integer
array|boolean
decodeBER(\phpseclib3\File\ASN1\Element|string $encoded): \phpseclib3\File\?array
Serves a similar purpose to openssl's asn1parse
\phpseclib3\File\ASN1\Element|string
\phpseclib3\File\?array
decodeLength(string &$string): integer
DER supports lengths up to (28)127, however, we'll only support lengths up to (28)4. See X.690 paragraph 8.1.3 for more information.
string
integer
decodeOID(string $content): string
Called by _decode_ber()
string
string
decodeTime(string $content,integer $tag): \DateTime|false
Called by _decode_ber() and in the case of implicit tags asn1map().
string
integer
\DateTime|false
encode_der(\phpseclib3\File\ASN1\Element|string|array|null $source,array $mapping,integer $idx = null,array $special = array()): string
\phpseclib3\File\ASN1\Element|string|array|null
array
integer
array
string
encodeDER(\phpseclib3\File\ASN1\Element|string|array $source,array $mapping,array $special = array()): string
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.
\phpseclib3\File\ASN1\Element|string|array
array
array
string
encodeLength(integer $length): string
DER supports lengths up to (28)127, however, we'll only support lengths up to (28)4. See X.690 paragraph 8.1.3 for more information.
integer
string
encodeOID(string $source): string
Called by _encode_der()
string
string
extractBER(string $str): string
string
string
getOID(string $name): string
What's returned in the associative array returned by loadX509() (or load*()) is either a name or an OID if no OID to name mapping is available. The problem with this is that what may be an unmapped OID in one version of phpseclib may not be unmapped in the next version, so apps that are looking at this OID may not be able to work from version to version.
This method will return the OID if a name is passed to it and if no mapping is avialable it'll assume that what's being passed to it already is an OID and return that instead. A few examples.
getOID('2.16.840.1.101.3.4.2.1') == '2.16.840.1.101.3.4.2.1' getOID('id-sha256') == '2.16.840.1.101.3.4.2.1' getOID('zzz') == 'zzz'
string
string
loadOIDs(array $oids)
Load the relevant OIDs for a particular ASN.1 semantic mapping. Previously loaded OIDs are retained.
array
setFilters(array $filters)
See \phpseclib3\File\X509, etc, for an example. Previously loaded filters are not retained.
array
setTimeFormat(string $format)
Sets the time / date format for asn1map().
string
CLASS_UNIVERSAL
CLASS_APPLICATION
CLASS_CONTEXT_SPECIFIC
CLASS_PRIVATE
TYPE_BOOLEAN
TYPE_INTEGER
TYPE_BIT_STRING
TYPE_OCTET_STRING
TYPE_NULL
TYPE_OBJECT_IDENTIFIER
TYPE_REAL
TYPE_ENUMERATED
TYPE_UTF8_STRING
TYPE_SEQUENCE
TYPE_SET
TYPE_NUMERIC_STRING
TYPE_PRINTABLE_STRING
TYPE_TELETEX_STRING
TYPE_VIDEOTEX_STRING
TYPE_IA5_STRING
TYPE_UTC_TIME
TYPE_GENERALIZED_TIME
TYPE_GRAPHIC_STRING
TYPE_VISIBLE_STRING
TYPE_GENERAL_STRING
TYPE_UNIVERSAL_STRING
TYPE_BMP_STRING
TYPE_CHOICE
TYPE_ANY
ANY_MAP
Structured or unknown types are mapped to a \phpseclib3\File\ASN1\Element. Unambiguous types get the direct mapping (int/real/bool). Others are mapped as a choice, with an extra indexing level.
var |
---|
STRING_TYPE_SIZE
Non-convertable types are absent from this table. size == 0 indicates variable length encoding.
var |
---|
oids :array
reverseOIDs :array
var |
---|
array
filters :array
If the mapping type is self::TYPE_ANY what do we actually encode it as?
var | |
---|---|
see |
array
location :array
Useful for debug purposes
var | |
---|---|
see |
array
encoded :string
In case we need to create ASN1\Element object's..
var | |
---|---|
see |
string