pguecc
PostgreSQL的uECC绑定,椭圆曲线加解密函数包
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_ecdsa | 1.0 | UTIL | BSD 2-Clause | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 4460 | pguecc | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | hashlib shacrypt cryptint pgcrypto gzip bzip zstd http |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.0 | 1817161514 | pg_ecdsa | - |
| RPM | PIGSTY | 1.0 | 1817161514 | pg_ecdsa_$v | - |
| DEB | PIGSTY | 1.0 | 1817161514 | postgresql-$v-pg-ecdsa | - |
构建
您可以使用 pig build 命令构建 pg_ecdsa 扩展的 RPM / DEB 包:
pig build pkg pg_ecdsa # 构建 RPM / DEB 包
安装
您可以直接安装 pg_ecdsa 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_ecdsa; # 当前活跃 PG 版本安装
pig ext install -y pg_ecdsa -v 18 # PG 18
pig ext install -y pg_ecdsa -v 17 # PG 17
pig ext install -y pg_ecdsa -v 16 # PG 16
pig ext install -y pg_ecdsa -v 15 # PG 15
pig ext install -y pg_ecdsa -v 14 # PG 14
dnf install -y pg_ecdsa_18 # PG 18
dnf install -y pg_ecdsa_17 # PG 17
dnf install -y pg_ecdsa_16 # PG 16
dnf install -y pg_ecdsa_15 # PG 15
dnf install -y pg_ecdsa_14 # PG 14
apt install -y postgresql-18-pg-ecdsa # PG 18
apt install -y postgresql-17-pg-ecdsa # PG 17
apt install -y postgresql-16-pg-ecdsa # PG 16
apt install -y postgresql-15-pg-ecdsa # PG 15
apt install -y postgresql-14-pg-ecdsa # PG 14
创建扩展:
CREATE EXTENSION pguecc;
用法
需要 pgcrypto 扩展。
生成密钥对
SELECT ecdsa_make_key('secp256k1');
-- (public_key_hex, private_key_hex)
签名数据
SELECT ecdsa_sign(
'000000000000000000000000000000000000000000', -- 私钥(十六进制)
'1234', -- 要签名的数据
'sha256', -- 哈希函数
'secp160r1' -- 曲线名称
);
验证签名
SELECT ecdsa_verify(
'<public_key_hex>',
'hello, world',
'<signature_hex>',
'sha256',
'secp256k1'
);
-- t
密钥验证
SELECT ecdsa_is_valid_public_key('<public_key_hex>', 'secp256k1');
SELECT ecdsa_is_valid_private_key('<private_key_hex>', 'secp256k1');
SELECT ecdsa_is_valid_curve('secp256k1'); -- true
支持的曲线
secp160r1、secp192r1、secp224r1、secp256r1、secp256k1
原始 API
直接签名(不进行哈希处理,请谨慎使用):
SELECT ecdsa_sign_raw(private_key_bytea, hash_bytea, 'secp256k1');
SELECT ecdsa_verify_raw(public_key_bytea, hash_bytea, signature_bytea, 'secp256k1');