前提・実現したいこと
opensslのライブラリを用いてcmacのサンプルコードをc言語で動かすことが目標です。
発生している問題・エラーメッセージ
>>> gcc -I /usr/local/opt/openssl@1.1/include/ cmac_example.c Undefined symbols for architecture x86_64: "_CMAC_CTX_free", referenced from: _main in cczYkXQ3.o "_CMAC_CTX_new", referenced from: _main in cczYkXQ3.o "_CMAC_Final", referenced from: _main in cczYkXQ3.o "_CMAC_Init", referenced from: _main in cczYkXQ3.o "_CMAC_Update", referenced from: _main in cczYkXQ3.o "_EVP_aes_128_cbc", referenced from: _main in cczYkXQ3.o ld: symbol(s) not found for architecture x86_64 collect2: error: ld returned 1 exit status
動かしたいソースコード
C言語
1// https://gist.github.com/ecerulm/90653daf2b808aea0837 2 3#include <stdio.h> 4#include <openssl/cmac.h> 5 6void printBytes(unsigned char *buf, size_t len) { 7 for(int i=0; i<len; i++) { 8 printf("%02x ", buf[i]); 9 } 10 printf("\n"); 11} 12 13int main(int argc, char *argv[]) 14{ 15 // https://tools.ietf.org/html/rfc4493 16 17 // K, M and T from 18 // http://csrc.nist.gov/publications/nistpubs/800-38B/Updated_CMAC_Examples.pdf 19 // D.1 AES-128 20 21 // K: 2b7e1516 28aed2a6 abf71588 09cf4f3c 22 unsigned char key[] = { 0x2b,0x7e,0x15,0x16, 23 0x28,0xae,0xd2,0xa6, 24 0xab,0xf7,0x15,0x88, 25 0x09,0xcf,0x4f,0x3c}; 26 27 // M: 6bc1bee2 2e409f96 e93d7e11 7393172a Mlen: 128 28 unsigned char message[] = { 0x6b,0xc1,0xbe,0xe2, 29 0x2e,0x40,0x9f,0x96, 30 0xe9,0x3d,0x7e,0x11, 31 0x73,0x93,0x17,0x2a }; 32 33 unsigned char mact[16] = {0}; 34 size_t mactlen; 35 36 CMAC_CTX *ctx = CMAC_CTX_new(); 37 CMAC_Init(ctx, key, 16, EVP_aes_128_cbc(), NULL); 38 printf("message length = %lu bytes (%lu bits)\n",sizeof(message), sizeof(message)*8); 39 40 CMAC_Update(ctx, message, sizeof(message)); 41 CMAC_Final(ctx, mact, &mactlen); 42 43 printBytes(mact, mactlen); 44 /* expected result T = 070a16b4 6b4d4144 f79bdd9d d04a287c */ 45 46 CMAC_CTX_free(ctx); 47 return 0; 48}
試したこと
gccのコンパイルオプションで-I<ディレクトリ>でopensslのディレクトリを指定して、コンパイルは通ったのですが、エラーメッセージが出て、そこから進んでいません。
参考になりそうなものを上げていきます。
・opensslのディレクトリは下のやつです。
>>> where openssl /usr/local/opt/openssl@1.1/bin/openssl /usr/bin/openssl
・cmac.hの場所
[ユーザー名]-[/usr/local/opt/openssl@1.1/include] >>> cd openssl [ユーザー名]-[/usr/local/opt/openssl@1.1/include/openssl] >>> ls .......cmac.h........
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー