library: math/big.Int (mini-impl for _cmptest/bigintdemo)
This commit is contained in:
@@ -38,5 +38,7 @@ func main() {
|
||||
// Swap a and b so that b is the next number in the sequence.
|
||||
a, b = b, a
|
||||
}
|
||||
c.Printf(c.Str("%s\n"), a.CStr()) // 100-digit Fibonacci number
|
||||
cstr := a.CStr()
|
||||
c.Printf(c.Str("%s\n"), cstr) // 100-digit Fibonacci number
|
||||
openssl.FreeCStr(cstr)
|
||||
}
|
||||
|
||||
5
c/openssl/_wrap/openssl.c
Normal file
5
c/openssl/_wrap/openssl.c
Normal file
@@ -0,0 +1,5 @@
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
void opensslFree(void *ptr) {
|
||||
OPENSSL_free(ptr);
|
||||
}
|
||||
@@ -98,6 +98,36 @@ func (*BIGNUM) Copy(b *BIGNUM) *BIGNUM { return nil }
|
||||
// llgo:link (*BIGNUM).Swap C.BN_swap
|
||||
func (*BIGNUM) Swap(b *BIGNUM) {}
|
||||
|
||||
// int BN_is_zero(const BIGNUM *a);
|
||||
//
|
||||
// llgo:link (*BIGNUM).IsZero C.BN_is_zero
|
||||
func (*BIGNUM) IsZero() c.Int { return 0 }
|
||||
|
||||
// void BN_zero_ex(BIGNUM *a);
|
||||
//
|
||||
// llgo:link (*BIGNUM).SetZero C.BN_zero_ex
|
||||
func (*BIGNUM) SetZero() {}
|
||||
|
||||
// int BN_is_one(const BIGNUM *a);
|
||||
//
|
||||
// llgo:link (*BIGNUM).IsOne C.BN_is_one
|
||||
func (*BIGNUM) IsOne() c.Int { return 0 }
|
||||
|
||||
// int BN_is_odd(const BIGNUM *a);
|
||||
//
|
||||
// llgo:link (*BIGNUM).IsOdd C.BN_is_odd
|
||||
func (*BIGNUM) IsOdd() c.Int { return 0 }
|
||||
|
||||
// int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w);
|
||||
//
|
||||
// llgo:link (*BIGNUM).AbsIsWord C.BN_abs_is_word
|
||||
func (*BIGNUM) AbsIsWord(w BN_ULONG) c.Int { return 0 }
|
||||
|
||||
// int BN_is_word(const BIGNUM *a, const BN_ULONG w);
|
||||
//
|
||||
// llgo:link (*BIGNUM).IsWord C.BN_is_word
|
||||
func (*BIGNUM) IsWord(w BN_ULONG) c.Int { return 0 }
|
||||
|
||||
// int BN_set_word(BIGNUM *a, BN_ULONG w);
|
||||
//
|
||||
// llgo:link (*BIGNUM).SetWord C.BN_set_word
|
||||
@@ -287,6 +317,11 @@ func (*BIGNUM) Rshift1(a *BIGNUM) c.Int { return 0 }
|
||||
// llgo:link (*BIGNUM).Exp C.BN_exp
|
||||
func (*BIGNUM) Exp(a, p *BIGNUM, ctx *BN_CTX) c.Int { return 0 }
|
||||
|
||||
// int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx);
|
||||
//
|
||||
// llgo:link (*BIGNUM).ModExp C.BN_mod_exp
|
||||
func (*BIGNUM) ModExp(a, p, m *BIGNUM, ctx *BN_CTX) c.Int { return 0 }
|
||||
|
||||
// int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
|
||||
//
|
||||
// llgo:link (*BIGNUM).Gcd C.BN_gcd
|
||||
|
||||
@@ -25,13 +25,14 @@ import (
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
const (
|
||||
LLGoFiles = "$(pkg-config --cflags openssl): _wrap/openssl.c"
|
||||
LLGoPackage = "link: $(pkg-config --libs openssl); -lssl -lcrypto"
|
||||
)
|
||||
|
||||
//go:linkname Free C.OPENSSL_free
|
||||
//go:linkname Free C.opensslFree
|
||||
func Free(ptr unsafe.Pointer)
|
||||
|
||||
//go:linkname FreeCStr C.OPENSSL_free
|
||||
//go:linkname FreeCStr C.opensslFree
|
||||
func FreeCStr(ptr *c.Char)
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user