To provide improved security in adjunct program modules such as plug-ins and
dynamic
link libraries, a requesting module provides an authorization interface to the
invoked module such that the invoked module can require a certificate of the requesting
module and can also challenge the authority of the requesting module. The certificate
can include one or more permissions which are prerequisites for processing by the
invoked module. The invoked module can challenge the authority of the requesting
module by sending random test data to the requesting module and receiving in response
a cryptographic signature of the test data. By verifying the signature of the requesting
module using the received certificate, the invoked module confirms that the requesting
module is, in fact, the owner of the receive certificate.