10b3fd2d3SAndreas Gohr<?php 2*dad993c5SAndreas Gohr 30b3fd2d3SAndreas Gohr/** 40b3fd2d3SAndreas Gohr * This file is part of the FreeDSx LDAP LDAP package. 50b3fd2d3SAndreas Gohr * 60b3fd2d3SAndreas Gohr * (c) Chad Sikorra <Chad.Sikorra@gmail.com> 70b3fd2d3SAndreas Gohr * 80b3fd2d3SAndreas Gohr * For the full copyright and license information, please view the LICENSE 90b3fd2d3SAndreas Gohr * file that was distributed with this source code. 100b3fd2d3SAndreas Gohr */ 110b3fd2d3SAndreas Gohr 120b3fd2d3SAndreas Gohrnamespace FreeDSx\Ldap\Protocol; 130b3fd2d3SAndreas Gohr 140b3fd2d3SAndreas Gohruse FreeDSx\Asn1\Encoder\BerEncoder; 150b3fd2d3SAndreas Gohruse FreeDSx\Asn1\Type\AbstractType; 160b3fd2d3SAndreas Gohr 170b3fd2d3SAndreas Gohr/** 180b3fd2d3SAndreas Gohr * Applies some LDAP specific rules, and mappings, to the BER encoder, specified in RFC 4511. 190b3fd2d3SAndreas Gohr * 200b3fd2d3SAndreas Gohr * - Only the definite form of length encoding is used. 210b3fd2d3SAndreas Gohr * - OCTET STRING values are encoded in the primitive form only. 220b3fd2d3SAndreas Gohr * - If the value of a BOOLEAN type is true, the encoding of the value octet is set to hex "FF". 230b3fd2d3SAndreas Gohr * - If a value of a type is its default value, it is absent. 240b3fd2d3SAndreas Gohr * 250b3fd2d3SAndreas Gohr * @author Chad Sikorra <Chad.Sikorra@gmail.com> 260b3fd2d3SAndreas Gohr */ 270b3fd2d3SAndreas Gohrclass LdapEncoder extends BerEncoder 280b3fd2d3SAndreas Gohr{ 290b3fd2d3SAndreas Gohr /** 300b3fd2d3SAndreas Gohr * {@inheritdoc} 310b3fd2d3SAndreas Gohr */ 320b3fd2d3SAndreas Gohr public function __construct() 330b3fd2d3SAndreas Gohr { 340b3fd2d3SAndreas Gohr parent::__construct([ 350b3fd2d3SAndreas Gohr 'primitive_only' => [ 360b3fd2d3SAndreas Gohr AbstractType::TAG_TYPE_OCTET_STRING, 370b3fd2d3SAndreas Gohr ], 380b3fd2d3SAndreas Gohr ]); 390b3fd2d3SAndreas Gohr $this->setTagMap(AbstractType::TAG_CLASS_APPLICATION, [ 400b3fd2d3SAndreas Gohr 0 => AbstractType::TAG_TYPE_SEQUENCE, 410b3fd2d3SAndreas Gohr 1 => AbstractType::TAG_TYPE_SEQUENCE, 420b3fd2d3SAndreas Gohr 2 => AbstractType::TAG_TYPE_NULL, 430b3fd2d3SAndreas Gohr 3 => AbstractType::TAG_TYPE_SEQUENCE, 440b3fd2d3SAndreas Gohr 4 => AbstractType::TAG_TYPE_SEQUENCE, 450b3fd2d3SAndreas Gohr 5 => AbstractType::TAG_TYPE_SEQUENCE, 460b3fd2d3SAndreas Gohr 6 => AbstractType::TAG_TYPE_SEQUENCE, 470b3fd2d3SAndreas Gohr 7 => AbstractType::TAG_TYPE_SEQUENCE, 480b3fd2d3SAndreas Gohr 8 => AbstractType::TAG_TYPE_SEQUENCE, 490b3fd2d3SAndreas Gohr 9 => AbstractType::TAG_TYPE_SEQUENCE, 500b3fd2d3SAndreas Gohr 10 => AbstractType::TAG_TYPE_OCTET_STRING, 510b3fd2d3SAndreas Gohr 11 => AbstractType::TAG_TYPE_SEQUENCE, 520b3fd2d3SAndreas Gohr 12 => AbstractType::TAG_TYPE_SEQUENCE, 530b3fd2d3SAndreas Gohr 13 => AbstractType::TAG_TYPE_SEQUENCE, 540b3fd2d3SAndreas Gohr 14 => AbstractType::TAG_TYPE_SEQUENCE, 550b3fd2d3SAndreas Gohr 15 => AbstractType::TAG_TYPE_SEQUENCE, 560b3fd2d3SAndreas Gohr 16 => AbstractType::TAG_TYPE_INTEGER, 570b3fd2d3SAndreas Gohr 19 => AbstractType::TAG_TYPE_SEQUENCE, 580b3fd2d3SAndreas Gohr 23 => AbstractType::TAG_TYPE_SEQUENCE, 590b3fd2d3SAndreas Gohr 24 => AbstractType::TAG_TYPE_SEQUENCE, 600b3fd2d3SAndreas Gohr 25 => AbstractType::TAG_TYPE_SEQUENCE, 610b3fd2d3SAndreas Gohr ]); 620b3fd2d3SAndreas Gohr } 630b3fd2d3SAndreas Gohr} 64