Changeset de63a31


Ignore:
Timestamp:
Mar 12, 2011 1:59:11 PM (8 years ago)
Author:
Ted Faber <faber@…>
Branches:
abac0-leak, abac0-mei, compt_changes, gec13, master, mei-id, mei-rt0-n, mei_rt0, mei_rt2, mei_rt2_fix_1, meiyap-rt1, meiyap1, rt2, tvf-new-xml
Children:
f6789db
Parents:
a2a1555
Message:

Move keyid to cn translation down into role objects.

Location:
java
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • java/GraphTest.java

    r51c5b54 rde63a31  
    2222 */
    2323public class GraphTest {
    24     /**
    25      * Translate either keys to nicknames or vice versa.  Break the string into
    26      * space separated tokens and then each of them into period separated
    27      * strings.  If any of the smallest strings is in the map, replace it with
    28      * the value.
    29      */
    30     protected static String replace(String is, Map<String, String> m) {
    31         String rv = "";
    32         for (String tok: is.split(" ")) {
    33             String term = "";
    34             for (String s: tok.split("\\.")) {
    35                 String next = m.containsKey(s) ? m.get(s) : s;
    36 
    37                 if (term.isEmpty()) term = next;
    38                 else term += "." + next;
    39             }
    40             if (rv.isEmpty()) rv = term;
    41             else rv += " " + term;
    42         }
    43         return rv;
    44     }
    45 
    4624
    4725    /**
     
    6038     * the credential graph then any alias files into the two maps.
    6139     */
    62     protected static void importDir(File d, CredentialGraph g,
    63             Map<String, String> nick, Map<String, String> keys) {
     40    protected static void importDir(File d, CredentialGraph g) {
    6441        Vector<File> ids = new Vector<File>();
    6542        Vector<File> creds = new Vector<File>();
     
    7552
    7653                Credential.addIdentity(id);
    77                 nick.put(id.getName(), id.getKeyID());
    78                 keys.put(id.getKeyID(),id.getName());
    7954            }
    8055            catch (Exception e) {
     
    10277        TreeMap<String, String> nicknames = new TreeMap<String, String>();
    10378        TreeMap<String, String> keys = new TreeMap<String, String>();
    104         String role = args[args.length-2];
    105         String prin = args[args.length-1];
    10679
    10780        for (int i= 0; i < args.length-2; i++) {
     
    11083            try {
    11184                if (f.isDirectory())
    112                     importDir(f, graph, nicknames, keys);
     85                    importDir(f, graph);
    11386                else if (f.getPath().endsWith(".pem")) {
    11487                    Identity id = new Identity(f);
    11588                    Credential.addIdentity(id);
    116                     nicknames.put(id.getName(), id.getKeyID());
    117                     keys.put(id.getKeyID(),id.getName());
    11889                }
    11990                else if (f.getPath().endsWith(".der"))
     
    12798        }
    12899
    129         // Translate nicknames into key ids.
    130         role = replace(role, nicknames);
    131         prin = replace(prin, nicknames);
    132100        //
    133101        // run the query
    134102        //
    135103
     104        Role role = new Role(args[args.length-2], true);
     105        Role prin = new Role(args[args.length-1], true);
    136106        Query q = graph.querier();
    137         Graph<Role, Credential> ret = q.run(role, prin);
     107        Graph<Role, Credential> ret = q.run(role.toString(), prin.toString());
    138108        String fn = "attr";
    139109        int n = 0;
    140110        String suf = ".der";
    141111        for (Credential c : ret.getEdges()) {
    142             System.out.println(replace(c.toString(), keys));
     112            System.out.println(c.simpleString());
    143113            c.write(fn + n++ + suf);
    144114        }
  • java/net/deterlab/abac/Credential.java

    r9394f1f rde63a31  
    140140    }
    141141
     142    public String simpleString() {
     143        return m_head.simpleString() + " <- " + m_tail.simpleString();
     144    }
     145
    142146    public void write(OutputStream s) throws IOException {
    143147        s.write(m_ac.getEncoded());
     
    148152    }
    149153
    150 
    151154    private Role m_head, m_tail;
    152155
     
    154157    private Identity m_id;
    155158
    156     public static void addIdentity(Identity id) { s_ids.add(id); }
     159    public static void addIdentity(Identity id) {
     160        s_ids.add(id);
     161        if (id.getName() != null && id.getKeyID() != null)
     162            Role.add_mapping(id.getName(), id.getKeyID());
     163    }
    157164    public static Collection<Identity> identities() { return s_ids; }
    158165}
  • java/net/deterlab/abac/CredentialGraph.java

    ra2a1555 rde63a31  
    2424    public CredentialGraph() {
    2525        /* create the graph */
    26         g = Graphs.<Role,Credential>synchronizedDirectedGraph(new DirectedSparseGraph<Role,Credential>());
     26        g = Graphs.<Role,Credential>synchronizedForest(
     27                new DelegateForest(
     28                    new DirectedSparseGraph<Role,Credential>()));
    2729        pq = new Query(g);
    2830    }
  • java/net/deterlab/abac/Role.java

    rbcf7370 rde63a31  
    11package net.deterlab.abac;
     2
     3import java.util.*;
    24
    35/**
     
    1012    private String m_prefix;
    1113    private Role[] m_prereqs;
     14
     15    protected static TreeMap<String, String> nicknames =
     16        new TreeMap<String, String>();
     17    protected static TreeMap<String, String> keys =
     18        new TreeMap<String, String>();
    1219
    1320    /**
     
    4047            m_parts = new String[0];
    4148        }
     49    }
     50
     51    public Role(String s, boolean translate) {
     52        this(translate ? replace(s, nicknames) : s);
    4253    }
    4354
     
    139150    }
    140151
     152    public String simpleString() {
     153        return replace(m_string, keys);
     154    }
     155
    141156    public boolean equals(Object v2) {
    142157        if (v2 instanceof Role)
     
    148163        return m_string.hashCode();
    149164    }
     165
     166    /**
     167     * Translate either keys to nicknames or vice versa.  Break the string into
     168     * space separated tokens and then each of them into period separated
     169     * strings.  If any of the smallest strings is in the map, replace it with
     170     * the value.
     171     */
     172    protected static String replace(String is, Map<String, String> m) {
     173        String rv = "";
     174        for (String tok: is.split(" ")) {
     175            String term = "";
     176            for (String s: tok.split("\\.")) {
     177                String next = m.containsKey(s) ? m.get(s) : s;
     178
     179                if (term.isEmpty()) term = next;
     180                else term += "." + next;
     181            }
     182            if (rv.isEmpty()) rv = term;
     183            else rv += " " + term;
     184        }
     185        return rv;
     186    }
     187    public static void add_mapping(String name, String key) {
     188        nicknames.put(name, key);
     189        keys.put(key,name);
     190    }
     191
    150192}
Note: See TracChangeset for help on using the changeset viewer.