nimiq/utils

Nimiq的PHP实用工具

0.1.0 2019-06-16 23:59 UTC

This package is auto-updated.

Last update: 2024-09-11 04:23:06 UTC


README

这是一个用于在PHP环境中处理Nimiq原语的工具类集合。它不是用来在PHP中启用Nimiq网络节点,而是用来验证签名、推导和验证地址以及处理PHP环境中的序列化原语。随着需求的出现或社区的增加,这个集合预计会随着时间的推移而增长。

安装

Nimiq PHP实用工具可通过Packagist软件包注册表获取,并可以使用Composer进行安装

composer require nimiq/utils

请注意,使用这些工具需要PHP >= 7.2和一个已安装的sodium扩展。请确保您已安装操作系统上的php-sodium软件包的等效项,或者激活主机PHP设置中的sodium扩展。

使用

实用工具类可在Nimiq\Utils命名空间中找到

use Nimiq\Utils\AddressUtils;
use Nimiq\Utils\SignatureUtils;
use Nimiq\Utils\RpcUtils;

要从十六进制表示形式生成字节编码字符串,可以使用sodium_hex2bin(),例如

$public_key = sodium_hex2bin('873279e12d5af18c4e899a781e55711f7910ed8ddb85b2179ece38a570253527');

AddressUtils

AddressUtils::pubkey2address(string $public_key[, bool $with_spaces = true]): string

将公钥转换为Nimiq用户友好的地址。

  • $public_key 代表Nimiq公钥的长度为32的字节编码字符串。
  • $with_spaces [可选] 设置为FALSE以输出不带空格的地址。

SignatureUtils

SignatureUtils::verify(string $signature, string $data, string $public_key): bool

验证给定数据和公钥的签名。

  • $signature 代表Nimiq签名的字节编码字符串。
  • $data 代表应验证签名的数据的字节编码字符串。
  • $public_key 代表签名人Nimiq公钥的字节编码字符串。
SignatureUtils::verify_message(string $signature, string $message, string $public_key): bool

验证给定消息和公钥的消息签名。

消息签名与常规签名不同,因为消息在签名之前会被前缀和散列。此方法在验证签名之前对消息应用相同的操作。

  • $signature 代表Nimiq消息签名的字节编码字符串。
  • $message 代表应验证签名的消息的纯文本表示。
  • $public_key 代表签名人Nimiq公钥的字节编码字符串。

RpcUtils

RpcUtils::prepareRedirectInvocation(string $targetURL, int $id, string $returnURL, string $command, array $args, string $responseMethod): string

使用URL片段编码参数生成重定向URL。

  • $targetURL 要重定向到的基URL,包括路径和查询参数(丢弃片段)。
  • $id RPC请求的数字ID,必须 >= 0。
  • $returnURL 请求成功或失败时返回的URL。
  • $command 应调用的函数的名称。
  • $args 要传递给调用函数的函数参数数组。
  • $responseMethod 如何接收响应:'message'(postMessage),'url'(GET重定向)或'POST'(POST重定向)

注意:目前不支持在$args中使用二进制字符串!

开发

钠加密方法在开发者的文档中最佳记录:[https://paragonie.com/book/pecl-libsodium](https://paragonie.com/book/pecl-libsodium)。

设置

  1. 使用PHP >= 7.2
  2. 安装sodium扩展
  3. 通过运行php test/version_check.php验证您是否已正确安装sodium扩展 - 如果它显示扩展的版本号,则一切准备就绪

测试

为了执行这些实用工具功能的最小测试,请运行

php test/test.php

预期的输出是

Is valid: bool(true)
Address:  NQ03 VDL0 TSF5 CFNX VNCL 4MGK 0BX7 150E VMXA