UNPKG

azure-cli

Version:

Microsoft Azure Cross Platform Command Line tool

60 lines (50 loc) 1.98 kB
// // Copyright (c) Microsoft and contributors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // // See the License for the specific language governing permissions and // limitations under the License. // /** * Functions to work with key and certificate files */ var fs = require('fs'); var utils = require('./utils'); var KEY_PATT = /(-+BEGIN RSA PRIVATE KEY-+)(\n\r?|\r\n?)([A-Za-z0-9\+\/\n\r]+\=*)(\n\r?|\r\n?)(-+END RSA PRIVATE KEY-+)/; var CERT_PATT = /(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9\+\/\n\r]+\=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/; exports.readFromFile = function readFromFile(fileName) { // other parameters are optional var data; try { data = fs.readFileSync(fileName, 'utf8'); } catch(e) { throw new Error('No account information found. Please import credentials using "azure account import <file>".'); } return exports.readFromString(data); }; exports.readFromString = function readFromString(data) { var ret = {}; var matchKey = data.match(KEY_PATT); if (matchKey) { ret.key = matchKey[1] + '\n' + matchKey[3] + '\n' + matchKey[5] + '\n'; } var matchCert = data.match(CERT_PATT); if (matchCert) { ret.cert = matchCert[1] + '\n' + matchCert[3] + '\n' + matchCert[5] + '\n'; } return ret; }; exports.writeToFile = function writeToFile(fileName, keyCertData) { utils.writeFileSyncMode(fileName, exports.writeToString(keyCertData), 'utf8'); }; exports.writeToString = function writeToString(keyCertData) { return (keyCertData.key || '') + (keyCertData.cert || ''); };