tourze/tls-extension-naming 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tourze/tls-extension-naming

最新稳定版本:0.0.1

Composer 安装命令:

composer require tourze/tls-extension-naming

包简介

TLS Extension Naming Package

README 文档

README

English | 中文

Latest Version Total Downloads License PHP Version Coverage Status

This package provides comprehensive TLS extension naming and handling functionality for PHP applications, implementing various TLS extensions according to RFC specifications.

Features

  • Full implementation of 20+ common TLS extensions
  • Type-safe extension handling with PHP 8.2+ enums
  • Easy-to-use factory methods for creating extensions
  • Encoding and decoding support for binary TLS data
  • Support for both TLS 1.2 and TLS 1.3 extensions
  • Comprehensive test coverage with 128 test cases

Installation

composer require tourze/tls-extension-naming

Supported Extensions

  • Server Name Indication (SNI) - RFC 6066
  • Application-Layer Protocol Negotiation (ALPN) - RFC 7301
  • Supported Versions - RFC 8446 (TLS 1.3)
  • Signature Algorithms - RFC 8446
  • Key Share - RFC 8446 (TLS 1.3)
  • Supported Groups - RFC 8446
  • Pre-Shared Key - RFC 8446 (TLS 1.3)
  • Early Data - RFC 8446 (TLS 1.3)
  • Extended Master Secret - RFC 7627
  • Session Ticket - RFC 5077
  • And many more...

Quick Start

Using the Extension Factory

use Tourze\TLSExtensionNaming\ExtensionFactory;

// Create a Server Name extension
$sniExtension = ExtensionFactory::createServerName('example.com');

// Create an ALPN extension
$alpnExtension = ExtensionFactory::createALPN(['h2', 'http/1.1']);

// Create a Supported Versions extension
$versionsExtension = ExtensionFactory::createSupportedVersions([
    0x0304, // TLS 1.3
    0x0303  // TLS 1.2
]);

// Create a Signature Algorithms extension
$sigAlgsExtension = ExtensionFactory::createSignatureAlgorithms([
    0x0804, // rsa_pss_rsae_sha256
    0x0401  // rsa_pkcs1_sha256
]);

// Create a Key Share extension
$keyShareExtension = ExtensionFactory::createKeyShare([
    ['group' => 0x001d, 'key_exchange' => 'public_key_data_here']
]);

Working with Extensions Directly

use Tourze\TLSExtensionNaming\Extension\ServerNameExtension;
use Tourze\TLSExtensionNaming\Extension\ALPNExtension;

// Server Name Extension
$sni = new ServerNameExtension();
$sni->addServerName('example.com')
    ->addServerName('www.example.com');

// Encode to binary
$encoded = $sni->encode();

// Decode from binary
$decoded = ServerNameExtension::decode($encoded);

// ALPN Extension
$alpn = new ALPNExtension();
$alpn->addProtocol(ALPNExtension::PROTOCOL_HTTP_2)
     ->addProtocol(ALPNExtension::PROTOCOL_HTTP_1_1);

Extension Types Enum

use Tourze\TLSExtensionNaming\Extension\ExtensionType;

// Access extension type values
$sniType = ExtensionType::SERVER_NAME->value; // 0x0000
$alpnType = ExtensionType::ALPN->value;       // 0x0010
$keyShareType = ExtensionType::KEY_SHARE->value; // 0x0033

// Get extension label
echo ExtensionType::SERVER_NAME->getLabel(); // "服务器名称指示"

// Get all registered extension types
$registeredTypes = ExtensionFactory::getRegisteredTypes();

Advanced Usage

Custom Extensions

You can register custom extension types:

use Tourze\TLSExtensionNaming\ExtensionFactory;
use Tourze\TLSExtensionNaming\Extension\AbstractExtension;

class MyCustomExtension extends AbstractExtension {
    public function getType(): int {
        return 0x9999;
    }
    
    public function encode(): string {
        // Implementation
    }
    
    public static function decode(string $data): static {
        // Implementation
    }
}

// Register the custom extension
ExtensionFactory::registerExtension(0x9999, MyCustomExtension::class);

Error Handling

use Tourze\TLSExtensionNaming\Exception\UnknownExtensionTypeException;
use Tourze\TLSExtensionNaming\Exception\ExtensionEncodingException;

try {
    $extension = ExtensionFactory::create(0x9999, $data);
} catch (UnknownExtensionTypeException $e) {
    echo "Unknown extension type: " . $e->getMessage();
} catch (ExtensionEncodingException $e) {
    echo "Encoding error: " . $e->getMessage();
}

Requirements

  • PHP 8.2 or higher
  • Composer

Testing

vendor/bin/phpunit

Contributing

Please see CONTRIBUTING.md for details.

License

The MIT License (MIT). Please see License File for more information.

统计信息

  • 总下载量: 53
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-06-15

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固