ruby 如何在opalrb中使用openssl?

zazmityj  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(128)

早些时候,我尝试将此代码从ruby编译为opalrb JavaScript

require 'openssl'

cert = """-----BEGIN CERTIFICATE-----
MIIF0jCCBLqgAwIBAgIQE6uZ3+oqXXc/+5sp3TQd3zANBgkqhkiG9w0BAQsFADB1
MUQwQgYDVQQDDDtBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9ucyBD
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTELMAkGA1UECwwCRzMxEzARBgNVBAoMCkFw
cGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTIyMTIzMDE1MzIxOVoXDTI1MTIyOTE1
MzIxOFowga0xGjAYBgoJkiaJk/IsZAEBDApMSDI4WEE3VDIyMUAwPgYDVQQDDDdp
UGhvbmUgRGlzdHJpYnV0aW9uOiBTdW5zaGluZSBJbnN1cmFuY2UgR3JvdXAgQ28u
LCBMdGQuMRMwEQYDVQQLDApMSDI4WEE3VDIyMSswKQYDVQQKDCJTdW5zaGluZSBJ
bnN1cmFuY2UgR3JvdXAgQ28uLCBMdGQuMQswCQYDVQQGEwJDTjCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAKorSaxSoBNGkikg3M2brfrD4dpWga8oIVIv
L7oKGpvjjYCY2S6tuNIEZA0cdpTIcQ84j31RAoU6Y6xgyCpvb5c7I28hFVlM4ssR
fXQ0O/as8aF+TZvQMnDreLOndS6lKpeCitWDKt3cJS0bxjCUxY8A0e0sCNncQJht
UEcdNaFEVbrsIVD0zuS6ii+UEIBpv8EKdcUKsygFCM/Cc5MJ4QF9Ke+U3VHbgJ1Z
IhbUpTakj8ZgMD+Djvqkt4WDXU2Qc3aROg3VWNTTTV230efImd/jH6bWGMKv8XtG
gPwoTzPqFB50LRDg3ghsqH6esTcEWf2olDMJBerBo1NZ1Ec6i3kCAwEAAaOCAiMw
ggIfMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUCf7AFZD5r2QKkhK5JihjDJfs
p7IwcAYIKwYBBQUHAQEEZDBiMC0GCCsGAQUFBzAChiFodHRwOi8vY2VydHMuYXBw
bGUuY29tL3d3ZHJnMy5kZXIwMQYIKwYBBQUHMAGGJWh0dHA6Ly9vY3NwLmFwcGxl
LmNvbS9vY3NwMDMtd3dkcmczMDEwggEeBgNVHSAEggEVMIIBETCCAQ0GCSqGSIb3
Y2QFATCB/zCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRp
ZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRo
ZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1
c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGlj
ZSBzdGF0ZW1lbnRzLjA3BggrBgEFBQcCARYraHR0cHM6Ly93d3cuYXBwbGUuY29t
L2NlcnRpZmljYXRlYXV0aG9yaXR5LzAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzAd
BgNVHQ4EFgQUofgyj62dk2i3I5Xb1b9h7etBc4EwDgYDVR0PAQH/BAQDAgeAMBMG
CiqGSIb3Y2QGAQQBAf8EAgUAMA0GCSqGSIb3DQEBCwUAA4IBAQCXbTgmDM+uppd9
FBdvc6F0pZV03kInxZr1EsiUizpcEYTIghkbw2JIZZ8DvOCdM/Fv4ypJ2SOu2BNr
xlWBG2JP6Yn8345V3PcfxABMWQUnj9x7EG68sNomJ4URlWD0cgKqz0IU7DsoW+ak
SIYeh2s5/GNzOMAYuUGEJB/ai/MXCNY24EhwYisKPUR8YKKjb+Wm02DTRkaYVZI8
kUUTu4lKLTlTB39OYkp+7B/x/QUkopgeRRL4wX5PcI42dolUq2LwcuJXYyN0k9Og
Wo6ByfM+3ae0UX8YMIhXphEe4QxEzmoROoys9QYm6YMg52XnjcAPEBZ1USeG/e4e
aboYVMIu
-----END CERTIFICATE-----"""

x509 = OpenSSL::X509::Certificate.new(cert)


puts x509.subject.to_s

错误{OpenSSL:未初始化的常量OpenSSL undefined}
有没有可能把ruby的openssl编译成JavaScript opalrb?
如果是,我该怎么做?

jhdbpxl9

jhdbpxl91#

简单的回答是否定的。Opal和JRuby一样,不支持Ruby的C API。所以一般来说,不可能为Opal编译Ruby的OpenSSL扩展。
根据您的环境,OpenSSL可能可用。特别是,Node.js支持以下模块:https://nodejs.org/api/tls.html。我不知道任何绑定到该模块在蛋白石,所以你将不得不写自己的。Opal允许您使用反勾操作符插入JavaScript代码,或者更好地使用本地Opal stdlib库。
对于浏览器(或任何其他)环境,您可以将OpenSSL编译为WASM,然后使用Opal与之交互。但是如果你想走这条路,也许Ruby WASM可能是一个更好的选择。

相关问题