gpt4 book ai didi

javascript - 如何在 NetSuite 或 javascript 中解码私钥的 BASE64、PCKS-8 表示形式?

转载 作者:行者123 更新时间:2023-11-29 23:52:55 28 4
gpt4 key购买 nike

我正在开发一个 suitescript 以将 NetSuite 与 Walmart Marketplace API 集成。而且,作为另一个 OP here他们的文档说得很对,如果您不使用 Java,您就得靠自己了。

我正在寻找一种在 suitescript 或 javascript 中执行相同操作的方法。

来自沃尔玛 API 文档的说明:

Sign the byte array representation of this data by:

Decoding the Base 64, PKCS-8 representation of your private key. Note that the key is encoded using PKCS-8. Libraries in various languages offer the ability to specify that the key is in this format and not in other conflicting formats such as PKCS-1. Use this byte representation of your key to sign the data using SHA-256 With RSA. Encode the resulting signature using 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 中开发一个 SAML 连接器,发现了几个处理不同 key 文件格式等的库。我已经走了很远,但运行一些脚本的时间令人难以置信(想象一下尝试登录,但过程花费两分钟决定您的登录是否有效)

那时我切换到外部系统并使用 Netsuite 的入站 SSO 管理 SSO。

即使使用 SS 2.0,加密部门的 NS 看起来也没有那么大的改进。

我倾向于将其分为两部分。在 Suitescript 中生成您的文件,并通过处理签名要求的基于 Java 的 Web 服务传递它们。最大限度地减少您必须编写的 Java 数量,并使您的交易提取/格式化脚本易于控制。

关于javascript - 如何在 NetSuite 或 javascript 中解码私钥的 BASE64、PCKS-8 表示形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416709/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com