如何在VBA中将私钥转换为PKCS8格式?

时间:2019-12-28 09:37:13

标签: vba jwt jwt-auth

我正在vba中编写一些API代码以连接到安全端点。该过程的一部分要求我发送有效载荷,并使用我的私钥对其进行签名。那里有人可以帮助我在VBA中将私钥转换为PKCS8格式吗?

下面是一些代码,这些代码精确地代表了我想要完成的工作,尽管在Java中,我知道它的工作原理。我想要的是VBA中的类似内容。

=====

function _genJWS() {

var sHead = "some value";
var sPayload = "Some payload";
var sPemPrvKey = "Some private key";

var sResult = null;

try {
  prv = KEYUTIL.getKey(sPemPrvKey);
  sResult = sign("RS256", sHead, sPayload, prv);
  "some value" = sResult;
 } catch (ex) {
  alert("Error: " + ex);
  }
}

function sign(alg, spHeader, spPayload, key, pass) {

var sHeader, pHeader, sPayload;

sHeader = spHeader;
if (! KJUR.jws.JWS.isSafeJSONString(sHeader))
    throw "JWS Head is not safe JSON string: " + sHeader;
pHeader = KJUR.jws.JWS.readSafeJSONString(sHeader);

sPayload = spPayload;

if (alg !== pHeader.alg)
    throw "alg and sHeader.alg doesn't match: " + alg + "!=" + 
pHeader.alg;

var sigAlg = KJUR.jws.JWS.jwsalg2sigalg[alg];

var uHeader = utf8tob64u(sHeader);
var uPayload = sPayload;
var uSignatureInput = uHeader + "." + uPayload

var hSig = "";
if (sigAlg != "none") {
  var sig = new KJUR.crypto.Signature({'alg': sigAlg});
    sig.init(key, pass);
    sig.updateString(uSignatureInput);
    hSig = sig.sign();
}

var uSig = hextob64u(hSig);
return uHeader + ".." + uSig;
};

0 个答案:

没有答案