Class ASN1HEX
ASN.1 DER encoded hexadecimal string utility class
Defined in: asn1hex-1.1.js.
Constructor Attributes | Constructor Name and Description |
---|---|
ASN1HEX()
ASN.1 DER encoded hexadecimal string utility class
This class provides a parser for hexadecimal string of
DER encoded ASN.1 binary data.
|
Method Attributes | Method Name and Description |
---|---|
<static> |
ASN1HEX.dump(hexOrObj, flags, idx, indent)
get string of simple ASN.1 dump from hexadecimal ASN.1 data
This method will get an ASN.1 dump from hexadecmal string of ASN.1 DER encoded data. |
<static> |
ASN1HEX.getChildIdx(h, pos)
get array of string indexes of child ASN.1 objects
This method returns array of integers for a concatination of ASN.1 objects in a ASN.1 value. |
<static> |
ASN1HEX.getIdxbyList(h, currentIndex, nthList, checkingTag)
get string index of nth child object of ASN.1 object refered by h, idx
|
<static> |
ASN1HEX.getL(s, idx)
get hexadecimal string for ASN.1 L(length) bytes
|
<static> |
ASN1HEX.getLblen(s, idx)
get byte length for ASN.1 L(length) bytes
|
<static> |
ASN1HEX.getNextSiblingIdx(s, idx)
get next sibling starting index for ASN.1 object string
|
<static> |
ASN1HEX.getNthChildIdx(h, idx, nth)
get string index of nth child object of ASN.1 object refered by h, idx
|
<static> |
ASN1HEX.getTLV(s, idx)
get hexadecimal string of ASN.1 TLV at
|
<static> |
ASN1HEX.getTLVbyList(h, currentIndex, nthList, checkingTag)
get ASN.1 TLV by nthList
This static method is to get a ASN.1 value which specified "nthList" position with checking expected tag "checkingTag". |
<static> |
ASN1HEX.getV(s, idx)
get hexadecimal string of ASN.1 V(value)
|
<static> |
ASN1HEX.getVblen(s, idx)
get integer value of ASN.1 length for ASN.1 data
|
<static> |
ASN1HEX.getVbyList(h, currentIndex, nthList, checkingTag, removeUnusedbits)
get ASN.1 value by nthList
This static method is to get a ASN.1 value which specified "nthList" position with checking expected tag "checkingTag". |
<static> |
ASN1HEX.getVidx(s, idx)
get ASN.1 value starting string position for ASN.1 object refered by index 'idx'.
|
<static> |
ASN1HEX.hextooidstr(hex)
get OID string from hexadecimal encoded value
|
<static> |
ASN1HEX.isASN1HEX(hex)
check wheather the string is ASN.1 hexadecimal string or not
This method checks wheather the argument 'hex' is a hexadecimal string of
ASN.1 data or not.
|
<static> |
ASN1HEX.oidname(oidDotOrHex)
get hexacedimal string from PEM format data
This static method gets a OID name for a specified string of number dot notation (i.e. |
Class Detail
ASN1HEX()
ASN.1 DER encoded hexadecimal string utility class
This class provides a parser for hexadecimal string of
DER encoded ASN.1 binary data.
Here are major methods of this class.
- ACCESS BY POSITION
- ASN1HEX.getTLV - get ASN.1 TLV at specified position
- ASN1HEX.getV - get ASN.1 V at specified position
- ASN1HEX.getVlen - get integer ASN.1 L at specified position
- ASN1HEX.getVidx - get ASN.1 V position from its ASN.1 TLV position
- ASN1HEX.getL - get hexadecimal ASN.1 L at specified position
- ASN1HEX.getLblen - get byte length for ASN.1 L(length) bytes
- ACCESS FOR CHILD ITEM
- ASN1HEX.getNthChildIndex_AtObj - get nth child index at specified position
- ASN1HEX.getPosArrayOfChildren_AtObj - get indexes of children
- ASN1HEX.getPosOfNextSibling_AtObj - get position of next sibling
- ACCESS NESTED ASN.1 STRUCTURE
- ASN1HEX.getTLVbyList - get ASN.1 TLV at specified list index
- ASN1HEX.getVbyList - get ASN.1 V at specified nth list index with checking expected tag
- ASN1HEX.getIdxbyList - get index at specified list index
- UTILITIES
- ASN1HEX.dump - dump ASN.1 structure
- ASN1HEX.isASN1HEX - check whether ASN.1 hexadecimal string or not
- ASN1HEX.hextooidstr - convert hexadecimal string of OID to dotted integer list
- Since:
- jsrsasign 1.1
Method Detail
<static>
{String}
ASN1HEX.dump(hexOrObj, flags, idx, indent)
get string of simple ASN.1 dump from hexadecimal ASN.1 data
This method will get an ASN.1 dump from hexadecmal string of ASN.1 DER encoded data. Here are features:
This method will get an ASN.1 dump from hexadecmal string of ASN.1 DER encoded data. Here are features:
- ommit long hexadecimal string
- dump encapsulated OCTET STRING (good for X.509v3 extensions)
- structured/primitive context specific tag support (i.e. [0], [3] ...)
- automatic decode for implicit primitive context specific tag
(good for X.509v3 extension value)
- if hex starts '68747470'(i.e. http) it is decoded as utf8 encoded string.
- if it is in 'subjectAltName' extension value and is '[2]'(dNSName) tag value will be encoded as utf8 string
- otherwise it shows as hexadecimal string
// 1) ASN.1 INTEGER ASN1HEX.dump('0203012345') ↓ INTEGER 012345 // 2) ASN.1 Object Identifier ASN1HEX.dump('06052b0e03021a') ↓ ObjectIdentifier sha1 (1 3 14 3 2 26) // 3) ASN.1 SEQUENCE ASN1HEX.dump('3006020101020102') ↓ SEQUENCE INTEGER 01 INTEGER 02 // 4) ASN.1 SEQUENCE since jsrsasign 6.2.4 o = KJUR.asn1.ASN1Util.newObject({seq: [{int: 1}, {int: 2}]}); ASN1HEX.dump(o) ↓ SEQUENCE INTEGER 01 INTEGER 02 // 5) ASN.1 DUMP FOR X.509 CERTIFICATE ASN1HEX.dump(pemtohex(certPEM)) ↓ SEQUENCE SEQUENCE [0] INTEGER 02 INTEGER 0c009310d206dbe337553580118ddc87 SEQUENCE ObjectIdentifier SHA256withRSA (1 2 840 113549 1 1 11) NULL SEQUENCE SET SEQUENCE ObjectIdentifier countryName (2 5 4 6) PrintableString 'US' :
- Parameters:
- {Object} hexOrObj
- hexadecmal string of ASN.1 data or ASN1Object object
- {Array} flags
- associative array of flags for dump (OPTION)
- {Number} idx
- string index for starting dump (OPTION)
- {String} indent
- indent string (OPTION)
- Since:
- jsrsasign 4.8.3 asn1hex 1.1.6
- Returns:
- {String} string of simple ASN.1 dump
<static>
{Array of Number}
ASN1HEX.getChildIdx(h, pos)
get array of string indexes of child ASN.1 objects
This method returns array of integers for a concatination of ASN.1 objects in a ASN.1 value. As for BITSTRING, one byte of unusedbits is skipped. As for other ASN.1 simple types such as INTEGER, OCTET STRING or PRINTABLE STRING, it returns a array of a string index of its ASN.1 value.
NOTE: Since asn1hex 1.1.7 of jsrsasign 6.1.2, Encapsulated BitString is supported.
This method returns array of integers for a concatination of ASN.1 objects in a ASN.1 value. As for BITSTRING, one byte of unusedbits is skipped. As for other ASN.1 simple types such as INTEGER, OCTET STRING or PRINTABLE STRING, it returns a array of a string index of its ASN.1 value.
NOTE: Since asn1hex 1.1.7 of jsrsasign 6.1.2, Encapsulated BitString is supported.
ASN1HEX.getChildIdx("0203012345", 0) ⇒ [4] // INTEGER 012345 ASN1HEX.getChildIdx("1303616161", 0) ⇒ [4] // PrintableString aaa ASN1HEX.getChildIdx("030300ffff", 0) ⇒ [6] // BITSTRING ffff (unusedbits=00a) ASN1HEX.getChildIdx("3006020104020105", 0) ⇒ [4, 10] // SEQUENCE(INT4,INT5)
- Parameters:
- {String} h
- hexadecimal string of ASN.1 DER encoded data
- {Number} pos
- start string index of ASN.1 object
- Since:
- jsrsasign 7.2.0 asn1hex 1.1.11
- Returns:
- {Array of Number} array of indexes for childen of ASN.1 objects
<static>
{Number}
ASN1HEX.getIdxbyList(h, currentIndex, nthList, checkingTag)
get string index of nth child object of ASN.1 object refered by h, idx
The "nthList" is a index list of structured ASN.1 object reference. Here is a sample structure and "nthList"s which refers each objects. SQUENCE - SEQUENCE - [0] IA5STRING 000 - [0, 0] UTF8STRING 001 - [0, 1] SET - [1] IA5STRING 010 - [1, 0] UTF8STRING 011 - [1, 1]
- Parameters:
- {String} h
- hexadecimal string of ASN.1 DER encoded data
- {Number} currentIndex
- start string index of ASN.1 object
- {Array of Number} nthList
- array list of nth
- {String} checkingTag
- (OPTIONAL) string of expected ASN.1 tag for nthList
- Since:
- jsrsasign 7.1.4 asn1hex 1.1.10.
- Returns:
- {Number} string index refered by nthList
<static>
{String}
ASN1HEX.getL(s, idx)
get hexadecimal string for ASN.1 L(length) bytes
- Parameters:
- {String} s
- hexadecimal string of ASN.1 DER encoded data
- {Number} idx
- string index to get L of ASN.1 object
- Since:
- jsrsasign 7.2.0 asn1hex 1.1.11
- Returns:
- {String} hexadecimal string for ASN.1 L(length) bytes
<static>
ASN1HEX.getLblen(s, idx)
get byte length for ASN.1 L(length) bytes
ASN1HEX.getLblen('020100', 0) → 1 for '01' ASN1HEX.getLblen('020200', 0) → 1 for '02' ASN1HEX.getLblen('02818003...', 0) → 2 for '8180' ASN1HEX.getLblen('0282025b03...', 0) → 3 for '82025b' ASN1HEX.getLblen('0280020100...', 0) → -1 for '80' BER indefinite length ASN1HEX.getLblen('02ffab...', 0) → -2 for malformed ASN.1 length
- Parameters:
- {String} s
- hexadecimal string of ASN.1 DER encoded data
- {Number} idx
- string index
- Since:
- jsrsasign 7.2.0 asn1hex 1.1.11
- Returns:
- byte length for ASN.1 L(length) bytes
<static>
ASN1HEX.getNextSiblingIdx(s, idx)
get next sibling starting index for ASN.1 object string
SEQUENCE { INTEGER 3, INTEGER 4 } 3006 020103 :idx=4 020104 :next sibling idx=10 getNextSiblingIdx("3006020103020104", 4) & rarr 10
- Parameters:
- {String} s
- hexadecimal string of ASN.1 DER encoded data
- {Number} idx
- string index
- Since:
- jsrsasign 7.2.0 asn1hex 1.1.11
- Returns:
- next sibling starting index for ASN.1 object string
<static>
{Number}
ASN1HEX.getNthChildIdx(h, idx, nth)
get string index of nth child object of ASN.1 object refered by h, idx
- Parameters:
- {String} h
- hexadecimal string of ASN.1 DER encoded data
- {Number} idx
- start string index of ASN.1 object
- {Number} nth
- for child
- Since:
- jsrsasign 7.2.0 asn1hex 1.1.11
- Returns:
- {Number} string index of nth child.
<static>
{String}
ASN1HEX.getTLV(s, idx)
get hexadecimal string of ASN.1 TLV at
- Parameters:
- {String} s
- hexadecimal string of ASN.1 DER encoded data
- {Number} idx
- string index
- Since:
- jsrsasign 7.2.0 asn1hex 1.1.11
- Returns:
- {String} hexadecimal string of ASN.1 TLV.
<static>
ASN1HEX.getTLVbyList(h, currentIndex, nthList, checkingTag)
get ASN.1 TLV by nthList
This static method is to get a ASN.1 value which specified "nthList" position with checking expected tag "checkingTag".
This static method is to get a ASN.1 value which specified "nthList" position with checking expected tag "checkingTag".
- Parameters:
- {String} h
- hexadecimal string of ASN.1 structure
- {Integer} currentIndex
- string index to start searching in hexadecimal string "h"
- {Array} nthList
- array of nth list index
- {String} checkingTag
- (OPTIONAL) string of expected ASN.1 tag for nthList
- Since:
- jsrsasign 7.1.4 asn1hex 1.1.10
<static>
{String}
ASN1HEX.getV(s, idx)
get hexadecimal string of ASN.1 V(value)
- Parameters:
- {String} s
- hexadecimal string of ASN.1 DER encoded data
- {Number} idx
- string index
- Since:
- jsrsasign 7.2.0 asn1hex 1.1.11
- Returns:
- {String} hexadecimal string of ASN.1 value.
<static>
ASN1HEX.getVblen(s, idx)
get integer value of ASN.1 length for ASN.1 data
- Parameters:
- {String} s
- hexadecimal string of ASN.1 DER encoded data
- {Number} idx
- string index
- Since:
- jsrsasign 7.2.0 asn1hex 1.1.11
- Returns:
- ASN.1 L(length) integer value
<static>
ASN1HEX.getVbyList(h, currentIndex, nthList, checkingTag, removeUnusedbits)
get ASN.1 value by nthList
This static method is to get a ASN.1 value which specified "nthList" position with checking expected tag "checkingTag". NOTE: 'removeUnusedbits' flag has been supported since jsrsasign 7.1.14 asn1hex 1.1.10.
This static method is to get a ASN.1 value which specified "nthList" position with checking expected tag "checkingTag". NOTE: 'removeUnusedbits' flag has been supported since jsrsasign 7.1.14 asn1hex 1.1.10.
- Parameters:
- {String} h
- hexadecimal string of ASN.1 structure
- {Integer} currentIndex
- string index to start searching in hexadecimal string "h"
- {Array} nthList
- array of nth list index
- {String} checkingTag
- (OPTIONAL) string of expected ASN.1 tag for nthList
- {Boolean} removeUnusedbits
- (OPTIONAL) flag for remove first byte for value (DEFAULT false)
- Since:
- asn1hex 1.1.4
<static>
ASN1HEX.getVidx(s, idx)
get ASN.1 value starting string position for ASN.1 object refered by index 'idx'.
- Parameters:
- {String} s
- hexadecimal string of ASN.1 DER encoded data
- {Number} idx
- string index
- Since:
- jsrsasign 7.2.0 asn1hex 1.1.11
<static>
{String}
ASN1HEX.hextooidstr(hex)
get OID string from hexadecimal encoded value
- Parameters:
- {String} hex
- hexadecmal string of ASN.1 DER encoded OID value
- Since:
- asn1hex 1.1.5
- Returns:
- {String} OID string (ex. '1.2.3.4.567')
<static>
{Boolean}
ASN1HEX.isASN1HEX(hex)
check wheather the string is ASN.1 hexadecimal string or not
This method checks wheather the argument 'hex' is a hexadecimal string of
ASN.1 data or not.
ASN1HEX.isASN1HEX('0203012345') → true // PROPER ASN.1 INTEGER ASN1HEX.isASN1HEX('0203012345ff') → false // TOO LONG VALUE ASN1HEX.isASN1HEX('02030123') → false // TOO SHORT VALUE ASN1HEX.isASN1HEX('fa3bcd') → false // WRONG FOR ASN.1
- Parameters:
- {String} hex
- string to check whether it is hexadecmal string for ASN.1 DER or not
- Since:
- jsrsasign 4.8.3 asn1hex 1.1.6
- Returns:
- {Boolean} true if it is hexadecimal string of ASN.1 data otherwise false
<static>
{String}
ASN1HEX.oidname(oidDotOrHex)
get hexacedimal string from PEM format data
This static method gets a OID name for a specified string of number dot notation (i.e. 1.2.3) or hexadecimal string.
This static method gets a OID name for a specified string of number dot notation (i.e. 1.2.3) or hexadecimal string.
ASN1HEX.oidname("2.5.29.37") → extKeyUsage ASN1HEX.oidname("551d25") → extKeyUsage ASN1HEX.oidname("0.1.2.3") → 0.1.2.3 // unknown
- Parameters:
- {String} oidDotOrHex
- number dot notation(i.e. 1.2.3) or hexadecimal string for OID
- Since:
- jsrsasign 7.2.0 asn1hex 1.1.11
- Returns:
- {String} name for OID