PHP Classes

File: src/Core32/Poly1305.php

Recommend this page to a friend!
  Classes of Scott Arciszewski   PHP Sodium Compat   src/Core32/Poly1305.php   Download  
File: src/Core32/Poly1305.php
Role: Class source
Content type: text/plain
Description: Class source
Class: PHP Sodium Compat
Cryptographic functions of libsodium in pure PHP
Author: By
Last change: Fix 32-bit PHP integer woes
Date: 6 years ago
Size: 1,586 bytes
 

Contents

Class file image Download
<?php

if (class_exists('ParagonIE_Sodium_Core32_Poly1305', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_Poly1305
 */
abstract class ParagonIE_Sodium_Core32_Poly1305 extends ParagonIE_Sodium_Core32_Util
{
    const
BLOCK_SIZE = 16;

   
/**
     * @internal You should not use this directly from another application
     *
     * @param string $m
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
   
public static function onetimeauth($m, $key)
    {
        if (
self::strlen($key) < 32) {
            throw new
InvalidArgumentException(
               
'Key must be 32 bytes long.'
           
);
        }
       
$state = new ParagonIE_Sodium_Core32_Poly1305_State(
           
self::substr($key, 0, 32)
        );
        return
$state
           
->update($m)
            ->
finish();
    }

   
/**
     * @internal You should not use this directly from another application
     *
     * @param string $mac
     * @param string $m
     * @param string $key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
   
public static function onetimeauth_verify($mac, $m, $key)
    {
        if (
self::strlen($key) < 32) {
            throw new
InvalidArgumentException(
               
'Key must be 32 bytes long.'
           
);
        }
       
$state = new ParagonIE_Sodium_Core32_Poly1305_State(
           
self::substr($key, 0, 32)
        );
       
$calc = $state
           
->update($m)
            ->
finish();
        return
self::verify_16($calc, $mac);
    }
}