/bundled-libs/Net/DNS2/RR/TLSA.php
PHP | 194 lines | 45 code | 20 blank | 129 comment | 2 complexity | 501b17ab5d0c356d02773c62c69748ea MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-3.0, LGPL-2.1, MPL-2.0-no-copyleft-exception, Apache-2.0
- <?php
- /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
- /**
- * DNS Library for handling lookups and updates.
- *
- * PHP Version 5
- *
- * Copyright (c) 2012, Mike Pultz <mike@mikepultz.com>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * * Neither the name of Mike Pultz nor the names of his contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @category Networking
- * @package Net_DNS2
- * @author Mike Pultz <mike@mikepultz.com>
- * @copyright 2012 Mike Pultz <mike@mikepultz.com>
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version SVN: $Id$
- * @link http://pear.php.net/package/Net_DNS2
- * @since File available since Release 1.2.5
- *
- */
- /**
- * TLSA Resource Record - RFC 6698
- *
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Cert. Usage | Selector | Matching Type | /
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ /
- * / /
- * / Certificate Association Data /
- * / /
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *
- * @category Networking
- * @package Net_DNS2
- * @author Mike Pultz <mike@mikepultz.com>
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @link http://pear.php.net/package/Net_DNS2
- * @see Net_DNS2_RR
- *
- */
- class Net_DNS2_RR_TLSA extends Net_DNS2_RR
- {
- /*
- * The Certificate Usage Field
- */
- public $cert_usage;
- /*
- * The Selector Field
- */
- public $selector;
- /*
- * The Matching Type Field
- */
- public $matching_type;
- /*
- * The Certificate Association Data Field
- */
- public $certificate;
- /**
- * method to return the rdata portion of the packet as a string
- *
- * @return string
- * @access protected
- *
- */
- protected function rrToString()
- {
- return $this->cert_usage . ' ' . $this->selector . ' ' .
- $this->matching_type . ' ' . base64_encode($this->certificate);
- }
- /**
- * parses the rdata portion from a standard DNS config line
- *
- * @param array $rdata a string split line of values for the rdata
- *
- * @return boolean
- * @access protected
- *
- */
- protected function rrFromString(array $rdata)
- {
- $this->cert_usage = array_shift($rdata);
- $this->selector = array_shift($rdata);
- $this->matching_type = array_shift($rdata);
- $this->certificate = base64_decode(implode('', $rdata));
- return true;
- }
- /**
- * parses the rdata of the Net_DNS2_Packet object
- *
- * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet to parse the RR from
- *
- * @return boolean
- * @access protected
- *
- */
- protected function rrSet(Net_DNS2_Packet &$packet)
- {
- if ($this->rdlength > 0) {
- //
- // unpack the format, keytag and algorithm
- //
- $x = unpack('Cusage/Cselector/Ctype', $this->rdata);
- $this->cert_usage = $x['usage'];
- $this->selector = $x['selector'];
- $this->matching_type = $x['type'];
- //
- // copy the certificate
- //
- $this->certificate = substr($this->rdata, 3, $this->rdlength - 3);
- return true;
- }
- return false;
- }
- /**
- * returns the rdata portion of the DNS packet
- *
- * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet use for
- * compressed names
- *
- * @return mixed either returns a binary packed
- * string or null on failure
- * @access protected
- *
- */
- protected function rrGet(Net_DNS2_Packet &$packet)
- {
- if (strlen($this->certificate) > 0) {
- $data = pack(
- 'CCC', $this->cert_usage, $this->selector, $this->matching_type
- ) . $this->certificate;
- $packet->offset += strlen($data);
- return $data;
- }
- return null;
- }
- }
- /*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * c-hanging-comment-ender-p: nil
- * End:
- */
- ?>