@ylveracode/veracode-cli
Version:
a NodeJS based API wrapper for utilizing the Veracode APIs
65 lines (64 loc) • 2.79 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateHeader = void 0;
const crypto = __importStar(require("crypto"));
const accessPropertiesReader_1 = require("./accessPropertiesReader");
const headerPreFix = "VERACODE-HMAC-SHA-256";
const verStr = "vcode_request_version_1";
function hmac256(data, key, format) {
let hash = crypto.createHmac('sha256', key).update(data);
if (format === undefined) {
return hash.digest();
}
else {
// no format = Buffer / byte array
return hash.digest(format);
}
}
function getByteArray(hex) {
var bytes = [];
for (var i = 0; i < hex.length - 1; i += 2) {
bytes.push(parseInt(hex.substr(i, 2), 16));
}
// signed 8-bit integer array (byte array)
return Int8Array.from(bytes);
}
function generateHeader(host, urlPpath, method) {
const credentials = accessPropertiesReader_1.getLocalAuthorization('default');
let id = credentials.API_ID;
let secret = credentials.SECRET;
if (id === undefined || id.length === 0 || secret === undefined || secret.length === 0) {
//console.error('No credentials provided or incorrect credentials');
console.error('No Veracode API credentials found. Please check your "credentials" file.');
return '';
}
var data = `id=${id}&host=${host}&url=${urlPpath}&method=${method}`;
var timestamp = (new Date().getTime()).toString();
var nonce = crypto.randomBytes(16).toString("hex");
// calculate signature
var hashedNonce = hmac256(getByteArray(nonce), getByteArray(secret), undefined);
var hashedTimestamp = hmac256(timestamp, hashedNonce, undefined);
var hashedVerStr = hmac256(verStr, hashedTimestamp, undefined);
var signature = hmac256(data, hashedVerStr, "hex");
return `${headerPreFix} id=${id},ts=${timestamp},nonce=${nonce},sig=${signature}`;
}
exports.generateHeader = generateHeader;