Index: doc/ABAC.hh
===================================================================
--- doc/ABAC.hh	(revision 34565bf6a5435c60ae05cf7f2dec8ad64cdea878)
+++ doc/ABAC.hh	(revision 28d6d08c1a4b46545f54d859376ce89129587aa5)
@@ -7,6 +7,4 @@
 #include <vector>
 
-/* This file is generated from doc/ABAC.hh by doc/extract_doc.c */
-
 namespace ABAC {
     extern "C" {
@@ -19,43 +17,10 @@
     class Credential;
 
-/***
-ABAC::Context
-    An ABAC Context
-***/
     class Context {
         public:
-/***
-f  Context()
-     default constructor
-     (C:abac_context_new)
-f  Context(const Context &)
-     copy constructor, used for cloning the context
-     (C:abac_context_dup)
-f  ~Context()
-     default destructor
-     (C:abac_context_free)
-***/
             Context() { m_ctx = abac_context_new(); }
             Context(const Context &context) { m_ctx = abac_context_dup(context.m_ctx); }
             ~Context() { abac_context_free(m_ctx); }
 
-/***
-f  int load_id_file(char *)
-     load identity certificate from an id file
-     (C:abac_context_load_id_file)
-f  int load_id_chunk(abac_chunk_t)
-     load id certificate from an chunk
-     (C:abac_context_load_id_chunk)
-f  int load_attribute_file(char *)
-     load attribute certificate from an id file. 
-     (C:abac_context_load_attribute_file)
-f  int load_attribute_chunk(abac_chunk_t)
-     load attribute certificate from an chunk
-     (C:abac_context_load_attribute_chunk)
-f  returns : 
-        ABAC_CERT_SUCCESS   successfully loaded
-        ABAC_CERT_INVALID   invalid certificate (or file not found)
-        ABAC_CERT_BAD_SIG   invalid signature
-***/
             int load_id_file(char *filename) { return abac_context_load_id_file(m_ctx, filename); }
             int load_id_chunk(abac_chunk_t cert) { return abac_context_load_id_chunk(m_ctx, cert); }
@@ -63,24 +28,6 @@
             int load_attribute_chunk(abac_chunk_t cert) { return abac_context_load_attribute_chunk(m_ctx, cert); }
 
-/***
-f  void load_directory(char *)
-     load a directory full of certificates:
-f       first: ${path}/*_ID.{der,pem} as identity certificates
-               implicitly looking for ${path}/*_private.{der,pem} as
-               the private key file
-        last: ${path}/*_attr.xml as attribute certificates
-      (C:abac_context_load_directory)
-***/
             void load_directory(char *path) { abac_context_load_directory(m_ctx, path); }
 
-/***
-f  std::vector<Credential> query(char *, char *, bool &)
-     run the query:
-        role <-?- principal
-     returns true/false in success
-     returns a proof upon success, partial proof on failure
-     (C:abac_context_query)
-     (C::abac_free_credentials_free)
-***/
 
             /* abac query, returns a vector of credentials on success, NULL on fail */
@@ -99,10 +46,4 @@
                 return credentials;
             }
-/***
-f  std::vector<Credential> credentials(bool &)
-     returns a vector of all the credentials loaded in the context
-     (C:abac_context_credentials)
-     (C::abac_context_credentials_free)
-***/
             std::vector<Credential> credentials() {
                 abac_credential_t **creds, **end;
@@ -119,10 +60,4 @@
                 return credentials;
             }
-/***
-f  void set_nickname(char *key, char *nick)
-     Set the nickname (value printed) for keyid.  The substitution is made 
-     in Role::short_string(Context) and when bake(Context) is called on a new
-     attribute.
-***/
 	void set_nickname(char *key, char *nick) {
 	    abac_context_set_nickname(m_ctx, key, nick);
@@ -134,26 +69,6 @@
     };
 
-/***
-ABAC::Role
-   A Role, most calls are rarely used outside the library 
-***/
     class Role {
         public:
-/***
-f  Role()
-     default constructor, do not use, for swig only
-f  Role(abac_role_t*)
-     copy constructor, used for cloning an Role
-     (C:abac_role_dup)
-f  Role(char *)
-     instantiate a role from a string
-     (C:abac_role_from_string)
-f  Role(const Role &)
-     copy constructor, used for cloning an Role
-     (C:abac_role_dup)
-f  ~Role()
-     default destructor
-     (C:abac_role_free)
-***/
             Role() : m_role(NULL) { } // do not use: here for swig
             Role(abac_role_t *role) { m_role = abac_role_dup(role); }
@@ -161,43 +76,12 @@
             Role(const Role &role) { m_role = abac_role_dup(role.m_role); }
             ~Role() { abac_role_free(m_role); }
-/***
-f  bool is_principal()
-     (C:abac_role_is_principal)
-f  bool is_role()
-     (C:abac_role_is_role)
-f  bool is_linking()
-     (C:abac_role_is_linking)
-     indicates the type of role encoded
-***/
             bool is_principal() const { return abac_role_is_principal(m_role); }
             bool is_role() const { return abac_role_is_role(m_role); }
             bool is_linking() const { return abac_role_is_linking(m_role); }
 
-/***
-f  char* string()
-     string representation of the role
-     (C:abac_role_string)
-***/
             char *string() const { return abac_role_string(m_role); }
-/***
-f  char* short_string()
-     string representation of the role
-     (C:abac_role_string)
-***/
             char *short_string(Context& c) const { 
 		return abac_role_short_string(m_role, c.m_ctx);
 	    }
-/***
-f  char* linked_role()
-     the linked role of a linking role
-     i.e., A.r1.r2, linked_role() returns A.r1
-     (C:abac_role_linked_role)
-f  char* role_name()
-     the role name of any role (the part after the last dot)
-     (C:abac_role_role_name)
-f  char* principal()
-     the principal part of any role
-     (C:abac_role_principal)
-***/
             char *linked_role() const { return abac_role_linked_role(m_role); }
             char *role_name() const { return abac_role_role_name(m_role); }
@@ -208,29 +92,6 @@
     };
 
-/***
-ABAC::Credential
-   This is never instantiated directly. These will only ever be
-   returned as a result of calls to Context::query or
-   Context::credentials.
-***/
     class Credential {
         public:
-/***
-f  Credential()
-     default constructor, do not use, for swig only
-f  Credential(abac_credential_t*)
-     copy constructor, used for cloning a credential
-     (C:abac_credential_head)
-     (C:abac_credential_tail)
-     (C:abac_credential_dup)
-f  Credential(const Credential&)
-     copy constructor, used for cloning a credential
-     (C:abac_credential_head)
-     (C:abac_credential_tail)
-     (C:abac_credential_dup)
-f  ~Credential()
-     default destructor
-     (C:abac_credential_free)
-***/
             Credential() : m_cred(NULL) { } // do not use: here for swig
             Credential(abac_credential_t *cred) :
@@ -245,22 +106,6 @@
                     { }
             ~Credential() { abac_credential_free(m_cred); }
-/***
-f  Role &head()
-     returns the head of the credential
-f  Role &tail()
-     returns the tail of the credential
-***/
             const Role &head() { return m_head; }
             const Role &tail() { return m_tail; }
-/***
-f  abac_chunk_t attribute_cert()
-     returns the attribute certificate in chunk, suitable for
-     transmission over the network or storage in a file
-     (C:abac_credential_attribute_cert)
-f  abac_chunk_t issuer_cert()
-     returns the issuer certificate in chunk, again suitable for
-     network transmission or file storage
-     (C:abac_credential_issuer_cert)
-***/
             abac_chunk_t attribute_cert() { return abac_credential_attribute_cert(m_cred); }
             abac_chunk_t issuer_cert() { return abac_credential_issuer_cert(m_cred); }
@@ -272,32 +117,10 @@
 
 
-/***
-ABAC::ID
-   An ID holds a principal credential. It maybe imported from an existing
-   ID credential via external files, constructed from a streaming chunk,
-   or instantiated on the fly
-***/
     class ID {
         public:
-/***
-f  ID()
-     default constructor, do not use, for swig only
-f  ID(const ID &)
-     copy constructor, used for cloning an ID
-     (C:abac_id_dup)
-f  ~ID()
-     default destructor
-     (C:abac_id_free)
-***/
             ID() : m_id(NULL) { } // do not use: required by swig
             ID(const ID &id) { m_id = abac_id_dup(id.m_id); }
             ~ID() { abac_id_free(m_id); }
 
-/***
-f  ID(char *)
-     load an ID certificate from a file, will throw an exception
-     if the certificate cannot be loaded
-     (C:abac_id_from_file)
-***/
             ID(char *filename) : m_id(NULL) {
                 m_id = abac_id_from_file(filename);
@@ -306,10 +129,4 @@
             }
 
-/***
-f  ID_chunk(abac_chunk_t chunk)
-     create an ID certificate from an certificate chunk, will
-     throw an exception if the certificate cannot be loaded
-     (C:abac_id_from_chunk)
-***/
             ID(abac_chunk_t chunk) : m_id(NULL) {
                 m_id = abac_id_from_chunk(chunk);
@@ -317,12 +134,4 @@
                     throw std::invalid_argument("Could not load ID certificate with a chunk");
             }
-/***
-f  ID(char *,int)
-     generates a new ID(cert&key) with the supplied CN and validity period
-     - CN must be alphanumeric and begin with a letter
-     - validity must be at least one second
-     will throw an exception if either of the above is violated
-     (C:abac_id_generate)
-***/
             ID(char *cn, int validity) : m_id(NULL) {
                 int ret = abac_id_generate(&m_id, cn, validity);
@@ -332,17 +141,4 @@
                     throw std::invalid_argument("Validity must be > 0 days");
             }
-/***
-f  void load_privkey(char *)
-     loads the private key associated with the ID credential,
-     will throw an exception if the key cannot be loaded
-     (C:abac_id_privkey_from_file)
-f  void load_privkey_chunk(abac_chunk_t)
-     loads the private key associated with the ID credential,
-     will throw an exception if the key cannot be loaded
-     (C:abac_id_privkey_from_chunk)
-f  int has_privkey()
-     check to see if there is a privkey in this ID
-     (C:abac_id_has_privkey)
-***/
             void load_privkey(char *filename) {
                 int ret = abac_id_privkey_from_file(m_id, filename);
@@ -359,27 +155,6 @@
                 return ret;
             }
-/***
-f  char *keyid()
-     returns the SHA1 keyid of the id cert
-     (C:abac_id_keyid)
-f  char *cert_filename()
-     returns the default libabac filename for the cert. 
-     value must be freed by caller.
-     (C:abac_id_cert_filename)
-***/
             char *keyid() { return abac_id_keyid(m_id); }
             char *cert_filename() { return abac_id_cert_filename(m_id); }
-/***
-f  void write_cert(FILE *)
-     writes a PEM-encoded certificate to a file handle
-     (C:abac_id_write_cert)
-f  void write_cert(string &)
-     writes a PEM-encoded certificate to a file named in string
-f  void write_cert_file(const char *)
-     writes a PEM-encoded certificate to a file
-f  void write_cert_name(const char *)
-     writes a PEM-encoded certificate to a file
-     (added to support original libcreddy users)
-***/
             void write_cert(FILE *out) { abac_id_write_cert(m_id, out); }
             void write_cert(const std::string &name) {
@@ -398,24 +173,5 @@
                 fprintf(stderr,"ABAC::ID::write_cert_name is deprecated, please use ABAC::ID::write_cert_name\n");
             }
-/***
-f  char *privkey_filename()
-     returns the default libabac filename for the private key. 
-     value must be freed by caller.
-     (C:abac_id_privkey_filename)
-***/
             char *privkey_filename() { return abac_id_privkey_filename(m_id); }
-/***
-f  void write_privkey(FILE *)
-     write the private key to a file handle
-     throws a std::logic_error if no private key is loaded
-     (C:abac_id_write_privkey)
-f  void write_privkey(string &)
-     writes a private key to file named in string
-f  void write_privkey_file(const char *)
-     writes a private key to a file
-f  void write_privkey_name(const char *)
-     writes a private key to a file
-     (added to support original libcreddy users)
-***/
             void write_privkey(FILE *out) {
                 int ret = abac_id_write_privkey(m_id, out);
@@ -437,15 +193,4 @@
                 fprintf(stderr,"ABAC::ID::write_privkey_name is deprecated, please use ABAC::ID::write_privkey_file\n");
             }
-/***
-f  abac_chunk_t cert_chunk()
-     returns a DER-encoded binary representation of the X.509 ID cert
-     associated with this ID.
-     can be passed to libabac's Context::load_id_chunk()
-     (C:abac_id_cert_chunk)
-f  abac_chunk_t privkey_chunk()
-     returns a PEM-encoded binary representation of the private key
-     associated with this ID.
-     (C:abac_id_privkey_chunk)
-***/
             abac_chunk_t cert_chunk() { return abac_id_cert_chunk(m_id); }
             abac_chunk_t privkey_chunk() { return abac_id_privkey_chunk(m_id); }
@@ -457,38 +202,9 @@
     };
 
-/***
-ABAC::Attribute
-   This is the attribute representation for the access policy rule
-       LHS <- RHS
-   The sequence of generation is to
-       first, instantiate the object, ie, LHS (head)
-       second, adding subject(s) to it, ie, RHS (tail)
-       and then baking it.
-   Only once it's baked can you access the X.509 cert.
-   Once it's been baked you can no longer add subjects to it
-***/
     class Attribute {
         public:
-/***
-f  Attribute()
-     default constructor, do not use, for swig only
-f  ~Attribute()
-     default destructor
-     (C:abac_attribute_free)
-***/
             Attribute() : m_attr(NULL) { } // do not use: required by swig
             ~Attribute() { abac_attribute_free(m_attr); }
 
-/***
-f  Attribute(ID&, char*,int)
-     constructor that creates an attribute policy to be signed by the issuer
-     with the given role with a specified validity period
-     An exception will be thrown if:
-       - the issuer has no private key
-       - the Head role is invalid
-       - the validity period is invalid (must be >= 0 second)
-       - The issuer is invalid
-     (C:abac_attribute_create)
-***/
             Attribute(ID &issuer, char *role, int validity) : m_attr(NULL) {
                 int ret = abac_attribute_create(&m_attr, issuer.m_id, role, validity);
@@ -504,21 +220,4 @@
 
 
-/***
-f  bool principal(char *keyid) 
-     {keyid}
-     validate the principal and insert into the attribute
-     throw a std::logic_error if the cert's been baked and keyid bad
-     (C:abac_attribute_principal)
-f bool role(char *keyid, char *role)
-     {keyid.role}
-     validate the principal and role and insert into the attribute
-     throw a std::logic_error if the cert's been baked and keyid bad
-     (C:abac_attribute_role)
-f bool linking_role(char *keyid, char *role, char *linked)
-     {keyid.linked.role}
-     validate the role and linking role and insert into the attribute
-     throw a std::logic_error if the cert's been baked and keyid bad
-     (C:abac_attribute_linking_role)
-***/
             bool principal(char *keyid) {
                 if (baked()) throw std::logic_error("Cert is already baked");
@@ -533,11 +232,4 @@
                 return abac_attribute_linking_role(m_attr, keyid, role, linked);
             }
-/***
-f  bool bake()
-     Generate the cert. Call this after you've added subjects to your cert.
-     This returns false if there are no subjects
-     This will throw an exception if the cert's already been baked.
-     (C:abac_attribute_bake)
-***/
             bool bake() {
                 if (baked()) throw std::logic_error("Cert is already baked");
@@ -545,13 +237,4 @@
             }
 
-/***
-f  bool bake(Context c)
-     Generate the cert. Call this after you've added subjects to your cert.
-     This returns false if there are no subjects
-     This will throw an exception if the cert's already been baked.
-     This version annotated the baked credential with any mnemonic names in the
-     context.
-     (C:abac_attribute_bake)
-***/
             bool bake(Context& c) {
                 if (baked()) throw std::logic_error("Cert is already baked");
@@ -559,42 +242,14 @@
             }
 
-/***
-f  bool baked()
-     returns true iff the certificate has been baked.
-     (C:abac_attribute_baked)
-***/
             bool baked() { return abac_attribute_baked(m_attr); }
 
-/***
-f  set_output_format(char *fmt)
-     {fmt}
-     Set the attribute's output format.  Valid choices are GENIv1.0 and
-     GENIV1.1.  Default is GENIv1.1.
-***/
 	    void set_output_format(char *fmt) {
 		abac_attribute_set_output_format(m_attr, fmt);
 	    }
 
-/***
-f  get_output_format(char *fmt)
-     Get the attribute's output format.  Do not delete the string/
-***/
 	    char *get_output_format() {
 		return abac_attribute_get_output_format(m_attr);
 	    }
 
-/***
-f  void write(FILE *)
-     write an attribute certificate in XML to an open file handle
-     Throws an exception if the certificate isn't baked
-     (C:abac_attribute_write)
-f  void write(const string&)
-     write an attribute certificate in XML to file named in string
-f  void write_file(const char *)
-     write an attribute certificate in XML to file
-f  void write_name(const char *)
-     write an attribute certificate in XML to file
-     (added to support original libcreddy users)
-***/
             void write(FILE *out) {
                 int ret = abac_attribute_write(m_attr, out);
@@ -616,11 +271,4 @@
                 fprintf(stderr,"ABAC::Attribute::write_name is deprecated, please use ABAC::Attribute::write_name\n");
             }
-/***
-f  abac_chunk_t cert_chunk()
-     returns a XML structure of the attribute certificate in a abac_chunk_t
-     Throws an exception if the certificate isn't baked
-     the chunk can be passed to libabac's Context::load_attribute_chunk()
-     (C:abac_attribute_cert_chunk)
-***/
             abac_chunk_t cert_chunk() {
                 abac_chunk_t ret=abac_attribute_cert_chunk(m_attr);
Index: doc/API
===================================================================
--- doc/API	(revision 34565bf6a5435c60ae05cf7f2dec8ad64cdea878)
+++ doc/API	(revision 28d6d08c1a4b46545f54d859376ce89129587aa5)
@@ -71,4 +71,5 @@
      in Role::short_string(Context) and when bake(Context) is called on a new
      attribute.
+     (C:abac_context_set__short_string)
 
 ABAC::Role
@@ -110,5 +111,5 @@
    char* short_string()
      string representation of the role
-     (C:abac_role_string)
+     (C:abac_role_short_string)
 
    char* linked_role()
Index: doc/ChangeLog
===================================================================
--- doc/ChangeLog	(revision 34565bf6a5435c60ae05cf7f2dec8ad64cdea878)
+++ doc/ChangeLog	(revision 28d6d08c1a4b46545f54d859376ce89129587aa5)
@@ -1,16 +1,29 @@
 = 0.1.5 =
 
-    2013-XX-YY
+    2013-07-YY
+        * Support for human readable strings in credential printing. 
+          User can associate nicknames with principals and selectively
+          have the mnemonic names used instead of the SHA1 hash of
+          principl when outputting
+        * New attribute credential format output, supports
+          version 1.1 of GENI credential format
+        * Accepts version 1.0 & 1.1  GENI credential formats in addition
+          to original ABAC RT0 and GENI privilege attribute formats
+        * Simplified input of self-contained credentials. For a 
+          self-contained credential like GNEI credential, there is no
+          need for an explicit loading of issuer ID anymore and the
+          issuer credential is automatically loaded into context if 
+          needed
         * Replaced the restrictive abac_context_load_directory search
-          into any regular files in the keystore location is checked.
-          Attempts to extract credentials follow the order,
-          try for principal credential, if found, check for private key,
-          or else try to retrieve as attribute credential
+          into: any regular files in the keystore location is checked.
+          Attempt to extract credentials follows this order,
+          first, try extraction as principal credential, if found, 
+          check for private key, or else try to retrieve as attribute
+          credential
         * Moved hashed principal credentials from global scope to
           context based list of principal credentials
-        * Added issuer credential insertion (if needed) during 
-          read_credential() call while processing attribute 
-          credential
-        * examples are renamed into tests
+        * examples are renamed into tests and reorganized under
+          libabac's autoconf/automake setup and more information is 
+          generated when run
 
 = 0.1.4 =
Index: doc/extract_doc.c
===================================================================
--- doc/extract_doc.c	(revision 34565bf6a5435c60ae05cf7f2dec8ad64cdea878)
+++ doc/extract_doc.c	(revision 28d6d08c1a4b46545f54d859376ce89129587aa5)
@@ -2,7 +2,6 @@
    extract_doc.c,
 
-   This program extracts API doc from ABAC.hh and
-      generates header file abac.hh for libabac and API
-   This program assume ABAC.hh is local
+   This program extracts API doc from abac.hh 
+   This program assume abac.hh is local
   
 rules:
@@ -99,7 +98,7 @@
 {
    char *selfname="extract_doc.c";
-   char *filename="ABAC.hh";
+   char *filename="abac.hh";
    char *docname="API";
-   char *codename="abac.hh";
+   char *codename="ABAC.hh";
 
    FILE *dfp=fopen(selfname,"r");
@@ -116,5 +115,4 @@
        fclose(cfp);
    }
-   fprintf(stdout,"\nRemember to move abac.hh to libabac \n");
    return 0;
 }
