Sciuridae54696d
01/11/2023, 3:10 PM{
Error: {
type: "error.SuiteScriptError",
name: "AN_ERROR_OCCURRED_WHILE_DECRYPT_PASSWORDGUID",
message: "An error occurred while decrypting a credential."
}
}
Aint even trying a guid though damn, or just tell me its impossible because of a secure string issue and i'll try to shim my way towards light? (if thats even possible?)
require(['N/record','N/runtime','N/search','N/format',"N/encode","N/crypto"], function(record,runtime,search,format,encode,crypto) {
try{
var header = 'base64_clean_str1';
var body = 'base64_clean_str2';
var privateKey = "{custsecret_1}";
var rsa4096 = crypto.createSecretKey({
secret: privateKey,
encoding: encode.Encoding.UTF_8
});
var biscuit = crypto.createHmac({
algorithm: crypto.HashAlg.SHA256,
key:rsa4096
});
biscuit.update({
input:header +"."+ body,
inputEncoding: encode.Encoding.UTF_8
});
var signature = biscuit.digest({
outputEncoding:encode.Encoding.BASE_64_URL_SAFE
})
log.debug("signature",signature);
var abc = 1;
} catch (e) {
var scriptId = runtime.getCurrentScript().id;
log.error('ERROR:'+scriptId+':fn:'+runtime.executionContext, JSON.stringify({type: e.type,name: e.name,message: e.message,stack: e.stack,cause: JSON.stringify(e.cause),id: e.id}));
}
});
battk
01/11/2023, 3:17 PMbattk
01/11/2023, 3:18 PMShawn Talbert
01/11/2023, 3:19 PMCertificates
store in NS?Sciuridae54696d
01/11/2023, 3:23 PM-----BEGIN PRIVATE KEY-----
MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDB676k31ygRVmc
...
vDFbIqe9mWaLPZ+eGTMVXqxGYZgpC0f47jnr0om3jzFFLM7+zDhztIRkXnfHKNJk
GUFNkknDR6s+oCA/Xej+utA/tUf2nQ==
-----END PRIVATE KEY-----
Sciuridae54696d
01/11/2023, 3:24 PMconst apiSecret = fs.readFileSync("secret.key", "utf8");
Sciuridae54696d
01/11/2023, 3:24 PMbattk
01/11/2023, 3:25 PMbattk
01/11/2023, 3:26 PMbattk
01/11/2023, 3:26 PMbattk
01/11/2023, 3:26 PMbattk
01/11/2023, 3:27 PMSciuridae54696d
01/11/2023, 3:29 PMbattk
01/11/2023, 3:31 PMbattk
01/11/2023, 3:31 PMSciuridae54696d
01/11/2023, 3:34 PMbattk
01/11/2023, 3:35 PMSciuridae54696d
01/11/2023, 3:36 PMSciuridae54696d
01/11/2023, 3:49 PMSciuridae54696d
01/11/2023, 3:52 PMbattk
01/11/2023, 3:53 PMShawn Talbert
01/11/2023, 3:58 PMShawn Talbert
01/11/2023, 3:59 PMSciuridae54696d
01/11/2023, 3:59 PMSciuridae54696d
01/11/2023, 4:02 PMcrypto.createHash("sha256").update(JSON.stringify(bodyJson || "")).digest().toString("hex")
hopefully not asyncbattk
01/11/2023, 4:03 PMSciuridae54696d
01/11/2023, 4:04 PMbattk
01/11/2023, 4:05 PMbattk
01/11/2023, 4:05 PMbattk
01/11/2023, 4:05 PMSciuridae54696d
01/11/2023, 4:07 PMbattk
01/11/2023, 4:11 PMbattk
01/11/2023, 4:12 PMbattk
01/11/2023, 4:12 PMSciuridae54696d
01/11/2023, 4:14 PMSciuridae54696d
01/11/2023, 4:16 PMSciuridae54696d
01/11/2023, 4:16 PMbattk
01/11/2023, 4:23 PMbattk
01/11/2023, 4:24 PMeyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.NHVaYe26MbtOYhSKkoKYdFVomg4i8ZJd8_-RU8VNbftc4TSMb4bXP3l3YlNWACwyXPGffz5aXHc6lty1Y2t4SWRqGteragsVdZufDn5BlnJl9pdR_kdVFUsra2rWKEofkZeIC4yWytE58sMIihvo9H1ScmmVwBcQP6XETqYd0aSHp1gOa9RdUPDvoXQ5oqygTqVtxaDr6wUFKrKItgBMzWIdNZ6y7O9E0DhEPTbE9rfBo6KTFsHAZnMg4k68CDp2woYIaXbmYTWcvbzIuHO7_37GT79XdIwkm95QJ7hYC9RiwrV7mesbY4PAahERJawntho0my942XheVLmGwLMBkQ
battk
01/11/2023, 4:25 PM{
"alg": "RS256",
"typ": "JWT"
}
battk
01/11/2023, 4:26 PMbattk
01/11/2023, 4:26 PM{
"sub": "1234567890",
"name": "John Doe",
"admin": true,
"iat": 1516239022
}
battk
01/11/2023, 4:27 PMbattk
01/11/2023, 4:27 PMNHVaYe26MbtOYhSKkoKYdFVomg4i8ZJd8_-RU8VNbftc4TSMb4bXP3l3YlNWACwyXPGffz5aXHc6lty1Y2t4SWRqGteragsVdZufDn5BlnJl9pdR_kdVFUsra2rWKEofkZeIC4yWytE58sMIihvo9H1ScmmVwBcQP6XETqYd0aSHp1gOa9RdUPDvoXQ5oqygTqVtxaDr6wUFKrKItgBMzWIdNZ6y7O9E0DhEPTbE9rfBo6KTFsHAZnMg4k68CDp2woYIaXbmYTWcvbzIuHO7_37GT79XdIwkm95QJ7hYC9RiwrV7mesbY4PAahERJawntho0my942XheVLmGwLMBkQ
is the signature, which has the crypto payload in therebattk
01/11/2023, 4:30 PMSciuridae54696d
01/11/2023, 4:30 PMSciuridae54696d
01/11/2023, 4:31 PMbattk
01/11/2023, 4:31 PMSciuridae54696d
01/11/2023, 4:32 PMAslST2owWI56Akl2t0QYTLZCnsvqEUJyJV6oUVuyGbM
vs
jsnBEBlcogkB2MHQmH2axqAKdK5splDXnrzZ_MHWaCeKqoX-kMorQzuEltUIuTM1PXFC_5ts9YqiWon7M4ye9fQ8l4xye9M4pXf_TqVAOsm9sJsYxDbEcyeZkNQ5A9mZfXwQ8JaFj6_a56ovEaupsQX2aa0AVVo0hihwnHAF0Ubn0MgnkEqQ6Ax2EWoJrPcQy5-nQkoowqPHL4kMfeUslstNXljpzqSLmuECQNF8b_0SVoLzTCRlRXXMCr3-0CxBuxmOenve_eWXIT5PyOihYtx0LDGQBjHtIosfMRyh8VmTw8meVl-TIKyWPD0rKGKh8T76zJ0XxQVQsH0DmTnQkK9nXg_N_1yxp-xQl6X01hqN1-8f2mqg64TE9z5bn4llhFpuQwv_WFKYW2XjXH_PPL9CpraLYe_ezJ53Aevg0m1oiUg7paiGGjK-gdvkDtSpmmyEaJWU5z_FhJHR8ro-meI_FEzGYa4qWNXSyZvEOyY4hNHiS1AJb1u9znacA0oCeF9YLnhVllrcL6_28LXOU5CisxkVxw7ECi1X4IwcOiBlDnDAp8lPKd2rghwBfB-BwsNo_vIy1_xfN4SPli0ObCnSk96LMqVn5Mu3CKNM_6Wxt-Ht8SRt1KXUkSzQ6ffJabRLDYHgPOYMkBscMCrkRNLT6FesiemOtfTiBz4AsAk
Sciuridae54696d
01/11/2023, 4:33 PMSciuridae54696d
01/11/2023, 4:35 PMcrypto.createHash("sha256").update(JSON.stringify(bodyJson || "")).digest().toString("hex")
and from testing this is never null, too, and this whole payload with the other params etc is part of the "body" in the biscuit.updateSciuridae54696d
01/11/2023, 4:35 PMbattk
01/11/2023, 4:38 PMAslST2owWI56Akl2t0QYTLZCnsvqEUJyJV6oUVuyGbM
is a proper sha-256 hashbattk
01/11/2023, 4:39 PMbattk
01/11/2023, 4:40 PMbattk
01/11/2023, 4:40 PMjsnBEBlcogkB2MHQmH2axqAKdK5splDXnrzZ_MHWaCeKqoX-kMorQzuEltUIuTM1PXFC_5ts9YqiWon7M4ye9fQ8l4xye9M4pXf_TqVAOsm9sJsYxDbEcyeZkNQ5A9mZfXwQ8JaFj6_a56ovEaupsQX2aa0AVVo0hihwnHAF0Ubn0MgnkEqQ6Ax2EWoJrPcQy5-nQkoowqPHL4kMfeUslstNXljpzqSLmuECQNF8b_0SVoLzTCRlRXXMCr3-0CxBuxmOenve_eWXIT5PyOihYtx0LDGQBjHtIosfMRyh8VmTw8meVl-TIKyWPD0rKGKh8T76zJ0XxQVQsH0DmTnQkK9nXg_N_1yxp-xQl6X01hqN1-8f2mqg64TE9z5bn4llhFpuQwv_WFKYW2XjXH_PPL9CpraLYe_ezJ53Aevg0m1oiUg7paiGGjK-gdvkDtSpmmyEaJWU5z_FhJHR8ro-meI_FEzGYa4qWNXSyZvEOyY4hNHiS1AJb1u9znacA0oCeF9YLnhVllrcL6_28LXOU5CisxkVxw7ECi1X4IwcOiBlDnDAp8lPKd2rghwBfB-BwsNo_vIy1_xfN4SPli0ObCnSk96LMqVn5Mu3CKNM_6Wxt-Ht8SRt1KXUkSzQ6ffJabRLDYHgPOYMkBscMCrkRNLT6FesiemOtfTiBz4AsAk
is far too large to have come out of a sha-256 hashSciuridae54696d
01/11/2023, 4:41 PMjsnBEBlcogkB2MHQmH2axqAKdK5splDXnrzZ_MHWaCeKqoX-kMorQzuEltUIuTM1PXFC_5ts9YqiWon7M4ye9fQ8l4xye9M4pXf_TqVAOsm9sJsYxDbEcyeZkNQ5A9mZfXwQ8JaFj6_a56ovEaupsQX2aa0AVVo0hihwnHAF0Ubn0MgnkEqQ6Ax2EWoJrPcQy5-nQkoowqPHL4kMfeUslstNXljpzqSLmuECQNF8b_0SVoLzTCRlRXXMCr3-0CxBuxmOenve_eWXIT5PyOihYtx0LDGQBjHtIosfMRyh8VmTw8meVl-TIKyWPD0rKGKh8T76zJ0XxQVQsH0DmTnQkK9nXg_N_1yxp-xQl6X01hqN1-8f2mqg64TE9z5bn4llhFpuQwv_WFKYW2XjXH_PPL9CpraLYe_ezJ53Aevg0m1oiUg7paiGGjK-gdvkDtSpmmyEaJWU5z_FhJHR8ro-meI_FEzGYa4qWNXSyZvEOyY4hNHiS1AJb1u9znacA0oCeF9YLnhVllrcL6_28LXOU5CisxkVxw7ECi1X4IwcOiBlDnDAp8lPKd2rghwBfB-BwsNo_vIy1_xfN4SPli0ObCnSk96LMqVn5Mu3CKNM_6Wxt-Ht8SRt1KXUkSzQ6ffJabRLDYHgPOYMkBscMCrkRNLT6FesiemOtfTiBz4AsAk
and
AslST2owWI56Akl2t0QYTLZCnsvqEUJyJV6oUVuyGbM
is actually the signature after hmac that i'm comparingSciuridae54696d
01/11/2023, 4:42 PMvar biscuit = crypto.createHmac({
algorithm: crypto.HashAlg.SHA256,
key:rsa4096
});
biscuit.update({
input:header +"."+ body,
inputEncoding: encode.Encoding.UTF_8
});
var signature = biscuit.digest({
outputEncoding:encode.Encoding.BASE_64_URL_SAFE
})
biscuit loaded null from rsa4096 (which is the createSecretKey) and then digested fineSciuridae54696d
01/11/2023, 4:43 PMbattk
01/11/2023, 4:44 PMbattk
01/11/2023, 4:44 PMbattk
01/11/2023, 4:44 PMSciuridae54696d
01/11/2023, 4:51 PMSciuridae54696d
01/11/2023, 4:51 PMbattk
01/11/2023, 4:52 PMbattk
01/11/2023, 4:52 PMbattk
01/11/2023, 4:53 PMSciuridae54696d
01/11/2023, 4:53 PMbattk
01/11/2023, 4:57 PMbattk
01/11/2023, 4:57 PMSciuridae54696d
01/11/2023, 5:14 PMbattk
01/11/2023, 5:55 PMShawn Talbert
01/12/2023, 3:00 PMShawn Talbert
01/12/2023, 3:01 PMbattk
01/12/2023, 3:02 PM