PHP Classes

File: tests/ContextTestCase.php

Recommend this page to a friend!
  Classes of Scott Arciszewski   HPKE PHP   tests/ContextTestCase.php   Download  
File: tests/ContextTestCase.php
Role: Class source
Content type: text/plain
Description: Class source
Class: HPKE PHP
Encrypt and decrypt data using hybrid public keys
Author: By
Last change:
Date: 8 days ago
Size: 11,315 bytes
 

Contents

Class file image Download
<?php namespace ParagonIE\HPKE\Tests; use ParagonIE\HPKE\AEAD\{ AES128GCM, AES256GCM, ChaCha20Poly1305 }; use ParagonIE\HPKE\Context; use ParagonIE\HPKE\Hash; use ParagonIE\HPKE\HPKE; use ParagonIE\HPKE\Interfaces\SymmetricKeyInterface; use ParagonIE\HPKE\KDF\HKDF; use ParagonIE\HPKE\KEM\DHKEM\Curve; use ParagonIE\HPKE\KEM\DiffieHellmanKEM; use ParagonIE\HPKE\SymmetricKey; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; use SodiumException; #[CoversClass(Context::class)] abstract class ContextTestCase extends TestCase { /** * @ref https://www.rfc-editor.org/rfc/rfc9180.html#name-test-vectors * @throws SodiumException */ public static function sealTests(): array { $dhkem_x25519_aes128gcm = new HPKE( new DiffieHellmanKEM(Curve::X25519, new HKDF(Hash::Sha256)), new HKDF(Hash::Sha256), new AES128GCM() ); $dhkem_x25519_chapoly = new HPKE( new DiffieHellmanKEM(Curve::X25519, new HKDF(Hash::Sha256)), new HKDF(Hash::Sha256), new ChaCha20Poly1305() ); $dhkem_p256_aes128gcm = new HPKE( new DiffieHellmanKEM(Curve::NistP256, new HKDF(Hash::Sha256)), new HKDF(Hash::Sha256), new AES128GCM() ); $dhkem_p256_aes128gcm_mismatch = new HPKE( new DiffieHellmanKEM(Curve::NistP256, new HKDF(Hash::Sha256)), new HKDF(Hash::Sha512), new AES128GCM() ); $dhkem_p256_chapoly = new HPKE( new DiffieHellmanKEM(Curve::NistP256, new HKDF(Hash::Sha256)), new HKDF(Hash::Sha256), new ChaCha20Poly1305() ); $dhkem_p521_aes256gcm = new HPKE( new DiffieHellmanKEM(Curve::NistP521, new HKDF(Hash::Sha512)), new HKDF(Hash::Sha512), new AES256GCM() ); return [ 'DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, AES-128-GCM' => [ static::makeContext( $dhkem_x25519_aes128gcm, new SymmetricKey(sodium_hex2bin('4531685d41d65f03dc48f6b8302c05b0')), sodium_hex2bin('56d890e5accaaf011cff4b7d'), 0, sodium_hex2bin('45ff1c2e220db587171952c0592d5f5ebe103f1561a2614e38f2ffd47e99e3f8'), ), [ [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d30', 'ct_hex' => 'f938558b5d72f1a23810b4be2ab4f84331acc02fc97babc53a52ae8218a355a96d8770ac83d07bea87e13c512a' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d31', 'ct_hex' => 'af2d7e9ac9ae7e270f46ba1f975be53c09f8d875bdc8535458c2494e8a6eab251c03d0c22a56b8ca42c2063b84' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d32', 'ct_hex' => '498dfcabd92e8acedc281e85af1cb4e3e31c7dc394a1ca20e173cb72516491588d96a19ad4a683518973dcc180' ] ] ], 'DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, ChaCha20Poly1305' => [ static::makeContext( $dhkem_x25519_chapoly, new SymmetricKey(sodium_hex2bin('ad2744de8e17f4ebba575b3f5f5a8fa1f69c2a07f6e7500bc60ca6e3e3ec1c91')), sodium_hex2bin('5c4d98150661b848853b547f'), 0, sodium_hex2bin('a3b010d4994890e2c6968a36f64470d3c824c8f5029942feb11e7a74b2921922'), ), [ [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d30', 'ct_hex' => '1c5250d8034ec2b784ba2cfd69dbdb8af406cfe3ff938e131f0def8c8b60b4db21993c62ce81883d2dd1b51a28' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d31', 'ct_hex' => '6b53c051e4199c518de79594e1c4ab18b96f081549d45ce015be002090bb119e85285337cc95ba5f59992dc98c' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d32', 'ct_hex' => '71146bd6795ccc9c49ce25dda112a48f202ad220559502cef1f34271e0cb4b02b4f10ecac6f48c32f878fae86b' ] ] ], 'DHKEM(P-256, HKDF-SHA256), HKDF-SHA256, AES-128-GCM' => [ static::makeContext( $dhkem_p256_aes128gcm, new SymmetricKey(sodium_hex2bin('868c066ef58aae6dc589b6cfdd18f97e')), sodium_hex2bin('4e0bc5018beba4bf004cca59'), 0, sodium_hex2bin('14ad94af484a7ad3ef40e9f3be99ecc6fa9036df9d4920548424df127ee0d99f'), ), [ [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d30', 'ct_hex' => '5ad590bb8baa577f8619db35a36311226a896e7342a6d836d8b7bcd2f20b6c7f9076ac232e3ab2523f39513434' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d31', 'ct_hex' => 'fa6f037b47fc21826b610172ca9637e82d6e5801eb31cbd3748271affd4ecb06646e0329cbdf3c3cd655b28e82' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d32', 'ct_hex' => '895cabfac50ce6c6eb02ffe6c048bf53b7f7be9a91fc559402cbc5b8dcaeb52b2ccc93e466c28fb55fed7a7fec' ] ] ], 'DHKEM(P-256, HKDF-SHA256), HKDF-SHA512, AES-128-GCM' => [ static::makeContext( $dhkem_p256_aes128gcm_mismatch, new SymmetricKey(sodium_hex2bin('090ca96e5f8aa02b69fac360da50ddf9')), sodium_hex2bin('9c995e621bf9a20c5ca45546'), 0, sodium_hex2bin('4a7abb2ac43e6553f129b2c5750a7e82d149a76ed56dc342d7bca61e26d494f4855dff0d0165f27ce57756f7f16baca006539bb8e4518987ba610480ac03efa8'), ), [ [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d30', 'ct_hex' => 'd3cf4984931484a080f74c1bb2a6782700dc1fef9abe8442e44a6f09044c88907200b332003543754eb51917ba' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d31', 'ct_hex' => 'd14414555a47269dfead9fbf26abb303365e40709a4ed16eaefe1f2070f1ddeb1bdd94d9e41186f124e0acc62d' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d32', 'ct_hex' => '9bba136cade5c4069707ba91a61932e2cbedda2d9c7bdc33515aa01dd0e0f7e9d3579bf4016dec37da4aafa800' ] ] ], 'DHKEM(P-256, HKDF-SHA256), HKDF-SHA256, ChaCha20Poly1305' => [ static::makeContext( $dhkem_p256_chapoly, new SymmetricKey(sodium_hex2bin('a8f45490a92a3b04d1dbf6cf2c3939ad8bfc9bfcb97c04bffe116730c9dfe3fc')), sodium_hex2bin('726b4390ed2209809f58c693'), 0, sodium_hex2bin('4f9bd9b3a8db7d7c3a5b9d44fdc1f6e37d5d77689ade5ec44a7242016e6aa205'), ), [ [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d30', 'ct_hex' => '6469c41c5c81d3aa85432531ecf6460ec945bde1eb428cb2fedf7a29f5a685b4ccb0d057f03ea2952a27bb458b' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d31', 'ct_hex' => 'f1564199f7e0e110ec9c1bcdde332177fc35c1adf6e57f8d1df24022227ffa8716862dbda2b1dc546c9d114374' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d32', 'ct_hex' => '39de89728bcb774269f882af8dc5369e4f3d6322d986e872b3a8d074c7c18e8549ff3f85b6d6592ff87c3f310c' ] ] ], 'DHKEM(P-521, HKDF-SHA512), HKDF-SHA512, AES-256-GCM' => [ static::makeContext( $dhkem_p521_aes256gcm, new SymmetricKey(sodium_hex2bin('751e346ce8f0ddb2305c8a2a85c70d5cf559c53093656be636b9406d4d7d1b70')), sodium_hex2bin('55ff7a7d739c69f44b25447b'), 0, sodium_hex2bin('e4ff9dfbc732a2b9c75823763c5ccc954a2c0648fc6de80a58581252d0ee3215388a4455e69086b50b87eb28c169a52f42e71de4ca61c920e7bd24c95cc3f992'), ), [ [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d30', 'ct_hex' => '170f8beddfe949b75ef9c387e201baf4132fa7374593dfafa90768788b7b2b200aafcc6d80ea4c795a7c5b841a' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d31', 'ct_hex' => 'd9ee248e220ca24ac00bbbe7e221a832e4f7fa64c4fbab3945b6f3af0c5ecd5e16815b328be4954a05fd352256' ], [ 'pt_hex' => '4265617574792069732074727574682c20747275746820626561757479', 'aad_hex' => '436f756e742d32', 'ct_hex' => '142cf1e02d1f58d9285f2af7dcfa44f7c3f2d15c73d460c48c6e0e506a3144bae35284e7e221105b61d24e1c7a' ] ] ], ]; } abstract public static function makeContext( HPKE $hpke, SymmetricKeyInterface $key, string $baseNonce, int $sequence, #[\SensitiveParameter] string $exporterSecret, ): Context; }