Revision 6dd86be3
| trustedintents/src/info/guardianproject/trustedintents/TrustedIntents.java | ||
|---|---|---|
| 92 | 92 | 
    return true;  | 
| 93 | 93 | 
    }  | 
| 94 | 94 | 
     | 
| 95 | 
    public Intent getIntentFromTrustedSender(Activity activity)  | 
|
| 96 | 
                throws NameNotFoundException, CertificateException {
   | 
|
| 97 | 
    Intent intent = activity.getIntent();  | 
|
| 98 | 
    if (!isIntentSane(intent))  | 
|
| 99 | 
    throw new NameNotFoundException(  | 
|
| 100 | 
    "Intent incomplete or was sent using startActivity() instead of startActivityWithResult()");  | 
|
| 95 | 
    /**  | 
|
| 96 | 
         * Check if an {@link Intent} is from a trusted sender.
   | 
|
| 97 | 
    *  | 
|
| 98 | 
         * @param intent the {@code Intent} to check
   | 
|
| 99 | 
         * @return boolean whether {@code intent} is from a trusted sender
   | 
|
| 100 | 
    * @see #addTrustedSigner(Class)  | 
|
| 101 | 
    */  | 
|
| 102 | 
        public boolean isIntentFromTrustedSender(Intent intent) {
   | 
|
| 103 | 
            if (!isIntentSane(intent)) {
   | 
|
| 104 | 
    return false;  | 
|
| 105 | 
    }  | 
|
| 101 | 106 | 
    String packageName = intent.getPackage();  | 
| 102 | 107 | 
            if (TextUtils.isEmpty(packageName)) {
   | 
| 103 | 108 | 
    packageName = intent.getComponent().getPackageName();  | 
| 104 | 109 | 
    }  | 
| 105 | 
    if (TextUtils.isEmpty(packageName))  | 
|
| 106 | 
    throw new NameNotFoundException(packageName);  | 
|
| 107 | 
    checkTrustedSigner(packageName);  | 
|
| 108 | 
    return intent;  | 
|
| 110 | 
            if (TextUtils.isEmpty(packageName)) {
   | 
|
| 111 | 
    return false;  | 
|
| 112 | 
    }  | 
|
| 113 | 
    return isPackageNameTrusted(packageName);  | 
|
| 114 | 
    }  | 
|
| 115 | 
     | 
|
| 116 | 
    /**  | 
|
| 117 | 
         * Returns an {@link Intent} if the sending app is signed by one of
   | 
|
| 118 | 
         * the trusted signing keys as set in {@link #addTrustedSigner(Class)}.
   | 
|
| 119 | 
    *  | 
|
| 120 | 
         * @returns {@code null} if there is no {@code Intent} or if the
   | 
|
| 121 | 
    * sender is not trusted.  | 
|
| 122 | 
    * @see #addTrustedSigner(Class)  | 
|
| 123 | 
    */  | 
|
| 124 | 
        public Intent getIntentFromTrustedSender(Activity activity) {
   | 
|
| 125 | 
    Intent intent = activity.getIntent();  | 
|
| 126 | 
            if (isIntentFromTrustedSender(intent)) {
   | 
|
| 127 | 
    return intent;  | 
|
| 128 | 
    }  | 
|
| 129 | 
    return null;  | 
|
| 109 | 130 | 
    }  | 
| 110 | 131 | 
     | 
| 111 | 132 | 
        private boolean isIntentSane(Intent intent) {
   | 
Also available in: Unified diff