Source for file TSIG.php
Documentation is available at TSIG.php
* Net_DNS: A resolver library for PHP
* Copyright (c) 2002-2003 Eric Kilfoil eric@ypass.net
* Marco Kaiser <bate@php.net>
* Florian Anderiasch <fa@php.net>
* LICENSE: This source file is subject to version 3.01 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_01.txt. If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to license@php.net so we can mail you a copy immediately.
define('NET_DNS_DEFAULT_ALGORITHM', 'hmac-md5.sig-alg.reg.int');
define('NET_DNS_DEFAULT_FUDGE', 300 );
/* Net_DNS_RR_TSIG definition {{{ */
* A representation of a resource record of type <b>TSIG</b>
/* class variable definitions {{{ */
/* class constructor - RR(&$rro, $data, $offset = '') {{{ */
$this->name = $rro->name;
$this->type = $rro->type;
$this->class = $rro->class;
$this->rdata = $rro->rdata;
list ($alg, $offset) = $packet->dn_expand ($data, $offset);
$d = unpack(" @$offset/nth/Ntl/nfudge/nmac_size" , $data);
$this->fudge = $d['fudge'];
$d = unpack(" @$offset/noid/nerror/nolen" , $data);
$this->error = $d['error'];
$d = unpack('nodata_high/Nodata_low', $odata);
$this->key = $data['key'];
$this->algorithm = $data['algorithm'];
$this->fudge = $data['fudge'];
$this->mac = $data['mac'];
$this->error = $data['error'];
/* Net_DNS_RR_TSIG::rdatastr() {{{ */
if (strlen($this->algorithm)) {
$rdatastr = $this->algorithm . '. ' . $this->time_signed . ' ' .
/* Net_DNS_RR_TSIG::rr_rdata($packet, $offset) {{{ */
$newpacket->header ->arcount--;
$newpacket->compnames = array ();
* Add the request MAC if present (used to validate responses).
if (isset ($this->request_mac)) {
$sigdata .= pack('H*', $this->request_mac);
$sigdata .= $newpacket->data ();
* Don't compress the record (key) name.
* Don't compress the algorithm name.
$tmppacket->compnames = array ();
$sigdata .= $tmppacket->dn_comp (strtolower($this->algorithm), 0 );
* Don't compress the algorithm name.
$rdata .= $tmppacket->dn_comp (strtolower($this->algorithm), 0 );
$rdata .= pack('nnn',$packet->header ->id ,
/* Net_DNS_RR_TSIG::error() {{{ */
/* Net_DNS_RR_TSIG::hmac() {{{ */
// Calculate HMAC according to RFC2104
// http://www.ietf.org/rfc/rfc2104.txt
// posted by mina86 at tlen dot pl on http://php.net/manual/en/function.md5.php
function hmac($data, $key, $hash = 'md5', $blocksize = 64 ) {
/* Net_DNS_RR_TSIG::hmac_md5() {{{ */
// Calculate HMAC according to RFC2104
// http://www.ietf.org/rfc/rfc2104.txt
return md5(($key^ $opad) . md5(($key^ $ipad) . $data, true ), true );
* vim600: sw=4 ts=4 sts=4 cindent fdm=marker et
Documentation generated on Mon, 11 Mar 2019 15:41:45 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.
|