使用ECDSA签名时,BAD_ACCESS(代码= EXC_I386_GPFLT)

问题描述 投票:0回答:2

我正在尝试在iOS上使用Crypto ++。我从Marek Kotewicz's GitHub下载了库的预构建版本。

我正在努力地运行Crypto ++ Wiki中的this sample code。>>

ECDSA<ECP, CryptoPP::SHA256>::PrivateKey privateKey;
ECDSA<ECP, CryptoPP::SHA256>::PublicKey publicKey;

AutoSeededRandomPool prng, rrng;

privateKey.Initialize(prng, CryptoPP::ASN1::secp256k1());    
privateKey.MakePublicKey(publicKey);

string signature;       
string message = "Do or do not. There is no try.";

StringSource s(message, true,
             new SignerFilter(rrng,
                              ECDSA<ECP, CryptoPP::SHA256>::Signer(privateKey),
                              new StringSink(signature)));

其崩溃与以下。它显示在Xcode输出窗口中:

BAD_ACCESS (code=EXC_I386_GPFLT)  

这是c ++文件的memory.h中指向BAD_ACCESS的代码段

 _LIBCPP_INLINE_VISIBILITY ~auto_ptr() throw() {delete __ptr_;}

我收到BAD_ACCESS(code = 1,address = 0x0)错误指向库的这一行代码

 ->  0x1065dfa8d <+85>:  movq   -0x58(%rbp), %rdi

“这是调试器输出”“>

我正在尝试在iOS上使用Crypto ++。我从Marek Kotewicz的GitHub下载了该库的预构建版本。我正在努力从Crypto ++ Wiki运行此示例代码。 ECDSA ] >>

其崩溃与以下。它显示在Xcode输出窗口中:

BAD_ACCESS(code=EXC_I386_GPFLT)  

代码对我来说看起来不错。


我正在尝试在iOS上使用Crypto ++。我从Marek Kotewicz的GitHub下载了该库的预构建版本。

我只是在黑暗中刺伤。假设您上面显示的代码是really

您正在做的所有工作,例如测试ViewController

预编译的库似乎正在使用GNU的Standard C ++库。通过使用-stdlib=c++(而不是GNU的-stdlib=stdc++)构建Crypto ++,我将切换到LLVM的标准C ++库。苹果几年前改用它,而Xcode默认使用它。

您可以在noloader/cryptopp-5.6.2-ios处使用LLVM Standard C ++找到带有fat库的GitHub。

或者,您可以自己构建胖库。为此,请参见Crypto ++ Wiki上的iOS (Command Line)cryptopp-5.6.2-ios处的预构建库使用这些指令。


AutoSeededRandomPool prng, rrng;

您只需要其中之一。


StringSource s(message, true,
               new SignerFilter(rrng,
                   ECDSA<ECP, CryptoPP::SHA256>::Signer(privateKey),
                       new StringSink(signature)));

这些年来,我开始怀疑为管道创建的临时签名者。我已经更改了Crypto ++ Wiki以停止使用它们。使用此代码代替:

ECDSA<ECP, CryptoPP::SHA256>::PrivateKey privateKey;
...
ECDSA<ECP, CryptoPP::SHA256>::Signer signer(privateKey);
...

StringSource s(message, true,
               new SignerFilter(prng, signer,
                   new StringSink(signature)));

我在Mac OS上也遇到了相同的问题,我尝试使用以下命令构建crptolib:clang ++ -DNDEBUG -g2 -O2 -stdlib = libc ++ -DCRYPTOPP_DISABLE_MIXED_ASM -fPIC -pthread -pipe -c

但是问题仍然存在。但是,。/ cryptest.exe v显示所有通过的测试。

我想知道我是否正确设置了Xcode。

您有什么见识吗?

问候

c++ ios crypto++ ecdsa
2个回答
0
投票

其崩溃与以下。它显示在Xcode输出窗口中:


0
投票

我在Mac OS上也遇到了相同的问题,我尝试使用以下命令构建crptolib:clang ++ -DNDEBUG -g2 -O2 -stdlib = libc ++ -DCRYPTOPP_DISABLE_MIXED_ASM -fPIC -pthread -pipe -c

但是问题仍然存在。但是,。/ cryptest.exe v显示所有通过的测试。

我想知道我是否正确设置了Xcode。

© www.soinside.com 2019 - 2024. All rights reserved.