title: Aggregate ‘BIGNUM foo’ has incomplete type and cannot be defined
body: <p>I tried to compile <a href="https://github.com/tmeiczin/opendcp" rel="noreferrer">opendcp</a>, but error occurred.</p>
  
  <pre><code>$ make
  
  ...
  
  [ 10%] Building CXX object libasdcp/CMakeFiles/opendcp-asdcp.dir/KM_prng.cpp.o
  /home/jwel/opendcp/libasdcp/KM_prng.cpp: In function ‘void Kumu::Gen_FIPS_186_Value(const byte_t*, ui32_t, byte_t*, ui32_t)’:
  /home/jwel/opendcp/libasdcp/KM_prng.cpp:219:10: error: aggregate ‘BIGNUM c_2powb’ has incomplete type and cannot be defined
     BIGNUM c_2powb, c_2, c_b;
            ^~~~~~~
  /home/jwel/opendcp/libasdcp/KM_prng.cpp:219:19: error: aggregate ‘BIGNUM c_2’ has incomplete type and cannot be defined
     BIGNUM c_2powb, c_2, c_b;
                     ^~~
  /home/jwel/opendcp/libasdcp/KM_prng.cpp:219:24: error: aggregate ‘BIGNUM c_b’ has incomplete type and cannot be defined
     BIGNUM c_2powb, c_2, c_b;
                          ^~~
  /home/jwel/opendcp/libasdcp/KM_prng.cpp:220:19: error: ‘BN_init’ was not declared in this scope
     BN_init(&amp;c_2powb);  BN_init(&amp;c_2);  BN_init(&amp;c_b);
                     ^
  /home/jwel/opendcp/libasdcp/KM_prng.cpp:248:14: error: aggregate ‘BIGNUM bn_tmp’ has incomplete type and cannot be defined
         BIGNUM bn_tmp, bn_xkey, bn_x_n;
                ^~~~~~
  /home/jwel/opendcp/libasdcp/KM_prng.cpp:248:22: error: aggregate ‘BIGNUM bn_xkey’ has incomplete type and cannot be defined
         BIGNUM bn_tmp, bn_xkey, bn_x_n;
                        ^~~~~~~
  /home/jwel/opendcp/libasdcp/KM_prng.cpp:248:31: error: aggregate ‘BIGNUM bn_x_n’ has incomplete type and cannot be defined
         BIGNUM bn_tmp, bn_xkey, bn_x_n;
                                 ^~~~~~
  libasdcp/CMakeFiles/opendcp-asdcp.dir/build.make:110: recipe for target 'libasdcp/CMakeFiles/opendcp-asdcp.dir/KM_prng.cpp.o' failed
  make[2]: *** [libasdcp/CMakeFiles/opendcp-asdcp.dir/KM_prng.cpp.o] Error 1
  make[1]: *** [libasdcp/CMakeFiles/opendcp-asdcp.dir/all] Error 2
  make: *** [all] Error 2
  </code></pre>
  
  <p>It looks like openssl problem for me, so I tried to test this:</p>
  
  <pre><code>$ cat testBIGNUM.cpp
  #include &lt;openssl/bn.h&gt;
  int main(){
      BIGNUM bn;
  }
  
  $ g++ testBIGNUM.cpp
  testBIGNUM.cpp: In function ‘int main()’:
  testBIGNUM.cpp:4:9: error: aggregate ‘BIGNUM bn’ has incomplete type and cannot be defined
    BIGNUM bn;
           ^~
  </code></pre>
  
  <p>my openssl version is 1.1.0d-2 and I don't know how to fix it.</p>