Revision 6dd86be3

View differences:

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