UNPKG

@carboncollins/mobileconfig

Version:

Create and sign iOS mobileconfig configuration files

168 lines (122 loc) 6.81 kB
'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;