From 1ecdf159bbb35847a616961ec9b5a788b15a3a4b Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Mon, 7 Oct 2019 16:15:27 +0300 Subject: [PATCH] Extern bearssl --- .gitmodules | 3 - libp2p.nimble | 3 +- libp2p/crypto/BearSSL | 1 - libp2p/crypto/common.nim | 483 --------------------------------------- libp2p/crypto/ecnist.nim | 2 +- libp2p/crypto/rsa.nim | 3 +- 6 files changed, 5 insertions(+), 490 deletions(-) delete mode 100644 .gitmodules delete mode 160000 libp2p/crypto/BearSSL delete mode 100644 libp2p/crypto/common.nim diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 45f96cbd9..000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "libp2p/crypto/BearSSL"] - path = libp2p/crypto/BearSSL - url = https://www.bearssl.org/git/BearSSL diff --git a/libp2p.nimble b/libp2p.nimble index b5f94f43c..d156f429b 100644 --- a/libp2p.nimble +++ b/libp2p.nimble @@ -10,7 +10,8 @@ skipDirs = @["tests", "examples", "Nim"] requires "nim > 0.18.0", "secp256k1", "nimcrypto >= 0.3.9", - "chronos" + "chronos", + "bearssl" proc runTest(filename: string) = exec "nim c -r tests/" & filename diff --git a/libp2p/crypto/BearSSL b/libp2p/crypto/BearSSL deleted file mode 160000 index c1bb5356b..000000000 --- a/libp2p/crypto/BearSSL +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c1bb5356bb52984178c269886b6835b532ef30c2 diff --git a/libp2p/crypto/common.nim b/libp2p/crypto/common.nim deleted file mode 100644 index 486e6fb60..000000000 --- a/libp2p/crypto/common.nim +++ /dev/null @@ -1,483 +0,0 @@ -## Nim-Libp2p -## Copyright (c) 2018 Status Research & Development GmbH -## Licensed under either of -## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) -## * MIT license ([LICENSE-MIT](LICENSE-MIT)) -## at your option. -## This file may not be copied, modified, or distributed except according to -## those terms. - -## This module implements interface with BearSSL library sources. -import strutils -from os import DirSep - -const - bearPath = currentSourcePath.rsplit(DirSep, 1)[0] & DirSep & - "BearSSL" & DirSep - bearSrcPath = bearPath & "src" - bearIncPath = bearPath & "inc" - bearIntPath = bearSrcPath & DirSep & "int" & DirSep - bearCodecPath = bearSrcPath & DirSep & "codec" & DirSep - bearRandPath = bearSrcPath & DirSep & "rand" & DirSep - bearRsaPath = bearSrcPath & DirSep & "rsa" & DirSep - bearEcPath = bearSrcPath & DirSep & "ec" & DirSep - bearX509Path = bearSrcPath & DirSep & "x509" & DirSep - bearMacPath = bearSrcPath & DirSep & "mac" & DirSep - bearHashPath = bearSrcPath & DirSep & "hash" & DirSep - -{.passC: "-I" & bearSrcPath} -{.passC: "-I" & bearIncPath} - -when defined(windows): - {.passC: "-DBR_USE_WIN32_TIME=1".} - {.passC: "-DBR_USE_WIN32_RAND=1".} -else: - {.passC: "-DBR_USE_UNIX_TIME=1".} - {.passC: "-DBR_USE_URANDOM=1".} - -when system.cpuEndian == bigEndian: - {.passC: "-DBR_BE_UNALIGNED=1".} -else: - {.passC: "-DBR_LE_UNALIGNED=1".} - -{.pragma: bearssl_func, importc, cdecl.} - -when sizeof(int) == 8: - {.passC: "-DBR_64=1".} - {.passC:" -DBR_amd64=1".} - when defined(vcc): - {.passC: "-DBR_UMUL128=1".} - else: - {.passC: "-DBR_INT128=1".} - - ## Codec sources - {.compile: bearCodecPath & "ccopy.c".} - {.compile: bearCodecPath & "enc64be.c".} - {.compile: bearCodecPath & "dec64be.c".} - {.compile: bearCodecPath & "enc32be.c".} - {.compile: bearCodecPath & "dec32be.c".} - {.compile: bearCodecPath & "pemenc.c".} - {.compile: bearCodecPath & "pemdec.c".} - - ## Big integer sources - {.compile: bearIntPath & "i31_add.c".} - {.compile: bearIntPath & "i31_bitlen.c".} - {.compile: bearIntPath & "i31_decmod.c".} - {.compile: bearIntPath & "i31_decode.c".} - {.compile: bearIntPath & "i31_decred.c".} - {.compile: bearIntPath & "i31_encode.c".} - {.compile: bearIntPath & "i31_fmont.c".} - {.compile: bearIntPath & "i31_iszero.c".} - {.compile: bearIntPath & "i31_moddiv.c".} - {.compile: bearIntPath & "i31_modpow.c".} - {.compile: bearIntPath & "i31_modpow2.c".} - {.compile: bearIntPath & "i31_montmul.c".} - {.compile: bearIntPath & "i31_mulacc.c".} - {.compile: bearIntPath & "i31_muladd.c".} - {.compile: bearIntPath & "i31_ninv31.c".} - {.compile: bearIntPath & "i31_reduce.c".} - {.compile: bearIntPath & "i31_rshift.c".} - {.compile: bearIntPath & "i31_sub.c".} - {.compile: bearIntPath & "i31_tmont.c".} - - ## Additional integer sources - {.compile: bearIntPath & "i32_div32.c".} - {.compile: bearIntPath & "i62_modpow2.c".} - - ## Random generator sources - {.compile: bearRandPath & "sysrng.c".} - {.compile: bearRandPath & "hmac_drbg.c".} - {.compile: bearRandPath & "aesctr_drbg.c".} - - ## HMAC sources - {.compile: bearMacPath & "hmac.c".} - {.compile: bearMacPath & "hmac_ct.c".} - - ## HASH sources - {.compile: bearHashPath & "mgf1.c".} - {.compile: bearHashPath & "ghash_ctmul64.c".} - {.compile: bearHashPath & "sha2small.c".} # SHA2-224/256 - {.compile: bearHashPath & "sha2big.c".} # SHA2-384/512 - - ## RSA sources - {.compile: bearRsaPath & "rsa_i31_keygen_inner.c".} - {.compile: bearRsaPath & "rsa_i62_keygen.c".} - {.compile: bearRsaPath & "rsa_i62_oaep_decrypt.c".} - {.compile: bearRsaPath & "rsa_i62_oaep_encrypt.c".} - {.compile: bearRsaPath & "rsa_i62_pkcs1_sign.c".} - {.compile: bearRsaPath & "rsa_i62_pkcs1_vrfy.c".} - {.compile: bearRsaPath & "rsa_i62_priv.c".} - {.compile: bearRsaPath & "rsa_i62_pub.c".} - {.compile: bearRsaPath & "rsa_oaep_pad.c".} - {.compile: bearRsaPath & "rsa_oaep_unpad.c".} - {.compile: bearRsaPath & "rsa_pkcs1_sig_pad.c".} - {.compile: bearRsaPath & "rsa_pkcs1_sig_unpad.c".} - {.compile: bearRsaPath & "rsa_ssl_decrypt.c".} - {.compile: bearRsaPath & "rsa_default_keygen.c".} - {.compile: bearRsaPath & "rsa_i31_modulus.c".} - {.compile: bearRsaPath & "rsa_i31_privexp.c".} - {.compile: bearRsaPath & "rsa_i31_pubexp.c".} - {.compile: bearRsaPath & "rsa_default_modulus.c".} - {.compile: bearRsaPath & "rsa_default_privexp.c".} - {.compile: bearRsaPath & "rsa_default_pubexp.c".} - {.compile: bearRsaPath & "rsa_default_pkcs1_sign.c".} - {.compile: bearRsaPath & "rsa_default_pkcs1_vrfy.c".} - - ## Elliptic Curve sources - {.compile: bearEcPath & "ec_all_m31.c".} - {.compile: bearEcPath & "ec_default.c".} - {.compile: bearEcPath & "ec_keygen.c".} - {.compile: bearEcPath & "ec_c25519_m31.c".} - {.compile: bearEcPath & "ec_c25519_m64.c".} - {.compile: bearEcPath & "ec_p256_m31.c".} - {.compile: bearEcPath & "ec_p256_m64.c".} - {.compile: bearEcPath & "ec_curve25519.c".} - {.compile: bearEcPath & "ec_prime_i31.c".} - {.compile: bearEcPath & "ec_pubkey.c".} - {.compile: bearEcPath & "ec_secp256r1.c".} - {.compile: bearEcPath & "ec_secp384r1.c".} - {.compile: bearEcPath & "ec_secp521r1.c".} - {.compile: bearEcPath & "ecdsa_i31_bits.c".} - {.compile: bearEcPath & "ecdsa_i31_sign_raw.c".} - {.compile: bearEcPath & "ecdsa_i31_sign_asn1.c".} - {.compile: bearEcPath & "ecdsa_i31_vrfy_asn1.c".} - {.compile: bearEcPath & "ecdsa_i31_vrfy_raw.c".} - {.compile: bearEcPath & "ecdsa_rta.c".} - {.compile: bearEcPath & "ecdsa_atr.c".} - -elif sizeof(int) == 4: - - ## Codec sources - {.compile: bearCodecPath & "ccopy.c".} - {.compile: bearCodecPath & "enc64be.c".} - {.compile: bearCodecPath & "dec64be.c".} - {.compile: bearCodecPath & "enc32be.c".} - {.compile: bearCodecPath & "dec32be.c".} - {.compile: bearCodecPath & "pemenc.c".} - {.compile: bearCodecPath & "pemdec.c".} - - ## Big integer sources - {.compile: bearIntPath & "i31_add.c".} - {.compile: bearIntPath & "i31_bitlen.c".} - {.compile: bearIntPath & "i31_decmod.c".} - {.compile: bearIntPath & "i31_decode.c".} - {.compile: bearIntPath & "i31_decred.c".} - {.compile: bearIntPath & "i31_encode.c".} - {.compile: bearIntPath & "i31_fmont.c".} - {.compile: bearIntPath & "i31_iszero.c".} - {.compile: bearIntPath & "i31_moddiv.c".} - {.compile: bearIntPath & "i31_modpow.c".} - {.compile: bearIntPath & "i31_modpow2.c".} - {.compile: bearIntPath & "i31_montmul.c".} - {.compile: bearIntPath & "i31_mulacc.c".} - {.compile: bearIntPath & "i31_muladd.c".} - {.compile: bearIntPath & "i31_ninv31.c".} - {.compile: bearIntPath & "i31_reduce.c".} - {.compile: bearIntPath & "i31_rshift.c".} - {.compile: bearIntPath & "i31_sub.c".} - {.compile: bearIntPath & "i31_tmont.c".} - - ## Additional integer sources - {.compile: bearIntPath & "i32_div32.c".} - - ## Random generator sources - {.compile: bearRandPath & "sysrng.c".} - {.compile: bearRandPath & "hmac_drbg.c".} - {.compile: bearRandPath & "aesctr_drbg.c".} - - ## HMAC sources - {.compile: bearMacPath & "hmac.c".} - {.compile: bearMacPath & "hmac_ct.c".} - - ## HASH sources - {.compile: bearHashPath & "mgf1.c".} - {.compile: bearHashPath & "ghash_ctmul.c".} - {.compile: bearHashPath & "sha2small.c".} # SHA2-224/256 - {.compile: bearHashPath & "sha2big.c".} # SHA2-384/512 - - ## RSA sources - {.compile: bearRsaPath & "rsa_i31_keygen_inner.c".} - {.compile: bearRsaPath & "rsa_i31_keygen.c".} - {.compile: bearRsaPath & "rsa_i31_oaep_decrypt.c".} - {.compile: bearRsaPath & "rsa_i31_oaep_encrypt.c".} - {.compile: bearRsaPath & "rsa_i31_pkcs1_sign.c".} - {.compile: bearRsaPath & "rsa_i31_pkcs1_vrfy.c".} - {.compile: bearRsaPath & "rsa_i31_priv.c".} - {.compile: bearRsaPath & "rsa_i31_pub.c".} - {.compile: bearRsaPath & "rsa_oaep_pad.c".} - {.compile: bearRsaPath & "rsa_oaep_unpad.c".} - {.compile: bearRsaPath & "rsa_pkcs1_sig_pad.c".} - {.compile: bearRsaPath & "rsa_pkcs1_sig_unpad.c".} - {.compile: bearRsaPath & "rsa_ssl_decrypt.c".} - {.compile: bearRsaPath & "rsa_default_keygen.c".} - {.compile: bearRsaPath & "rsa_i31_modulus.c".} - {.compile: bearRsaPath & "rsa_i31_privexp.c".} - {.compile: bearRsaPath & "rsa_i31_pubexp.c".} - {.compile: bearRsaPath & "rsa_default_modulus.c".} - {.compile: bearRsaPath & "rsa_default_privexp.c".} - {.compile: bearRsaPath & "rsa_default_pubexp.c".} - {.compile: bearRsaPath & "rsa_default_pkcs1_sign.c".} - {.compile: bearRsaPath & "rsa_default_pkcs1_vrfy.c".} - - ## Elliptic Curve sources - {.compile: bearEcPath & "ec_all_m31.c".} - {.compile: bearEcPath & "ec_default.c".} - {.compile: bearEcPath & "ec_keygen.c".} - {.compile: bearEcPath & "ec_c25519_m31.c".} - {.compile: bearEcPath & "ec_p256_m31.c".} - {.compile: bearEcPath & "ec_curve25519.c".} - {.compile: bearEcPath & "ec_prime_i31.c".} - {.compile: bearEcPath & "ec_pubkey.c".} - {.compile: bearEcPath & "ec_secp256r1.c".} - {.compile: bearEcPath & "ec_secp384r1.c".} - {.compile: bearEcPath & "ec_secp521r1.c".} - {.compile: bearEcPath & "ecdsa_i31_bits.c".} - {.compile: bearEcPath & "ecdsa_i31_sign_raw.c".} - {.compile: bearEcPath & "ecdsa_i31_sign_asn1.c".} - {.compile: bearEcPath & "ecdsa_i31_vrfy_asn1.c".} - {.compile: bearEcPath & "ecdsa_i31_vrfy_raw.c".} - {.compile: bearEcPath & "ecdsa_rta.c".} - {.compile: bearEcPath & "ecdsa_atr.c".} - -else: - error("Sorry, your target architecture is not supported!") - -const - BR_EC_SECP256R1* = 23 - BR_EC_SECP384R1* = 24 - BR_EC_SECP521R1* = 25 - - BR_EC_KBUF_PRIV_MAX_SIZE* = 72 - BR_EC_KBUF_PUB_MAX_SIZE* = 145 - -type - BrHashClass* {.importc: "br_hash_class", - header: "bearssl_hash.h", bycopy.} = object - contextSize* {.importc: "context_size".}: int - desc* {.importc: "desc".}: uint32 - init* {.importc: "init".}: proc (ctx: ptr ptr BrHashClass) {.cdecl.} - update* {.importc: "update".}: proc (ctx: ptr ptr BrHashClass, - data: pointer, len: int) {.cdecl.} - output* {.importc: "out".}: proc (ctx: ptr ptr BrHashClass, - dst: pointer) {.cdecl.} - state* {.importc: "state".}: proc (ctx: ptr ptr BrHashClass, - dst: pointer): uint64 {.cdecl.} - setState* {.importc: "set_state".}: proc (ctx: ptr ptr BrHashClass, - stb: pointer, - count: uint64) {.cdecl.} - - BrMd5Context* {.importc: "br_md5_context", - header: "bearssl_hash.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BrHashClass - buf* {.importc: "buf".}: array[64, cuchar] - count* {.importc: "count".}: uint64 - val* {.importc: "val".}: array[4, uint32] - - BrMd5sha1Context* {.importc: "br_md5sha1_context", - header: "bearssl_hash.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BrHashClass - buf* {.importc: "buf".}: array[64, cuchar] - count* {.importc: "count".}: uint64 - valMd5* {.importc: "val_md5".}: array[4, uint32] - valSha1* {.importc: "val_sha1".}: array[5, uint32] - - Sha1Context* {.importc: "br_sha1_context", - header: "bearssl_hash.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BrHashClass - buf* {.importc: "buf".}: array[64, cuchar] - count* {.importc: "count".}: uint64 - val* {.importc: "val".}: array[5, uint32] - - BrSha512Context* = BrSha384Context - BrSha384Context* {.importc: "br_sha384_context", - header: "bearssl_hash.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BrHashClass - buf* {.importc: "buf".}: array[128, cuchar] - count* {.importc: "count".}: uint64 - val* {.importc: "val".}: array[8, uint64] - - BrSha256Context* = BrSha224Context - BrSha224Context* {.importc: "br_sha224_context", - header: "bearssl_hash.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BrHashClass - buf* {.importc: "buf".}: array[64, cuchar] - count* {.importc: "count".}: uint64 - val* {.importc: "val".}: array[8, uint32] - - BrHashCompatContext* {.importc: "br_hash_compat_context", - header: "bearssl_hash.h", bycopy.} = object {.union.} - vtable* {.importc: "vtable".}: ptr BrHashClass - md5* {.importc: "md5".}: BrMd5Context - sha1* {.importc: "sha1".}: Sha1Context - sha224* {.importc: "sha224".}: BrSha224Context - sha256* {.importc: "sha256".}: BrSha256Context - sha384* {.importc: "sha384".}: BrSha384Context - sha512* {.importc: "sha512".}: BrSha512Context - md5sha1* {.importc: "md5sha1".}: BrMd5sha1Context - - BrPrngClass* {.importc: "br_prng_class", - header: "bearssl_rand.h", bycopy.} = object - contextSize* {.importc: "context_size".}: int - init* {.importc: "init".}: proc (ctx: ptr ptr BrPrngClass, params: pointer, - seed: pointer, seedLen: int) {.cdecl.} - generate* {.importc: "generate".}: proc (ctx: ptr ptr BrPrngClass, - output: pointer, - length: int) {.cdecl.} - update* {.importc: "update".}: proc (ctx: ptr ptr BrPrngClass, - seed: pointer, seedLen: int) {.cdecl.} - - BrHmacDrbgContext* {.importc: "br_hmac_drbg_context", - header: "bearssl_rand.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BrPrngClass - k* {.importc: "K".}: array[64, cuchar] - v* {.importc: "V".}: array[64, cuchar] - digestClass* {.importc: "digest_class".}: ptr BrHashClass - - BrRsaPublicKey* {.importc: "br_rsa_public_key", - header: "bearssl_rsa.h", bycopy.} = object - n* {.importc: "n".}: ptr cuchar - nlen* {.importc: "nlen".}: int - e* {.importc: "e".}: ptr cuchar - elen* {.importc: "elen".}: int - - BrRsaPrivateKey* {.importc: "br_rsa_private_key", - header: "bearssl_rsa.h", bycopy.} = object - nBitlen* {.importc: "n_bitlen".}: uint32 - p* {.importc: "p".}: ptr cuchar - plen* {.importc: "plen".}: int - q* {.importc: "q".}: ptr cuchar - qlen* {.importc: "qlen".}: int - dp* {.importc: "dp".}: ptr cuchar - dplen* {.importc: "dplen".}: int - dq* {.importc: "dq".}: ptr cuchar - dqlen* {.importc: "dqlen".}: int - iq* {.importc: "iq".}: ptr cuchar - iqlen* {.importc: "iqlen".}: int - - BrEcPublicKey* {.importc: "br_ec_public_key", header: "bearssl_ec.h", - bycopy.} = object - curve* {.importc: "curve".}: cint - q* {.importc: "q".}: ptr cuchar - qlen* {.importc: "qlen".}: int - - BrEcPrivateKey* {.importc: "br_ec_private_key", header: "bearssl_ec.h", - bycopy.} = object - curve* {.importc: "curve".}: cint - x* {.importc: "x".}: ptr cuchar - xlen* {.importc: "xlen".}: int - - BrEcImplementation* {.importc: "br_ec_impl", header: "bearssl_ec.h", - bycopy.} = object - supportedCurves* {.importc: "supported_curves".}: uint32 - generator* {.importc: "generator".}: proc (curve: cint, - length: ptr int): ptr cuchar {.cdecl, gcsafe.} - order* {.importc: "order".}: proc (curve: cint, - length: ptr int): ptr cuchar {.cdecl, gcsafe.} - xoff* {.importc: "xoff".}: proc (curve: cint, - length: ptr int): int {.cdecl, gcsafe.} - mul* {.importc: "mul".}: proc (g: ptr cuchar, glen: int, - x: ptr cuchar, xlen: int, - curve: cint): uint32 {.cdecl, gcsafe.} - mulgen* {.importc: "mulgen".}: proc (r: ptr cuchar, - x: ptr cuchar, xlen: int, - curve: cint): int {.cdecl, gcsafe.} - muladd* {.importc: "muladd".}: proc (a: ptr cuchar, b: ptr cuchar, - length: int, x: ptr cuchar, xlen: int, - y: ptr cuchar, ylen: int, - curve: cint): uint32 {.cdecl, gcsafe.} - - BrPrngSeeder* = proc (ctx: ptr ptr BrPrngClass): cint {.cdecl.} - BrRsaKeygen* = proc (ctx: ptr ptr BrPrngClass, - sk: ptr BrRsaPrivateKey, bufsec: ptr byte, - pk: ptr BrRsaPublicKey, bufpub: ptr byte, - size: cuint, pubexp: uint32): uint32 {.cdecl.} - BrRsaComputeModulus* = proc (n: pointer, - sk: ptr BrRsaPrivateKey): int {.cdecl.} - BrRsaComputePubexp* = proc (sk: ptr BrRsaPrivateKey): uint32 {.cdecl.} - BrRsaComputePrivexp* = proc (d: pointer, - sk: ptr BrRsaPrivateKey, - pubexp: uint32): int {.cdecl.} - BrRsaPkcs1Verify* = proc (x: ptr cuchar, xlen: int, - hash_oid: ptr cuchar, hash_len: int, - pk: ptr BrRsaPublicKey, - hash_out: ptr cuchar): uint32 {.cdecl.} - BrPemDecoderProc* = proc (destctx: pointer, src: pointer, - length: int) {.cdecl.} - BrRsaPkcs1Sign* = proc (hash_oid: ptr cuchar, hash: ptr cuchar, hash_len: int, - pk: ptr BrRsaPrivateKey, - x: ptr cuchar): uint32 {.cdecl.} - -proc brPrngSeederSystem*(name: cstringArray): BrPrngSeeder {.cdecl, - importc: "br_prng_seeder_system", header: "bearssl_rand.h".} - -proc brHmacDrbgInit*(ctx: ptr BrHmacDrbgContext, digestClass: ptr BrHashClass, - seed: pointer, seedLen: int) {. - cdecl, importc: "br_hmac_drbg_init", header: "bearssl_rand.h".} - -proc brRsaKeygenGetDefault*(): BrRsaKeygen {. - cdecl, importc: "br_rsa_keygen_get_default", header: "bearssl_rsa.h".} - -proc BrRsaPkcs1SignGetDefault*(): BrRsaPkcs1Sign {. - cdecl, importc: "br_rsa_pkcs1_sign_get_default", header: "bearssl_rsa.h".} - -proc BrRsaPkcs1VrfyGetDefault*(): BrRsaPkcs1Verify {. - cdecl, importc: "br_rsa_pkcs1_vrfy_get_default", header: "bearssl_rsa.h".} - -proc brRsaComputeModulusGetDefault*(): BrRsaComputeModulus {. - cdecl, importc: "br_rsa_compute_modulus_get_default", - header: "bearssl_rsa.h".} - -proc brRsaComputePubexpGetDefault*(): BrRsaComputePubexp {. - cdecl, importc: "br_rsa_compute_pubexp_get_default", - header: "bearssl_rsa.h".} - -proc brRsaComputePrivexpGetDefault*(): BrRsaComputePrivexp {. - cdecl, importc: "br_rsa_compute_privexp_get_default", - header: "bearssl_rsa.h".} - -proc brEcGetDefault*(): ptr BrEcImplementation {. - cdecl, importc: "br_ec_get_default", header: "bearssl_ec.h".} - -proc brEcKeygen*(ctx: ptr ptr BrPrngClass, impl: ptr BrEcImplementation, - sk: ptr BrEcPrivateKey, keybuf: ptr byte, - curve: cint): int {.cdecl, - importc: "br_ec_keygen", header: "bearssl_ec.h".} - -proc brEcComputePublicKey*(impl: ptr BrEcImplementation, pk: ptr BrEcPublicKey, - kbuf: ptr byte, sk: ptr BrEcPrivateKey): int {. - cdecl, importc: "br_ec_compute_pub", header: "bearssl_ec.h".} - -proc brEcdsaSignRaw*(impl: ptr BrEcImplementation, hf: ptr BrHashClass, - value: pointer, sk: ptr BrEcPrivateKey, - sig: pointer): int {. - cdecl, importc: "br_ecdsa_i31_sign_raw", header: "bearssl_ec.h".} - -proc brEcdsaVerifyRaw*(impl: ptr BrEcImplementation, hash: pointer, - hashlen: int, pk: ptr BrEcPublicKey, sig: pointer, - siglen: int): uint32 {. - cdecl, importc: "br_ecdsa_i31_vrfy_raw", header: "bearssl_ec.h".} - -proc brEcdsaSignAsn1*(impl: ptr BrEcImplementation, hf: ptr BrHashClass, - value: pointer, sk: ptr BrEcPrivateKey, - sig: pointer): int {. - cdecl, importc: "br_ecdsa_i31_sign_asn1", header: "bearssl_ec.h".} - -proc brEcdsaVerifyAsn1*(impl: ptr BrEcImplementation, hash: pointer, - hashlen: int, pk: ptr BrEcPublicKey, sig: pointer, - siglen: int): uint32 {. - cdecl, importc: "br_ecdsa_i31_vrfy_asn1", header: "bearssl_ec.h".} - -var sha256Vtable* {.importc: "br_sha256_vtable", - header: "bearssl_hash.h".}: BrHashClass -var sha384Vtable* {.importc: "br_sha384_vtable", - header: "bearssl_hash.h".}: BrHashClass -var sha512Vtable* {.importc: "br_sha512_vtable", - header: "bearssl_hash.h".}: BrHashClass - -template brRsaPrivateKeyBufferSize*(size: int): int = - # BR_RSA_KBUF_PRIV_SIZE(size) - (5 * ((size + 15) shr 4)) - -template brRsaPublicKeyBufferSize*(size: int): int = - # BR_RSA_KBUF_PUB_SIZE(size) - (4 + ((size + 7) shr 3)) diff --git a/libp2p/crypto/ecnist.nim b/libp2p/crypto/ecnist.nim index 7d37c3a8f..cd59d2da4 100644 --- a/libp2p/crypto/ecnist.nim +++ b/libp2p/crypto/ecnist.nim @@ -14,7 +14,7 @@ ## BearSSL library ## Copyright(C) 2018 Thomas Pornin . -import common +import bearssl import nimcrypto/utils import minasn1 export minasn1.Asn1Status diff --git a/libp2p/crypto/rsa.nim b/libp2p/crypto/rsa.nim index f2205fd34..ef57d4599 100644 --- a/libp2p/crypto/rsa.nim +++ b/libp2p/crypto/rsa.nim @@ -13,7 +13,8 @@ ## BearSSL library ## Copyright(C) 2018 Thomas Pornin . import nimcrypto/utils -import common, minasn1 +import bearssl +import minasn1 export Asn1Status const