使用applet在pdf上应用数字签名

时间:2016-01-01 06:46:55

标签: applet itext digital-signature bouncycastle

我试图使用java applet在pdf上实现数字签名。我已将所需的jar传递给applet

public class CertificateFragment extends BaseFragment {

    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";
    //protected ViewGroup root;
    protected Context context;
    @Bind(R.id.rv_Certificates) RecyclerView rvCertificates;

    private CertificateRVAdapter.CertificateClickListener listener = new CertificateRVAdapter.CertificateClickListener() {

        @Override
        public void onCertificateClicked(Certificates certificate) {
            Toast.makeText(getActivity(), certificate.getName() +" Clicked", Toast.LENGTH_SHORT).show();
            //interactionListener.launchCourseListingFragment();
            interactionListener.launchCoursesListOfCertificatesFragment(certificate);
        }
    };


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        if(root==null) {

            root = (ViewGroup) inflater.inflate(R.layout.fragment_certificate, container, false);
            ButterKnife.bind(this, root);

            initInstances();
            getCertificates();
        }
        return root;
    }
//    rvCourseListing.setItemAnimator(new DefaultItemAnimator());
//    rvCourseListing.setLayoutManager(new LinearLayoutManager(getActivity()));
//    rvCourseListing.setHasFixedSize(true);
//

    private void initInstances() {
        //uiHelper = new UIHelper(getActivity());

        ((HomeActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
        ((HomeActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        ((HomeActivity) getActivity()).getSupportActionBar().setTitle("");

        rvCertificates.setItemAnimator(new DefaultItemAnimator());
        rvCertificates.setLayoutManager(new LinearLayoutManager(getActivity()));
        rvCertificates.setHasFixedSize(true);
    }

    private void getCertificates() {

        Call<AllCertificateResponse> call = RestClient.getCMSServiceInstance().getCertificates();

        call.enqueue(new Callback<AllCertificateResponse>() {
            @Override
            public void onResponse(Response<AllCertificateResponse> response, Retrofit retrofit) {
                if (response.isSuccess()) {
                    //com.squareup.okhttp.Response raw = response.body().raw();

                    List<Certificates> certificates = response.body().getCertificates();
                    if (certificates != null)
                        showCertificates(certificates);

                    Toast.makeText(getActivity(), "Success in getting certificates", Toast.LENGTH_SHORT).show();
                } else {
                    Log.d("CERT", "response is failure");
                }
            }

            @Override
            public void onFailure(Throwable t) {
                Toast.makeText(getActivity(), "Failure", Toast.LENGTH_SHORT).show();
            }

        });
    }

    public void showCertificates(List<Certificates> certificates){

        CertificateRVAdapter adapter = new CertificateRVAdapter(getActivity(), certificates);
        adapter.setCertificateClickListener(listener);
        rvCertificates.setAdapter(adapter);
    }

    public FragmentId getFragmentId() {
        return FragmentId.COURSE_LISTING_FRAGMENT;
    }

}

但无法在浏览器上运行,即使它适用于applet查看器。当我在/ jre / lib / ext文件夹中添加这些jar时,它也会在浏览器上运行。

我无法将jar放在指定的文件夹上,因为applet在客户端的浏览器上运行,并且不是将jar放在每个客户端的PC上的好方法。

1 个答案:

答案 0 :(得分:2)

您无法在未经许可的情况下添加安全提供程序。您需要签署代码并让用户接受小程序进行更改才能执行此操作。