首页 > 解决方案 > Powerbuilder 9.0.3 和 Powerbuilder 12.6 的 Chilkat RSASSA-PSS 签名问题

问题描述

我们在 Powerbuilder 9.0.3 应用程序(以及 powerbuilder 12.6)中使用 Chilkat 对 HTTP 请求进行签名,但这就像 Chilkat 生成的签名不被 Isabel 的 API 接受(我们已经联系过 Isabel,他们猜测有一个参数签名算法中的问题)。Isabel API ( https://documentation.ibanity.com/http-signature ) 的文档说我们必须使用带有以下参数的 RSASSA-PSS 签名算法。

所以我们设置了 chilkat Rsa 组件,如下所示:

loo_Rsa = create oleobject
li_rc = loo_Rsa.ConnectToNewObject("Chilkat_9_5_0.Rsa")
loo_Rsa.DebugLogFilePath = "c:\tmp\rsa.log"
loo_Rsa.VerboseLogging=1
li_Success=loo_Rsa.ImportPrivateKeyObj(loo_Privkey)
if li_Success <> 1 then 
    ls_error = "Error importPrivateKey: "+loo_Rsa.LastErrorText
    destroy loo_Rsa
    goto ee_error
end if
// Use RSA-PSS by setting OaepPadding = 1
loo_Rsa.OaepPadding = 1
loo_Rsa.OaepHash = "SHA-256"
loo_Rsa.EncodingMode = "base64"
ls_Signature = loo_Rsa.SignStringENC(ls_signing_string,"SHA-256")

根据 Isabel 文档,您认为我们在 Chilkat 中正确设置了 RSA 参数还是我们遗漏了什么?(我们也尝试过 LittleEndian = 0,但我们从 Isabel API 收到相同的错误)。

供您参考,这里是 chilkat 的日志:

在日志中,我看到 Chilkat 有时在签名字符串中的字符“=”之后添加了 3D 字符,这正常吗?(在下面的日志中,我将字符 3D 以粗体显示)

ImportPrivateKeyObj: DllDate: Feb 12 2018 ChilkatVersion: 9.5.0.72 UnlockPrefix: BEWANB.CB1042019 Architecture: Little Endian; 32 位语言:ActiveX VerboseLogging:1 toPrivKeyXml:toRsaPrivateKeyXml:toRsaPkcs1PrivateKeyDer:(leaveContext)DecodeToAsn:(leaveContext)(leaveContext)(leaveContext)importPrivateKey:loadAnyString:loadAnyXml:loadAnyXml:(leaveContext)(leaveContext)(leaveContext)(leaveContext)成功. (leaveContext 15ms) SignStringENC: DllDate: Feb 12 2018 ChilkatVersion: 9.5.0.72 UnlockPrefix: BEWANB.CB1042019 Architecture: Little Endian; 32 位语言:ActiveX VerboseLogging:1 hashAlgorithm:SHA-256 字符集:windows-1252 组件使用购买的解锁代码成功解锁。inputBytesQP: (request-target): get /isabel-connect/account-reports?offset= 3D 0&size= 3D100=

\n主机:api.ibanity.com\n摘要:SHA-512=3Dz4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXc=

g/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg= 3D = 3D \n(已创建):16=

15285438\nauthorization: Bearer access_token_1615285439 hashAndSign: modulus_bitlen: 2048 hashBytes: 070D CF6B 85D6 ACE2 971F 20B3 29A0 439A FE36 9394 0D1C 10E7 513B 1447 F04D 39B2 padAndSignHash: keyType: Private hashInSize: 32 padding: PSS hashAlg: SHA-256 pss_encode: emLen: 256 autoSelectedSaltLen: 32 (leaveContext) (leaveContext 31ms) byteOrder: LittleEndian (leaveContext 47ms) signature: Te3sMFkvo26Mi5pkLsB8AwAJYynlB3xKU1Dy2AyPS4GlF1fUgTU4k5dU3mSu2dkJEbvmkUd+aPuwo+51AyNarcD7vGtFp/ze3vjCB87lZ+qrzDquEpVUNOb6tOq467odIeGPAsj4b9sa6JsdXciEGKPIZgC8+7zojm87f2MdAVVkDXTwFq7nmI+Q5czGlswLpihYn4VF+5ateKDInl1TdiekujmBh5ffkZAE43LZQX4UWIhqqlak7p2P9GyhF9n3RQRZ55Tp25vOWgPdnwz90OKnQR5aWtcHoVY+JuIl0VX49UFELU+L/Xz9tOGnilA7UcKElWMXVzcEqo3KLcGUWQ== Success. (leaveContext 47ms)ImportPrivateKeyObj:DllDate:2018 年 2 月 12 日 ChilkatVersion:9.5.0.72 UnlockPrefix:BEWANB。CB1042019 架构:小端;32 位语言:ActiveX VerboseLogging:1 toPrivKeyXml:toRsaPrivateKeyXml:toRsaPkcs1PrivateKeyDer:(leaveContext)DecodeToAsn:(leaveContext)(leaveContext)(leaveContext)importPrivateKey:loadAnyString:loadAnyXml:loadAnyXml:(leaveContext)(leaveContext)(leaveContext)(leaveContext)成功. (leaveContext 31ms) SignStringENC: DllDate: Feb 12 2018 ChilkatVersion: 9.5.0.72 UnlockPrefix: BEWANB.CB1042019 Architecture: Little Endian; 32 位语言:ActiveX VerboseLogging:1 hashAlgorithm:SHA-256 字符集:windows-1252 组件使用购买的解锁代码成功解锁。inputBytesQP: (request-target): get /isabel-connect/account-reports?offset=3D0&size=3D100= toRsaPkcs1PrivateKeyDer: (leaveContext) DecodeToAsn: (leaveContext) (leaveContext) (leaveContext) importPrivateKey: loadAnyString: loadAnyXml: loadAnyXml: (leaveContext) (leaveContext) (leaveContext) (leaveContext) 成功。(leaveContext 31ms) SignStringENC: DllDate: Feb 12 2018 ChilkatVersion: 9.5.0.72 UnlockPrefix: BEWANB.CB1042019 Architecture: Little Endian; 32 位语言:ActiveX VerboseLogging:1 hashAlgorithm:SHA-256 字符集:windows-1252 组件使用购买的解锁代码成功解锁。inputBytesQP: (request-target): get /isabel-connect/account-reports?offset=3D0&size=3D100= toRsaPkcs1PrivateKeyDer: (leaveContext) DecodeToAsn: (leaveContext) (leaveContext) (leaveContext) importPrivateKey: loadAnyString: loadAnyXml: loadAnyXml: (leaveContext) (leaveContext) (leaveContext) (leaveContext) 成功。(leaveContext 31ms) SignStringENC: DllDate: Feb 12 2018 ChilkatVersion: 9.5.0.72 UnlockPrefix: BEWANB.CB1042019 Architecture: Little Endian; 32 位语言:ActiveX VerboseLogging:1 hashAlgorithm:SHA-256 字符集:windows-1252 组件使用购买的解锁代码成功解锁。inputBytesQP: (request-target): get /isabel-connect/account-reports?offset=3D0&size=3D100= 2018 年 2 月 12 日 Chilkat 版本:9.5.0.72 解锁前缀:BEWANB.CB1042019 架构:Little Endian;32 位语言:ActiveX VerboseLogging:1 hashAlgorithm:SHA-256 字符集:windows-1252 组件使用购买的解锁代码成功解锁。inputBytesQP: (request-target): get /isabel-connect/account-reports?offset=3D0&size=3D100= 2018 年 2 月 12 日 Chilkat 版本:9.5.0.72 解锁前缀:BEWANB.CB1042019 架构:Little Endian;32 位语言:ActiveX VerboseLogging:1 hashAlgorithm:SHA-256 字符集:windows-1252 组件使用购买的解锁代码成功解锁。inputBytesQP: (request-target): get /isabel-connect/account-reports?offset=3D0&size=3D100=

\n主机:api.ibanity.com\n摘要:SHA-512=3Dz4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXc=

g/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg=3D=3D\n(已创建):16=

15287272\nauthorization: Bearer access_token_1615287272 hashAndSign: modulus_bitlen: 2048 hashBytes: B22B C9AF 7041 43E4 1CFE 5898 C88C C9CE 95FC B536 AC75 1F21 996C 7E7A 7B19 80EF padAndSignHash: keyType: Private hashInSize: 32 padding: PSS hashAlg: SHA-256 pss_encode: emLen: 256 autoSelectedSaltLen: 32 (leaveContext) (leaveContext 31ms) byteOrder: LittleEndian (leaveContext 31ms) signature: 0b/fLp4xbSaGqrH7HXsP8bRuhtr9xo7oPiY1+ryhVuR4vDCdCRFc2As6RX2SazS2T2MK4P966TX1rr5Qx2VnDYN0JL6ZnZAiR/P+ILP19bJN9+f6Jv1nfmgSOUB/stxeLKNlibeMXaR6+heX/ccGY807r8MdEk3hGFwlkK611GjrHoNTH+vge2ReQo8lKBaVP1QIH​​CvwXUVS39GdABHFLxTQ8La514YX8qruJp6i69lDfCvh4P9rOl5pebMwknyEjJ2rs0D40MUU8z+hM5bm+hSD100S7Ww9sDwObitn4FftR60fee/f3vf9qCv0wkBTBbVP8DTR4vbpKxv/oUNXFQ== Success. (离开上下文 31 毫秒)

我们从 Isabel API 收到此错误:

{"errors":[{"code":"invalidSignature","detail":"无法验证HTTP签名。请参考https://documentation.ibanity.com/http-signature","meta": {}}]}

这也是原始的签名字符串:

(请求目标):获取/isabel-connect/account-reports?offset=0&size=100\n主机:api.ibanity.com\ndigest:SHA-512=z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==\n : 1615287272\n授权: Bearer access_token_1615287272

提前感谢您的任何帮助或建议。

问候。

盖伊

标签: rsapowerbuilderchilkat

解决方案


我创建了一些示例,并将在此处创建更多示例: https ://www.example-code.com/powerbuilder/ibanity.asp


推荐阅读