Re: Joe-E 2.0 Release

"Tyler Close" <[email protected]>
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
I've got an alternate proposal for marking Joe-E code.

Java supports package annotations that are available at both compile
time and runtime. I suggest Joe-E define an annotation
org.joe_e.verified. To enable Joe-E verification of a package, the
programmer adds the standard package-info.java file with content:

@org.joe_e.verified package org.example.stuff;

The Policy class can then check that a reflected member is either
defined in a Joe-E verified package, or is enabled in the safej
database. The safej database then doesn't need to contain any
information about Joe-E verified code, only tamed Java code.

--Tyler

On Fri, Mar 7, 2008 at 8:08 PM, Adrian Mettler <[email protected]> wrote:
> Thanks for the feedback.  In the current design, things are a pain when
>  there are multiple projects with Joe-E code, as the verifier is not
>  aware that the other projects are Joe-E verified.  I'm interested in
>  improving this, both in the long term and implementing some workarounds
>  for the short term -- it should be easier than your experience.  (I
>  recently grabbed the waterken release to work on implementing the needed
>  taming policy and encountered the same problems, and started
>  implementing prefs in the verifier to make things work more smoothly, as
>  it seemed to be even more of a problem then missing stuff in the safej
>  decisions.)
>
>  At the moment, the verifer autogenerates .safej and Policy files, but
>  this is not always necessary.  The safej files may be useful if the
>  project will be used as a library (particularly a binary library).  The
>  Policy file can be helpful if the project will be run as a stand-alone
>  application and uses reflection on classes defined in the project.
>  Neither are necessary if one is using a Policy file based on
>  distinguishing trusted/verified code (for which all methods are enabled)
>  by its classloader.  Ideally, there would be some way to tell when these
>  files are needed or useful, but in the short term I can make a pref to
>  toggle each of these on a per-project basis.  I can also have an option
>  to generate a Policy file that implements the prior classloader-checking
>  behavior to avoid the need for explicit taming info for non-library classes.
>
>  Another goal is to make the verifier aware of Joe-E code in other
>  projects, making it easier to handle multiple-project applications.
>  Previous versions had a hack of assuming that all source code in the
>  workspace was safe to call, whereas all JARs had to be tamed, but this
>  isn't a reliable distinction.  One could have legacy classes open as a
>  source project, or Joe-E code included from a JAR.  The simplest
>  approach to unify this was to require safej for everything (except, by
>  technical necessity, verified source in the same project); but in the
>  current implementation, I see that this is a real pain.  There are a
>  number of ways I see to improve this:
>  (1) add a pref to restore the previous behavior of trusting all source.
>      this is not a full solution, as not all source is trusted.  It also
>      may make compile-time taming policy differ from runtime taming
>      policy.  But it might be the easiest to implement temporarily
>  (2) recognize Joe-E code in other projects, the same way as Joe-E code
>      in the same project, and allow it to be used.  This can potentially
>      cause runtime and compile-time policy to differ, unless all Joe-E
>      code from such projects is used in creating Policy.java.  Either
>      way, I think that this is preferable to (1), as non-Joe-E stuff
>      won't ever get treated as safe for no good reason.  Unfortunately,
>      it still makes it a pain to use non-Joe-E code (which must still be
>      added to the taming database).
>  (3) read the taming directory of other projects and use their safej in
>      addition to the common safej configured in the preferences.
>      The taming folder for a project would contain both autogenerated
>      safej for Joe-E classes and manual or partially-automated safej
>      for non-Joe-E classes in the project.  The safejs in a project would
>      then be used for static taming enforcement and added to the Policy
>      file in other projects that depend on that project.  This has the
>      advantage compared to (2) of allowing use of source marked as
>      non-Joe-E without requiring its classes to be added to the global
>      taming database. The disadvantage is that it means that the safej
>      files must be generated even if otherwise not needed, unless
>      combined with option (2) in some way.
>
>  I'll see if I can implement (2) soon so you don't have to be dealing
>  with safej for the multiple Joe-E projects in Waterken.
>
>  -Adrian
>
>
>
>  Tyler Close wrote:
>  > If I have multiple Eclipse projects that should be Joe-E verified and
>  > where some are dependencies of others; how do I set up the new taming
>  > infrastructure so that the Joe-E verifier does not complain about
>  > types in one Joe-E verified project being used in a separate Joe-E
>  > verified project? For example, currently I am getting Joe-E errors for
>  > the web_send project, which depends on the ref_send project of the
>  > Waterken server. How do I make these go away? When the Joe-E verifier
>  > runs on the ref_send project, it spits safej files into
>  > ref_send/taming; as well as dropping a Policy.java at
>  > ref_send/src/org/joe_e/taming/Policy.java. My Joe-E preferences page
>  > points at joe_e/taming where the safej files from the Joe-E
>  > distribution reside. The Joe-E verifier does similarly for the
>  > web_send project, spewing files into the web_send project directory.
>  >
>  > Getting up and running with the new taming infrastructure in the Joe-E
>  > verifier has been a trial for me. This business of generating taming
>  > files for Joe-E verified code seems like a poor design to me.
>  >
>  > --Tyler
>  >
>
>
> _______________________________________________
>  e-lang mailing list
>  [email protected]
>  http://www.eros-os.org/mailman/listinfo/e-lang
>



-- 
Use web-keys for RESTful access-control:
http://waterken.sourceforge.net/

Name your trusted sites to distinguish them from phishing sites.
https://addons.mozilla.org/firefox/957/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.