"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.exportCertBase64 = exportCertBase64; exports.generateUploadKeystore = generateUploadKeystore; exports.logKeystoreHashes = logKeystoreHashes; function _spawnAsync() { const data = _interopRequireDefault(require("@expo/spawn-async")); _spawnAsync = function () { return data; }; return data; } function _crypto() { const data = _interopRequireDefault(require("crypto")); _crypto = function () { return data; }; return data; } function _fsExtra() { const data = _interopRequireDefault(require("fs-extra")); _fsExtra = function () { return data; }; return data; } function _uuid() { const data = require("uuid"); _uuid = function () { return data; }; return data; } function _internal() { const data = require("../internal"); _internal = function () { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const log = _internal().Logger.global; async function exportCertBinary({ keystorePath, keystorePassword, keyAlias }, certFile) { try { return (0, _spawnAsync().default)('keytool', ['-exportcert', '-keystore', keystorePath, '-storepass', keystorePassword, '-alias', keyAlias, '-file', certFile, '-noprompt', '-storetype', 'JKS']); } catch (err) { if (err.code === 'ENOENT') { log.warn('Are you sure you have keytool installed?'); log.info('keytool is a part of OpenJDK: https://openjdk.java.net/'); log.info('Also make sure that keytool is in your PATH after installation.'); } if (err.stdout) { log.info(err.stdout); } if (err.stderr) { log.error(err.stderr); } throw err; } } async function exportCertBase64({ keystorePath, keystorePassword, keyAlias }, certFile) { try { return (0, _spawnAsync().default)('keytool', ['-export', '-rfc', '-keystore', keystorePath, '-storepass', keystorePassword, '-alias', keyAlias, '-file', certFile, '-noprompt', '-storetype', 'JKS']); } catch (err) { if (err.code === 'ENOENT') { log.warn('Are you sure you have keytool installed?'); log.info('keytool is a part of OpenJDK: https://openjdk.java.net/'); log.info('Also make sure that keytool is in your PATH after installation.'); } if (err.stdout) { log.info(err.stdout); } if (err.stderr) { log.error(err.stderr); } throw err; } } async function logKeystoreHashes(keystoreInfo, linePrefix = '') { const { keystorePath } = keystoreInfo; const certFile = `${keystorePath}.cer`; try { await exportCertBinary(keystoreInfo, certFile); const data = await _fsExtra().default.readFile(certFile); const googleHash = _crypto().default.createHash('sha1').update(data).digest('hex').toUpperCase(); const googleHash256 = _crypto().default.createHash('sha256').update(data).digest('hex').toUpperCase(); const fbHash = _crypto().default.createHash('sha1').update(data).digest('base64'); log.info(`${linePrefix}Google Certificate Fingerprint: ${googleHash.replace(/(.{2}(?!$))/g, '$1:')}`); log.info(`${linePrefix}Google Certificate Hash (SHA-1): ${googleHash}`); log.info(`${linePrefix}Google Certificate Hash (SHA-256): ${googleHash256}`); log.info(`${linePrefix}Facebook Key Hash: ${fbHash}`); } catch (err) { if (err.code === 'ENOENT') { log.warn('Are you sure you have keytool installed?'); log.info('keytool is a part of OpenJDK: https://openjdk.java.net/'); log.info('Also make sure that keytool is in your PATH after installation.'); } if (err.stdout) { log.info(err.stdout); } if (err.stderr) { log.error(err.stderr); } throw err; } finally { try { await _fsExtra().default.unlink(certFile); } catch (err) { if (err.code !== 'ENOENT') { log.error(err); } } } } async function createKeystore({ keystorePath, keystorePassword, keyAlias, keyPassword }, androidPackage) { try { return await (0, _spawnAsync().default)('keytool', ['-genkey', '-v', '-storetype', 'JKS', '-storepass', keystorePassword, '-keypass', keyPassword, '-keystore', keystorePath, '-alias', keyAlias, '-keyalg', 'RSA', '-keysize', '2048', '-validity', '10000', '-dname', `CN=${androidPackage},OU=,O=,L=,S=,C=US`]); } catch (err) { if (err.code === 'ENOENT') { log.warn('Are you sure you have keytool installed?'); log.info('keytool is a part of OpenJDK: https://openjdk.java.net/'); log.info('Also make sure that keytool is in your PATH after installation.'); } if (err.stdout) { log.info(err.stdout); } if (err.stderr) { log.error(err.stderr); } throw err; } } async function generateUploadKeystore(uploadKeystorePath, androidPackage, experienceName) { const keystoreData = { keystorePassword: (0, _uuid().v4)().replace(/-/g, ''), keyPassword: (0, _uuid().v4)().replace(/-/g, ''), keyAlias: Buffer.from(experienceName).toString('base64'), keystorePath: uploadKeystorePath }; await createKeystore(keystoreData, androidPackage); return keystoreData; } //# sourceMappingURL=AndroidCredentials.js.map