Operaciones de apoyo a la seguridad de las estructuras basadas en Blockchain.
Las API del módulo Blockchain están destinadas a operaciones específicas para procesar la criptografía de la red blockchain y las especificaciones BIP, EIP y SLIP.
La firma ECDSA, por ejemplo, está especializada para evitar maleabilidad de la firmacon la restricción de BAJA-S
.
Ejemplos de operaciones disponibles en el módulo Blockchain:
- Generación de claves privadas extendidas (XPrv) en el estándar BIP32.
- Derivación de claves infantiles en las normas BIP32 y SLIP10.
- Recuperación de direcciones.
- Firmas digitales ECDSA, en las normas SECG DER estrictas (BIP62/66 y BIP 146) y Schnorr en la norma BIP340;
- Firmas digitales Curva EdDSA 25519.
- Verificación de firmas.
- Importación y exportación de claves mediante varios formatos (WIF, Hex, Sec1, Xpriv, etc.).
- Recuperación de la clave pública con diferentes formatos (BIP32 Xpub, Sec1 con y sin compresión, Schnorr BIP340 etc).
- Dividir y recuperar secretos con el esquema M de N utilizando SSS (Shamir's Secret Sharing).
- Operaciones con la curva
alt_bn128
según la EIP-196.
- Atención
- El módulo blockchain no maneja ni ensambla los detalles de la transacción para cada red en particular; esto debe dejarse a la aplicación. El trabajo del HSM es proteger la clave privada en un entorno seguro, generar y devolver una firma de acuerdo con los parámetros pasados por la aplicación que llama.
Redes compatibles
A continuación figura la lista de redes cuyo cifrado es compatible con HSM:
- Observación
- Los algoritmos enumerados son los actualmente implementados en el HSM que permiten firmar transacciones en la red y no cubren necesariamente todas las opciones definidas en la especificación de red. Dinamo Networks Si tiene alguna pregunta, no dude en ponerse en contacto y preguntar.
Entonces | Nombre | Símbolo | Alg. Firma en HSM | Curva | Obs |
| Bitcoin | BTC | ECDSA | secp256k1 | |
| Ethereum | ETH | ECDSA | secp256k1 | |
| Tether | USDT | ECDSA | secp256k1 | token en varias redes (por ejemplo, Ethereum, Algorand) |
| Binance Coin | BNB | ECDSA | secp256k1 | |
| Moneda USD | USDC | ECDSA | secp256k1 | ficha |
| Solana | SOL | EdDSA | edwards25519 | |
| XRP | XRP | ECDSA, EdDSA | secp256k1, edwards25519 | |
| Terra Classic | LUNC | ECDSA | secp256k1 | |
| Cardano | ADA | EdDSA | edwards25519 | |
| Avalancha | AVAX | ECDSA | secp256k1 | |
| Dogecoin | DOGE | ECDSA | secp256k1 | |
| Binance USD | BUSD | ECDSA | secp256k1 | ficha |
| Polkadot | DOT | ECDSA, EdDSA | secp256k1, edwards25519 | |
| Shiba Inu | SHIB | ECDSA | secp256k1 | ficha |
| Bitcoin envuelto | WBTC | ECDSA, EdDSA | secp256k1, edwards25519 | ficha |
| Polígono | MATIC | ECDSA | secp256k1 | |
| Cronos | CRO | ECDSA | secp256k1 | |
| Dai | DAI | ECDSA | secp256k1 | ficha |
| Protocolo NEAR | CERCA DE | ECDSA | secp256k1 | |
| Litecoin | LTC | ECDSA | secp256k1 | |
| TRON | TRX | ECDSA | secp256k1 | |
| ApeCoin | EPA | ECDSA | secp256k1 | ficha |
| Cosmos | ATOM | ECDSA | secp256k1 | |
| Bitcoin Efectivo | BCH | ECDSA | secp256k1 | |
| Algoritmo | ALGO | EdDSA | edwards25519 | |
| Token digital brasileño | BRZ | ECDSA | secp256k1 | ficha |
| Celo Real Brasileño | CREAL | ECDSA | secp256k1 | ficha |
| Celo Dólar | CUSD | ECDSA | secp256k1 | ficha |
| Axie Infinito | AXS | ECDSA | secp256k1 | ficha/moneda |
| Fantom | FTM | ECDSA | secp256k1 | |
| Uniswap | UNI | ECDSA | secp256k1 | ficha |
| Estelar | XLM | EdDSA | edwards25519 | |
| Tezos | XTZ | ECDSA, EdDSA | secp256k1, edwards25519 | |
| CELO | CELO | ECDSA | secp256k1 | ficha/moneda |
| Toncoin | TON | EdDSA | edwards25519 | |
| Enlace en cadena | ENLACE | ECDSA | secp256k1 | ficha |
La aplicación del HSM cumple las normas definidas en la documentación que se indica a continuación:
- BIP32 - Carteras deterministas jerárquicas
- PIF62 - Manejar la maleabilidad
- BIP66 - Firmas DER estrictas
- BIP340 - Firmas Schnorr para secp256k1
- SLIP10 - Derivación de clave privada universal a partir de la clave privada maestra
- EIP-2 - Cambios en la bifurcación de Homestead
- EIP-196 - Contratos precompilados para la suma y la multiplicación escalar en la curva elíptica alt_bn128
- EIP-197 - Contratos precompilados para la comprobación óptima del emparejamiento ate en la curva elíptica alt_bn128
|
void | BchainCreateXPrvBtcMinikey (cadena szId, bool isExportable, bool isTemporary) |
| Crea una clave privada XPriv para Bitcoin en formato minikey.
|
|
void | BchainCreateXPrvBip32 (cadena szId, byte bVersion, bool isExportable, bool isTemporary) |
| Crea una clave privada XPriv en formato BIP32.
|
|
void | BchainCreateXPrvBip32Seed (cadena szId, DinamoApi.DN_BCHAIN_BIP32_SEED_XPRV_DATA pData, bool isExportable, bool isTemporary) |
| Crea una clave privada XPriv en formato BIP32 utilizando semilla.
|
|
void | BchainCreateXPrvBip39Seed (cadena szId, DinamoApi.DN_BCHAIN_BIP39_SEED_XPRV_DATA pData, bool isExportable, bool isTemporary) |
| Crea una clave privada XPriv en formato BIP39 utilizando semilla.
|
|
DinamoApi.DN_BCHAIN_KEY_INFO | BchainCreateBip32Ckd (byte bVersion, UInt32 dwIndex, cadena szPar, cadena szDst, bool isExportable, bool isTemporary) |
| Realiza una operación de Derivación de Clave Hija (CKD). Deriva una clave privada extendida (XPrv) para la cadena de bloques en el estándar BIP32.
|
|
byte[] | BchainSignHash (byte bType, byte bHashMode, byte[] pbHash, cadena szPk) |
| Firma un hash utilizando el módulo Blockchain.
|
|
byte[] | BchainGetPubKey (byte bType, cadena szId) |
| Recupera una clave pública utilizando el módulo blockchain.
|
|
byte[] | BchainGetAddress (byte bType, byte bVersion, cadena szHrp, cadena szId) |
| Recupera la dirección de una clave utilizando el módulo blockchain.
|
|
byte[] | BchainEdDsaSign (byte bType, cadena szCtxStr, byte[] pbData, cadena szId) |
| Genera una firma EdDsa utilizando el módulo blockchain.
|
|
void | BchainGenerateKey (Dinamo.Hsm.DinamoClient.KEY_ALG dwAlg, string szId, bool isExportable, bool isTemporary) |
| Genera una clave marcada para su uso en el módulo blockchain.
|
|
◆ BchainCreateXPrvBtcMinikey()
void BchainCreateXPrvBtcMinikey |
( |
cadena | szId, |
|
|
bool | isExportable, |
|
|
bool | isTemporary ) |
|
en línea |
Crea una clave privada XPriv para Bitcoin en formato minikey.
- Parámetros
-
szId | Identificador clave. |
isExportable | La clave puede exportarse desde el HSM. |
isTemporary | La clave sólo existirá mientras la sesión esté activa. Se destruirá una vez cerrada la sesión. |
- Excepciones
-
◆ BchainCreateXPrvBip32()
void BchainCreateXPrvBip32 |
( |
cadena | szId, |
|
|
byte | bVersión, |
|
|
bool | isExportable, |
|
|
bool | isTemporary ) |
|
en línea |
Crea una clave privada XPriv en formato BIP32.
- Parámetros
-
szId | Identificador clave. |
bVersión | Versión clave. Consulte la tabla siguiente.
|
isExportable | La clave puede exportarse desde el HSM. |
isTemporary | La clave sólo existirá mientras la sesión esté activa. Se destruirá una vez cerrada la sesión. |
- Excepciones
-
- Ejemplos
- bchain_ckd.cs, bchain_get_address.cs, bchain_get_pub.cs y bchain_sign_hash.cs.
◆ BchainCreateXPrvBip32Seed()
Crea una clave privada XPriv en formato BIP32 utilizando semilla.
- Parámetros
-
szId | Identificador clave. |
pData | Datos para generar la clave. |
isExportable | La clave puede exportarse desde el HSM. |
isTemporary | La clave sólo existirá mientras la sesión esté activa. Se destruirá una vez cerrada la sesión. |
- Excepciones
-
◆ BchainCreateXPrvBip39Seed()
Crea una clave privada XPriv en formato BIP39 utilizando semilla.
- Parámetros
-
szId | Identificador clave. |
pData | Datos para generar la clave. |
isExportable | La clave puede exportarse desde el HSM. |
isTemporary | La clave sólo existirá mientras la sesión esté activa. Se destruirá una vez cerrada la sesión. |
- Excepciones
-
◆ BchainCreateBip32Ckd()
DinamoApi.DN_BCHAIN_KEY_INFO BchainCreateBip32Ckd |
( |
byte | bVersión, |
|
|
UInt32 | dwIndex, |
|
|
cadena | szPar, |
|
|
cadena | szDst, |
|
|
bool | isExportable, |
|
|
bool | isTemporary ) |
|
en línea |
Realiza una operación de Derivación de Clave Hija (CKD). Deriva una clave privada extendida (XPrv) para la cadena de bloques en el estándar BIP32.
- Parámetros
-
bVersión | Versión clave. Consulte la tabla siguiente.
|
dwIndex | Índice de la clave a derivar. Clave no endurecido utilizar el 0 a 231-1 y llaves endurecido índices de uso (sin restricciones de seguridad) de 231 a 232-1 como se especifica en la norma BIP32. Se recomienda encarecidamente generar claves reforzadas. Utilice DinamoApi.DN_BCHAIN_SECURE_BIP32_INDEX_BASE como base para generar índices endurecido (Ej. DinamoApi.DN_BCHAIN_SECURE_BIP32_INDEX_BASE + 1 ...). |
szPar | Identificador de la clave padre. |
szDst | Identificador de la clave derivada. Debe ser una clave XPrv(DinamoApi.DN_BCHAIN_BIP32_XPRV etc.) |
isExportable | La clave puede exportarse desde el HSM. |
isTemporary | La clave sólo existirá mientras la sesión esté activa. Se destruirá una vez cerrada la sesión. |
- Devolución
- Información sobre la clave derivada.
- Excepciones
-
- Ejemplos
- bchain_ckd.cs.
◆ BchainSignHash()
byte[] BchainSignHash |
( |
byte | bTipo, |
|
|
byte | bHashMode, |
|
|
byte[] | pbHash, |
|
|
cadena | szPk ) |
|
en línea |
Firma un hash utilizando el módulo Blockchain.
- Parámetros
-
bTipo | Tipo de llave.
Valor | Significado |
DinamoApi.DN_BCHAIN_SIG_DER_ECDSA | Firma DER, en el formato v || DER. SECG!SEC1 DER estricto con S baja como se describe en BIP62/66, BIP146, EIP2. Con 'v' de un tamaño de 1 byte. v' es el bit de paridad de 'r' y puede tener los valores 0 ó 1. |
DinamoApi.DN_BCHAIN_SIG_RAW_ECDSA | Firma RAW, en el formato v || r || s. v' tiene un tamaño de 1 byte y 'r' y 's' tienen un tamaño de 32 bytes cada uno. v' es el bit de paridad de 'r' y puede tener los valores 0 o 1. |
DinamoApi.DN_BCHAIN_SIG_BIP340 | Firma BIP340 - Schnorr 64 bytes. |
|
bHashMode | Tipo hash.
|
pbHash | Hash calculado según bHashMode . |
szPk | Identificador de la clave privada. |
- Devolución
- Firma.
- Excepciones
-
- Ejemplos
- bchain_sign_hash.cs.
◆ BchainGetPubKey()
byte[] BchainGetPubKey |
( |
byte | bTipo, |
|
|
cadena | szId ) |
|
en línea |
Recupera una clave pública utilizando el módulo blockchain.
- Parámetros
-
bTipo | Tipo de llave.
|
szId | Identificador de la clave privada. |
- Devolución
- Clave pública.
- Excepciones
-
- Ejemplos
- bchain_get_pub.cs.
◆ BchainGetAddress()
byte[] BchainGetAddress |
( |
byte | bTipo, |
|
|
byte | bVersión, |
|
|
cadena | szHrp, |
|
|
cadena | szId ) |
|
en línea |
Recupera la dirección de una clave utilizando el módulo blockchain.
- Parámetros
-
bTipo | Tipo de dirección a generar. Puede ser uno de los valores siguientes.
|
- Parámetros
-
bVersión | Versión de la dirección. Consulte la tabla siguiente.
|
szHrp | HRP (Human Readable Part) de la clave. Se aceptan los valores de la tabla. Debe tener un tamaño máximo de DinamoApi.DN_BCHAIN_MAX_HRP
|
szId | Identificador de la clave privada. |
- Devolución
- Dirección.
- Excepciones
-
- Ejemplos
- bchain_get_address.cs.
◆ BchainEdDsaSign()
byte[] BchainEdDsaSigno |
( |
byte | bTipo, |
|
|
cadena | szCtxStr, |
|
|
byte[] | pbData, |
|
|
cadena | szId ) |
|
en línea |
Genera una firma EdDsa utilizando el módulo blockchain.
- Parámetros
-
- Devolución
- Firma.
- Excepciones
-
- Ejemplos
- bchain_eddsa_sign.cs.
◆ BchainGenerateKey()
Genera una clave marcada para su uso en el módulo blockchain.
- Parámetros
-
dwAlg | Algoritmo que debe utilizarse. Dinamo.Hsm.DinamoClient.KEY_ALG |
szId | Identificador clave. |
isExportable | La clave puede exportarse desde el HSM. |
isTemporary | La clave sólo existirá mientras la sesión esté activa. Se destruirá una vez cerrada la sesión. |
- Excepciones
-
- Ejemplos
- bchain_eddsa_sign.cs.