aboutsummaryrefslogtreecommitdiffstats
path: root/package/Makefile
Commit message (Expand)AuthorAgeFilesLines
* build: cleanup tmp/ dir of target rootfsYousong Zhou2017-05-021-1/+1
* build: skip opkg host dependency within the SDKFelix Fietkau2017-02-211-1/+3
* build: move opkg host dependency from package/install to package/compileFelix Fietkau2017-02-211-1/+3
* build: make <subdir>/install opt-in, use it for target/ onlyFelix Fietkau2017-02-091-1/+0
* Revert "build: always run package/cleanup before package/compile"Felix Fietkau2017-01-221-2/+1
* build: always run package/cleanup before package/compileFelix Fietkau2017-01-221-1/+2
* build: fix triggering opkg/host compilationJo-Philipp Wich2017-01-191-1/+1
* build: add support for automatically removing build dir contents during buildFelix Fietkau2017-01-181-0/+1
* opkg: drop S/MIME supportFelix Fietkau2017-01-101-28/+0
* package/Makefile & ipkg-make-index.sh: add full package data listAlberto Bursi2016-12-261-1/+2
* build: add CHECK_ALL variable to allow make download/check to include not sel...Felix Fietkau2016-12-171-0/+4
* build: implement make check and make package/X/checkFelix Fietkau2016-12-171-0/+1
* image: fix CONFIG_CLEAN_IPKG with CONFIG_TARGET_PER_DEVICE_ROOTFSMatthias Schiffer2016-09-251-1/+4
* build: create a package feed directory containing all packagesFelix Fietkau2016-08-011-1/+9
* build: add template for getting opkg package files from package namesFelix Fietkau2016-07-291-5/+1
* build: rework opkg command invocationFelix Fietkau2016-07-291-2/+7
* build: rework prepare_rootfs to pass target dir via parameterFelix Fietkau2016-07-291-1/+1
* build: move rootfs processing code to include/rootfs.mk so it can be reused l...Felix Fietkau2016-07-291-74/+2
* include: choose package output directory based on repository infoJo-Philipp Wich2016-04-061-16/+7
* package: remove .git files from imagesHauke Mehrtens2016-04-171-0/+1
* buildroot: apply IGNORE_ERRORS to host buildsJo-Philipp Wich2016-03-041-2/+5
* package/Makefile: override opkg installation time when SOURCE_DATE_EPOCH setFelix Fietkau2016-01-311-0/+1
* include: group kmod ipk files into a "kernel" subdirectoryJo-Philipp Wich2016-01-241-2/+2
* build: add opkg host dependencyFelix Fietkau2015-12-131-1/+1
* build: Prevent more gzip timestampsJohn Crispin2015-07-141-1/+1
* fix mklibs with muslMatteo Croce2015-06-251-1/+1
* build: do another init script enabling run, fixes init scripts added via file...Felix Fietkau2015-06-141-0/+4
* build: trigger pacakge index creation for all feeds if requiredJo-Philipp Wich2015-05-261-1/+5
* build: allow creating empty package feedsFelix Fietkau2015-05-261-2/+2
* build: add integration for managing opkg package feed keysFelix Fietkau2015-04-061-0/+9
* postinst trigger: the new postinst trigger broke IBJohn Crispin2014-09-161-3/+3
* ipkg: add a default postinst/prerm scriptJohn Crispin2014-09-111-1/+2
* build: consider sub-directories when deploying packages to image with CONFIG_...Jo-Philipp Wich2014-08-071-1/+1
* build: introduce per feed repository supportJo-Philipp Wich2014-08-051-4/+17
* package/Makefile: Substituted deprecated -perm +mode with -perm /modeJohn Crispin2014-06-021-1/+1
* package: ignore failed downloads with IGNORE_ERRORSJo-Philipp Wich2014-05-141-0/+1
* target/sdk: use .config instead of unconditionally enabling all build dirsFelix Fietkau2014-03-131-5/+2
* build: fix installation of default-variant packages when the source package h...Felix Fietkau2014-03-121-1/+1
* package/index: fix index creating when building without signingSteven Barth2013-10-021-4/+4
* Add package signing infrastructureSteven Barth2013-10-021-3/+28
* mklibs: Fix mklibs usage when *.so files reside in subdirsFelix Fietkau2013-08-261-5/+3
* build: fix IGNORE_ERRORS for sources packages that match both 'y' and 'm'Felix Fietkau2013-07-181-1/+6
* build: only install packages for selected variants, fixes building multiple v...Felix Fietkau2012-12-131-2/+13
* package: use file_copy to deploy files/ in the package/install phaseJo-Philipp Wich2012-12-021-9/+1
* buildroot: isolate the .install stamp files for build variants (#12279)Jo-Philipp Wich2012-11-071-7/+7
* build: add back the package/cleanup step to remove the root staging dir for m...Felix Fietkau2012-10-151-1/+5
* build: rework the package/install step - collect package install lists during...Felix Fietkau2012-10-061-11/+33
* mklibs: update to 0.1.34 (v2)Luka Perkov2012-06-101-1/+1
* make sure that base-files is installed last, this allows per-target base-file...Jo-Philipp Wich2011-06-081-1/+1
* remove postinst files for preinstalled packagesFelix Fietkau2011-03-251-0/+1
putData = inputData; mSignAlgos = signAlgos; mSignatureTime = signatureTime; mMasterKeyId = masterKeyId; mSubKeyId = subKeyId; } public RequiredInputParcel(Parcel source) { mType = RequiredInputType.values()[source.readInt()]; // 0 = none, 1 = signAlgos + inputData, 2 = only inputData (decrypt) int inputDataType = source.readInt(); if (inputDataType != 0) { int count = source.readInt(); mInputData = new byte[count][]; if (inputDataType == 1) { mSignAlgos = new int[count]; for (int i = 0; i < count; i++) { mInputData[i] = source.createByteArray(); mSignAlgos[i] = source.readInt(); } } else { mSignAlgos = null; for (int i = 0; i < count; i++) { mInputData[i] = source.createByteArray(); } } } else { mInputData = null; mSignAlgos = null; } mSignatureTime = source.readInt() != 0 ? new Date(source.readLong()) : null; mMasterKeyId = source.readInt() != 0 ? source.readLong() : null; mSubKeyId = source.readInt() != 0 ? source.readLong() : null; } public Long getMasterKeyId() { return mMasterKeyId; } public Long getSubKeyId() { return mSubKeyId; } public static RequiredInputParcel createRetryUploadOperation() { return new RequiredInputParcel(RequiredInputType.UPLOAD_FAIL_RETRY, null, null, null, 0L, 0L); } public static RequiredInputParcel createOrbotRequiredOperation() { return new RequiredInputParcel(RequiredInputType.ENABLE_ORBOT, null, null, null, 0L, 0L); } public static RequiredInputParcel createNfcSignOperation( long masterKeyId, long subKeyId, byte[] inputHash, int signAlgo, Date signatureTime) { return new RequiredInputParcel(RequiredInputType.NFC_SIGN, new byte[][] { inputHash }, new int[] { signAlgo }, signatureTime, masterKeyId, subKeyId); } public static RequiredInputParcel createNfcDecryptOperation( long masterKeyId, long subKeyId, byte[] encryptedSessionKey) { return new RequiredInputParcel(RequiredInputType.NFC_DECRYPT, new byte[][] { encryptedSessionKey }, null, null, masterKeyId, subKeyId); } public static RequiredInputParcel createNfcReset() { return new RequiredInputParcel(RequiredInputType.NFC_RESET_CARD, null, null, null, null, null); } public static RequiredInputParcel createRequiredSignPassphrase( long masterKeyId, long subKeyId, Date signatureTime) { return new RequiredInputParcel(RequiredInputType.PASSPHRASE, null, null, signatureTime, masterKeyId, subKeyId); } public static RequiredInputParcel createRequiredDecryptPassphrase( long masterKeyId, long subKeyId) { return new RequiredInputParcel(RequiredInputType.PASSPHRASE, null, null, null, masterKeyId, subKeyId); } public static RequiredInputParcel createRequiredSymmetricPassphrase() { return new RequiredInputParcel(RequiredInputType.PASSPHRASE_SYMMETRIC, null, null, null, null, null); } public static RequiredInputParcel createRequiredBackupCode() { return new RequiredInputParcel(RequiredInputType.BACKUP_CODE, null, null, null, null, null); } public static RequiredInputParcel createRequiredPassphrase( RequiredInputParcel req) { return new RequiredInputParcel(RequiredInputType.PASSPHRASE, null, null, req.mSignatureTime, req.mMasterKeyId, req.mSubKeyId); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mType.ordinal()); if (mInputData != null) { dest.writeInt(mSignAlgos != null ? 1 : 2); dest.writeInt(mInputData.length); for (int i = 0; i < mInputData.length; i++) { dest.writeByteArray(mInputData[i]); if (mSignAlgos != null) { dest.writeInt(mSignAlgos[i]); } } } else { dest.writeInt(0); } if (mSignatureTime != null) { dest.writeInt(1); dest.writeLong(mSignatureTime.getTime()); } else { dest.writeInt(0); } if (mMasterKeyId != null) { dest.writeInt(1); dest.writeLong(mMasterKeyId); } else { dest.writeInt(0); } if (mSubKeyId != null) { dest.writeInt(1); dest.writeLong(mSubKeyId); } else { dest.writeInt(0); } } public static final Creator<RequiredInputParcel> CREATOR = new Creator<RequiredInputParcel>() { public RequiredInputParcel createFromParcel(final Parcel source) { return new RequiredInputParcel(source); } public RequiredInputParcel[] newArray(final int size) { return new RequiredInputParcel[size]; } }; public static class NfcSignOperationsBuilder { Date mSignatureTime; ArrayList<Integer> mSignAlgos = new ArrayList<>(); ArrayList<byte[]> mInputHashes = new ArrayList<>(); long mMasterKeyId; long mSubKeyId; public NfcSignOperationsBuilder(Date signatureTime, long masterKeyId, long subKeyId) { mSignatureTime = signatureTime; mMasterKeyId = masterKeyId; mSubKeyId = subKeyId; } public RequiredInputParcel build() { byte[][] inputHashes = new byte[mInputHashes.size()][]; mInputHashes.toArray(inputHashes); int[] signAlgos = new int[mSignAlgos.size()]; for (int i = 0; i < mSignAlgos.size(); i++) { signAlgos[i] = mSignAlgos.get(i); } return new RequiredInputParcel(RequiredInputType.NFC_SIGN, inputHashes, signAlgos, mSignatureTime, mMasterKeyId, mSubKeyId); } public void addHash(byte[] hash, int algo) { mInputHashes.add(hash); mSignAlgos.add(algo); } public void addAll(RequiredInputParcel input) { if (!mSignatureTime.equals(input.mSignatureTime)) { throw new AssertionError("input times must match, this is a programming error!"); } if (input.mType != RequiredInputType.NFC_SIGN) { throw new AssertionError("operation types must match, this is a progrmming error!"); } Collections.addAll(mInputHashes, input.mInputData); for (int signAlgo : input.mSignAlgos) { mSignAlgos.add(signAlgo); } } public boolean isEmpty() { return mInputHashes.isEmpty(); } } public static class NfcKeyToCardOperationsBuilder { ArrayList<byte[]> mSubkeysToExport = new ArrayList<>(); Long mMasterKeyId; byte[] mPin; byte[] mAdminPin; public NfcKeyToCardOperationsBuilder(Long masterKeyId) { mMasterKeyId = masterKeyId; } public RequiredInputParcel build() { byte[][] inputData = new byte[mSubkeysToExport.size() + 2][]; // encode all subkeys into inputData byte[][] subkeyData = new byte[mSubkeysToExport.size()][]; mSubkeysToExport.toArray(subkeyData); // first two are PINs inputData[0] = mPin; inputData[1] = mAdminPin; // then subkeys System.arraycopy(subkeyData, 0, inputData, 2, subkeyData.length); ByteBuffer buf = ByteBuffer.wrap(mSubkeysToExport.get(0)); // We need to pass in a subkey here... return new RequiredInputParcel(RequiredInputType.NFC_MOVE_KEY_TO_CARD, inputData, null, null, mMasterKeyId, buf.getLong()); } public void addSubkey(long subkeyId) { byte[] subKeyId = new byte[8]; ByteBuffer buf = ByteBuffer.wrap(subKeyId); buf.putLong(subkeyId).rewind(); mSubkeysToExport.add(subKeyId); } public void setPin(Passphrase pin) { mPin = pin.toStringUnsafe().getBytes(); } public void setAdminPin(Passphrase adminPin) { mAdminPin = adminPin.toStringUnsafe().getBytes(); } public void addAll(RequiredInputParcel input) { if (!mMasterKeyId.equals(input.mMasterKeyId)) { throw new AssertionError("Master keys must match, this is a programming error!"); } if (input.mType != RequiredInputType.NFC_MOVE_KEY_TO_CARD) { throw new AssertionError("Operation types must match, this is a programming error!"); } Collections.addAll(mSubkeysToExport, input.mInputData); } public boolean isEmpty() { return mSubkeysToExport.isEmpty(); } } }