PHP Classes

File: src/Core/Poly1305.php

Recommend this page to a friend!
  Classes of Scott Arciszewski   PHP Sodium Compat   src/Core/Poly1305.php   Download  
File: src/Core/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: Stricter typing
Clean up code warnings
Set minimum PHP version to 8.1 for v2.x
Date: 11 days ago
Size: 1,752 bytes
 

Contents

Class file image Download
<?php
declare(strict_types=1);

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

/**
 * Class ParagonIE_Sodium_Core_Poly1305
 */
abstract class ParagonIE_Sodium_Core_Poly1305 extends ParagonIE_Sodium_Core_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(
       
string $m,
       
#[SensitiveParameter]
       
string $key
   
): string {
        if (
self::strlen($key) < 32) {
            throw new
InvalidArgumentException(
               
'Key must be 32 bytes long.'
           
);
        }
       
$state = new ParagonIE_Sodium_Core_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(
       
string $mac,
       
string $m,
       
#[SensitiveParameter]
       
string $key
   
): bool {
        if (
self::strlen($key) < 32) {
            throw new
InvalidArgumentException(
               
'Key must be 32 bytes long.'
           
);
        }
       
$state = new ParagonIE_Sodium_Core_Poly1305_State(
           
self::substr($key, 0, 32)
        );
       
$calc = $state
           
->update($m)
            ->
finish();
        return
self::verify_16($calc, $mac);
    }
}