【发布时间】:2017-02-23 13:10:28
【问题描述】:
我正在开发一个套件脚本,以将 NetSuite 与 Walmart Marketplace API 集成。而且,正如另一位 OP here 所说的那样,他们的文档几乎说如果您不使用 Java,您就只能靠自己了。
我正在寻找一种在suitescript 或javascript 中执行相同操作的方法。
沃尔玛 API 文档说明:
通过以下方式对该数据的字节数组表示进行签名:
解码您的私钥的 Base 64、PKCS-8 表示。请注意,密钥是使用 PKCS-8 编码的。各种语言的库提供了指定密钥采用这种格式而不是其他冲突格式(如 PKCS-1)的能力。使用您的密钥的此字节表示,使用带有 RSA 的 SHA-256 对数据进行签名。使用 Base 64 对生成的签名进行编码。
而且,他们的文档中的一个 java 代码也可以做到这一点:
public static String signData(String stringToBeSigned, String encodedPrivateKey) {
String signatureString = null;
try {
byte[] encodedKeyBytes = Base64.decodeBase64(encodedPrivateKey);
PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(encodedKeyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
PrivateKey myPrivateKey = kf.generatePrivate(privSpec);
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(myPrivateKey);
byte[] data = stringToBeSigned.getBytes("UTF-8");
signature.update(data);
byte[] signedBytes = signature.sign();
signatureString = Base64.encodeBase64String(signedBytes);
} catch (Exception e) {
e.printStackTrace();
}
return signatureString;
}
作为参考,这里是similar thing asked for dot net。任何帮助将不胜感激。
【问题讨论】:
-
请从 JavaScript 重新标记为 Java。
-
我想我只在 javascript 或 Netsuite 中寻求任何帮助。我提供的java代码仅供参考。所以这应该只标记为javascript。如果我错了,请纠正。
标签: javascript authentication netsuite suitescript walmart-api