@carboncollins/mobileconfig
Version:
Create and sign iOS mobileconfig configuration files
168 lines (122 loc) • 6.81 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.RawPayload = exports.WiFiPayload = exports.WebClipPayload = exports.CertificatePreferencePayload = exports.CertificatePayload = exports.CardDAVPayload = exports.CalendarSubscriptionPayload = exports.CalDAVPayload = exports.AppLockPayload = exports.APNPayload = exports.AirPrintPayload = exports.AirPlaySecurityPayload = exports.AirPlayPayload = exports.ActiveDirectoryCertificate = exports.MobileConfigPayload = exports.MobileConfigProfile = undefined;
exports.generatePropertyList = generatePropertyList;
exports.generateSignedPropertyList = generateSignedPropertyList;
var _plist = require('plist');
var _plist2 = _interopRequireDefault(_plist);
var _jsrsasign = require('jsrsasign');
var _jsrsasign2 = _interopRequireDefault(_jsrsasign);
var _profile = require('./models/profile.js');
var _profile2 = _interopRequireDefault(_profile);
var _payload = require('./models/payload.js');
var _payload2 = _interopRequireDefault(_payload);
var _activeDirectoryCertificatePayload = require('./models/activeDirectoryCertificatePayload.js');
var _activeDirectoryCertificatePayload2 = _interopRequireDefault(_activeDirectoryCertificatePayload);
var _airPlayPayload = require('./models/airPlayPayload.js');
var _airPlayPayload2 = _interopRequireDefault(_airPlayPayload);
var _airPlaySecurityPayload = require('./models/airPlaySecurityPayload.js');
var _airPlaySecurityPayload2 = _interopRequireDefault(_airPlaySecurityPayload);
var _airPrintPayload = require('./models/airPrintPayload.js');
var _airPrintPayload2 = _interopRequireDefault(_airPrintPayload);
var _apnPayload = require('./models/apnPayload.js');
var _apnPayload2 = _interopRequireDefault(_apnPayload);
var _appLockPayload = require('./models/appLockPayload.js');
var _appLockPayload2 = _interopRequireDefault(_appLockPayload);
var _calDAVPayload = require('./models/calDAVPayload.js');
var _calDAVPayload2 = _interopRequireDefault(_calDAVPayload);
var _calendarSubscriptionPayload = require('./models/calendarSubscriptionPayload.js');
var _calendarSubscriptionPayload2 = _interopRequireDefault(_calendarSubscriptionPayload);
var _cardDAVPayload = require('./models/cardDAVPayload.js');
var _cardDAVPayload2 = _interopRequireDefault(_cardDAVPayload);
var _certificatePayload = require('./models/certificatePayload.js');
var _certificatePayload2 = _interopRequireDefault(_certificatePayload);
var _certificatePreferencePayload = require('./models/certificatePreferencePayload.js');
var _certificatePreferencePayload2 = _interopRequireDefault(_certificatePreferencePayload);
var _webClipPayload = require('./models/webClipPayload.js');
var _webClipPayload2 = _interopRequireDefault(_webClipPayload);
var _wifiPayload = require('./models/wifiPayload.js');
var _wifiPayload2 = _interopRequireDefault(_wifiPayload);
var _rawPayload = require('./models/rawPayload.js');
var _rawPayload2 = _interopRequireDefault(_rawPayload);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @module @carboncollins/mobileconfig
* @description Create and sign iOS mobileconfig configuration files
*/
/**
* @description generates a mobileconfig file from an input profile
* @param {module:@carboncollins/mobileconfig.MobileConfigProfile} profile an input profile to be
* generated into a propertylist file and then saved as a .mobileconfig file
* @author CarbonCollins <toastyghost@carboncollins.uk>
* @method module:@carboncollins/mobileconfig.generatePropertyList
* @returns {String} a plist xml string to be exported
* @static
*/
function generatePropertyList(profile) {
return _plist2.default.build(profile);
}
/**
* @description generates a signed mobileconfig file from an input profile
* @param {module:@carboncollins/mobileconfig.MobileConfigProfile} profile an input profile to be
* generated into a propertylist file and then saved as a .mobileconfig file
* @param {Object} [options={}] options used for signing
* @author CarbonCollins <toastyghost@carboncollins.uk>
* @method module:@carboncollins/mobileconfig.generateSignedPropertyList
* @returns {String} a signed plist xml string to be exported
* @static
*/
function generateSignedPropertyList(profile, options) {
return new Promise(function (resolve) {
var _options$certificate = options.certificate,
certificate = _options$certificate === undefined ? '' : _options$certificate,
_options$ca = options.ca,
ca = _options$ca === undefined ? '' : _options$ca,
_options$key = options.key,
key = _options$key === undefined ? '' : _options$key,
_options$hashAlgorith = options.hashAlgorithm,
hashAlgorithm = _options$hashAlgorith === undefined ? 'sha256' : _options$hashAlgorith,
_options$signAlgorith = options.signAlgorithm,
signAlgorithm = _options$signAlgorith === undefined ? 'SHA256withRSA' : _options$signAlgorith,
_options$signingTime = options.signingTime,
signingTime = _options$signingTime === undefined ? null : _options$signingTime;
var certs = certificate.toString().concat(ca.toString()).trim().split('END CERTIFICATE-----').map(function (cert) {
return (cert + 'END CERTIFICATE-----').trim();
}).reverse().splice(1);
var signingOptions = {
content: {
str: _plist2.default.build(profile.plistSafeObject).toString('utf-8')
},
certs: certs,
signerInfos: [{
hashAlg: hashAlgorithm,
sAttr: signingTime ? {
SigningTime: {},
SigningCertificateV2: { array: certs }
} : {}
}],
signerCert: certs.slice(-1),
sigAlg: signAlgorithm,
signerPrvKey: key.toString()
};
resolve(Buffer.from(_jsrsasign2.default.asn1.cms.CMSUtil.newSignedData(signingOptions).getContentInfoEncodedHex(), 'hex'));
});
}
exports.MobileConfigProfile = _profile2.default;
exports.MobileConfigPayload = _payload2.default;
exports.ActiveDirectoryCertificate = _activeDirectoryCertificatePayload2.default;
exports.AirPlayPayload = _airPlayPayload2.default;
exports.AirPlaySecurityPayload = _airPlaySecurityPayload2.default;
exports.AirPrintPayload = _airPrintPayload2.default;
exports.APNPayload = _apnPayload2.default;
exports.AppLockPayload = _appLockPayload2.default;
exports.CalDAVPayload = _calDAVPayload2.default;
exports.CalendarSubscriptionPayload = _calendarSubscriptionPayload2.default;
exports.CardDAVPayload = _cardDAVPayload2.default;
exports.CertificatePayload = _certificatePayload2.default;
exports.CertificatePreferencePayload = _certificatePreferencePayload2.default;
exports.WebClipPayload = _webClipPayload2.default;
exports.WiFiPayload = _wifiPayload2.default;
exports.RawPayload = _rawPayload2.default;