Making conversion similar to BN_hex2bn + BN_bn2bin without openSSL in C

Making conversion similar to BN_hex2bn + BN_bn2bin without openSSL in C

Content Index :

Making conversion similar to BN_hex2bn + BN_bn2bin without openSSL in C
Tag : c , By : dlouzan
Date : November 29 2020, 04:01 AM

will help you
BN_bn2bin "creates a representation that is truly binary (i.e. a sequence of bits). More specifically, it creates a big-endian representation of the number." So this is not just an array of 0s and 1s, right?
#include <stdio.h>
#include <openssl/bn.h>

int main(
    int argc,
    char **argv)
    const char *hexString = argv[1];

    BIGNUM *bnEncr = BN_new();
    BN_hex2bn(&bnEncr, hexString);
    unsigned int numOfBytesEncr = BN_num_bytes(bnEncr);
    unsigned char encrBin[numOfBytesEncr];
    BN_bn2bin(bnEncr, encrBin);
    fwrite(encrBin, 1, numOfBytesEncr, stdout);
$ ./bntest 74162ac74759e85654e0e7762c2cdd26 | hexdump -C
00000000  74 16 2a c7 47 59 e8 56  54 e0 e7 76 2c 2c dd 26 |t.*.GY.VT..v,,.&|
$ ./bntest  74162ac74759e85654e0e7762c2cdd26 | xxd -b -c 4
00000000: 01110100 00010110 00101010 11000111  t.*.
00000004: 01000111 01011001 11101000 01010110  GY.V
00000008: 01010100 11100000 11100111 01110110  T..v
0000000c: 00101100 00101100 11011101 00100110  ,,.&

No Comments Right Now !

Boards Message :
You Must Login Or Sign Up to Add Your Comments .

Share : facebook icon twitter icon

Trouble with OpenSSL's BN_bn2bin function

Tag : c , By : koder
Date : March 29 2020, 07:55 AM
may help you . BN_bn2bin doesn't create a printable string - instead, it creates a representation that is truly binary (i.e. a sequence of bits). More specifically, it createas a big-endian representation of the number. Since 42 fits into one byte, you get one byte 0x2a, which is "*" in ASCII.
If you want a 0/1 representation, you need to iterate over all bytes, and do the printing yourself (e.g. with shifting or a lookup table).

equivalent to BN_hex2bn

Tag : chash , By : kameel
Date : March 29 2020, 07:55 AM
Does that help is there any equivalent to BN_hex2bn in C# , I wanna make BigInteger from hex string!

Unsure of parameter to store BIGNUM in char - BN_bn2bin()

Tag : c , By : B3CFT
Date : March 29 2020, 07:55 AM
seems to work fine len is the length of the buffer pointed to by p. The function pads out the converted bignum to len bytes (with zeroes, which doesn't change the mathematical value of the number represented).
That function appears to have a bug, by the way - I strongly suspect that the memset() call should be memset(p, 0, pad);.

Use of OpenSSL BN_hex2bn in Swift 4 - How to build the handle

Tag : swift , By : Tink
Date : March 29 2020, 07:55 AM
To fix the issue you can do BN_hex2bn() expects the address of a BIGNUM * as the first argument, in Swift that is the address of an UnsafeMutablePointer? variable. You “only” have to declare that variable (optionals are automatically initialized with nil) and pass it as an inout-argument with & to the function. Example:
let hexString = "123456789abcdef"

var bn: UnsafeMutablePointer<BIGNUM>?
BN_hex2bn(&bn, hexString)

// Do something with `bn` ...   

// Eventually free the memory:
class BN {
    var bn: UnsafeMutablePointer<BIGNUM>?

    init(hexString: String) {
        BN_hex2bn(&bn, hexString)

    deinit {
        if let bn = bn { BN_free(bn) }

BN_hex2bn magically segfaults in openSSL

Tag : cpp , By : jrf
Date : January 02 2021, 06:48 AM
Related Posts Related QUESTIONS :
  • Data structures layout
  • How to retrieve probuf from C library
  • Printf float number in hexadecimal format returns random vlaue
  • Memory allocation in C from 1 to N
  • Emit signal from separate thread in glib/gtk
  • How to fix Valgrind "Conditional Jump..." error
  • The text to be printed is being printed on the command line rather than print space while using fork on terminal
  • Deleting an element from an array of structures
  • How to read time stamp data from text file using C code?
  • I can't understand this code? Is it normal or I'm not ready?
  • GTK character count vs byte index
  • Summing up integers in an array and storing the result in an array
  • JITtting with limited knowledge of the target architecture
  • Why does global pointers behave erratically in this function?
  • Write a basic half pyramid pattern program
  • Read memory in C
  • void affecting output of the program
  • How to limit scanf while reading input from file
  • Why does the C runtime not call my exit()?
  • Can anyone say why the array is not changed when passed to a function
  • Integer overflow (Smallest file size that will make the integer in program become negative in bits)
  • Array of pointers to strings(base type of pointers)
  • Is there any way to limit integer datatype value range
  • How to print 2-byte unicode characters
  • The execution of open when using O_CREAT
  • Parsing Command Line Arguments for Shell
  • Undefined length of character arrays
  • Do condition formats in if/else if statements have to match in C?
  • Generate ordered passwords for brute forcing in C
  • Problems with pointer into structure
  • Why does this C program print output "10" irrespective of the for loop?
  • taking output 2D array in matrix form
  • sizeof char pointer and pointer to pointer
  • does the following program cause memory leak?
  • Innacurate file readings from fopen and/or fscanf
  • Searching an element in an Array using Recursive Function in C Language
  • Most fastest C code to count recursively directories in Linux ( without files )
  • Why does C not offer syntactically transparent references like C++ and Java do?
  • Code doesn't get excuted after using continue in while loop
  • How can I maintain correlation between structure definitions and their construction / destruction code?
  • Avoid race conditions when using pointers and threads
  • Binary and Decimal converting
  • How to create input tensors and use with interpreter in Tensorflow Lite (experimental C API)?
  • Unexpected typecasting between values in C
  • Trouble with Forking Process and Calling bc using execve
  • Glib Threads vs GMain Loop Eventing
  • Why does the byte sequence turn when I cast a char array to an integer array?
  • Is there any difference usage in external interrupt between GPIO (AHB bus)and those (APB bus)?
  • Trouble programming AVR to interpret input from Arduino rotary encoder module
  • Is it correct to use a do-while loop inside a for loop? Why and why not?
  • Why we can't use dot for new created pointers to structs
  • Atomicity of fprintf from MPI processes
  • Printing of negative value in c via printf
  • What's the difference between global or local variables regarding the main function?
  • movsd from memory to xmm0 in c x86-64 jit
  • Problem with a function that insert the content of a csv into an array of struct
  • Segmentation Fault running time on sem_post(flag)
  • Extracting values from an incoming bluetooth serial on an arduino
  • "How much memory space does an array takes if the maximum size that is declared is not used?"
  • C GTK2 frustrated with gnome documentation
  • shadow
    Privacy Policy - Terms - Contact Us © scrbit.com