首页 > 移动平台 > 详细

OpenSSL win 下报错 OPENSSL_Uplink(58D46000,08): no OPENSSL_Applink

时间:2014-08-08 20:41:46      阅读:1097      评论:0      收藏:0      [点我收藏+]
python 中使用 M2Crypto 想读写文件时总是报:
OPENSSL_Uplink(58D46000,08): no OPENSSL_Applink
windows 平台下使用 openssl 时不能直接操作与文件 IO 有关的函数。 
因为 ms/uplink.c 会动态从当前 exe 中获取 ms/applink.c 的函数表,逻辑是
void OPENSSL_Uplink (volatile void **table, int index)
{
HANDLE h = GetModuleHandle(NULL)
GetProcAddress(h,"OPENSSL_Applink")
}
。如果想使用,则必须在链接 exe 时候也链接 ms/uplink.c。
 
当 python 使用 M2Crypto 时,如果操作文件,可先创建一个 MemoryBuffer 的 BIO 对象, 然后将 MemoryBuffer 读取为字符串,手动将字符串写入文件。
print "Generating a 1024 bit private/public key pair for Bob..."
Bob = M2Crypto.RSA.gen_key (1024, 65537)

if os.name == nt:
    mb = M2Crypto.BIO.MemoryBuffer()
    Bob.save_key_bio(mb, None)
    with open(Bob-private.pem, wb) as f:
        f.write(mb.read_all())
else:
    Bob.save_key (Bob-private.pem, None)

 

OpenSSL win 下报错 OPENSSL_Uplink(58D46000,08): no OPENSSL_Applink,布布扣,bubuko.com

OpenSSL win 下报错 OPENSSL_Uplink(58D46000,08): no OPENSSL_Applink

原文:http://www.cnblogs.com/JesseFang/p/3899878.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!