Uname: Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux
Software: Apache
PHP version: 5.6.40 [ PHP INFO ] PHP os: Linux
Server Ip: 217.160.0.194
Your Ip: 216.73.216.55
User: u72294154 (9179942) | Group: ftpusers (600)
Safe Mode: OFF
Disable Function:
NONE

name : CCMTest.php
<?php

class Vectors_Cipher_Block_Mode_CCMTest extends PHPUnit_Framework_TestCase {

    /**
     * @return array The test vectors
     */
    public static function provideTestEncryptVectors() {
        $results = array();
        $file = \CryptLibTest\getTestDataFile('Vectors/ccm-RFC3610.test-vectors');
        $parser = new CryptLibTest\lib\VectorParser\RFC3610($file);
        $vectors = $parser->getVectors();
        foreach ($vectors as $vector) {
            $results[] = array(
                'aes-128',
                $vector['AES Key'],
                $vector['Nonce'],
                $vector['Data'],
                $vector['Adata'],
                $vector['Cipher'],
                2,
                $vector['Asize'],
            );
        }
        return $results;
    }

    public static function provideTestDecryptVectors() {
        $results = array();
        $file = \CryptLibTest\getTestDataFile('Vectors/ccm-cavs11-dvpt.decryption.test-vectors');
        $parser = new CryptLibTest\lib\VectorParser\CAVS($file);
        $vectors = $parser->getVectors();
        foreach ($vectors as $vector) {
            $results[] = array(
                'aes-128',
                $vector['Key'],
                $vector['Nonce'],
                isset($vector['Payload']) ? $vector['Payload'] : '',
                $vector['Adata'],
                $vector['CT'],
                $vector['Result'],
                $vector['Alen'],
                $vector['Plen'],
                $vector['Nlen'],
                $vector['Tlen'],
            );
        }
        return $results;
    }

    /**
     * @dataProvider provideTestEncryptVectors
     * @group Vectors
     */
    public function testEncrypt($cipher, $key, $initv, $data, $adata, $expected, $lSize, $tSize) {
        $cipher = new \CryptLib\Cipher\Block\Cipher\AES($cipher);
        $cipher->setKey(pack('H*', $key));
        $options = array(
            'adata' => pack('H*', $adata),
            'lSize' => $lSize,
            'aSize' => $tSize,
        );
        $mode = new \CryptLib\Cipher\Block\Mode\CCM($cipher, pack('H*', $initv), $options);
        $mode->encrypt(pack('H*', $data));
        $enc = $mode->finish();
        $this->assertEquals($expected, strtoupper(bin2hex($enc)));
    }

    /**
     * @dataProvider provideTestDecryptVectors
     * @group Vectors
     */
    public function testDecrypt($cipher, $key, $initv, $data, $adata, $expected, $result, $asize, $psize, $nsize, $tsize) {
        $cipher = new \CryptLib\Cipher\Block\Cipher\AES($cipher);
        $cipher->setKey(pack('H*', $key));
        if ($asize == 0) {
            $adata = '';
        }
        if ($psize == 0) {
            $data = 0;
        }
        $options = array(
            'adata' => pack('H*', $adata),
            'lSize' => 15 - $nsize,
            'aSize' => $tsize,
        );
        $mode = new \CryptLib\Cipher\Block\Mode\CCM($cipher, pack('H*', $initv), $options);
        $mode->decrypt(pack('H*', $expected));
        $enc = $mode->finish();
        if ($enc === false) {
            $this->assertEquals('Fail', $result);
        } else {
            $this->assertEquals('Pass', $result);
        }
    }

}
© 2026 GrazzMean