• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/paysystem/asn1.php
  • Класс: BitrixSalePaySystemASN1
  • Вызов: ASN1::encodeDER
static function encodeDER($type, $value = '', $primitive = true, $class = 0) {
        $tag_header = $class;
        if (!$primitive) $tag_header |= 0x20;

        // Type
        if ($type < 0x1f) {
            $der = chr($tag_header | $type);
        } else {
            return NULL; // Long form required. not supported.
        }

        // Length
	$len = mb_strlen($value);
        if ($len <= 0x7f) {
            $der .= chr($len);
        } else {
            $pack = '';
            $n = 0;
            while ($len) {
                $pack .= chr($len & 0xff);
                $len >>= 8;
                $n++;
            }

            $der .= chr($n | 0x80);

            if (pack('V', 65534) == pack('L', 65534)) {
                $der .= strrev($pack); // Little endian machine - need to convert to big endian
            } else {
                $der = $pack;
            }
        }

        return $der . $value;
    }