X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fauth-cass%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Fdao%2Fcass%2FCredDAO.java;h=9c57d200f7ccdc98bc43f33e4619e157c011b42f;hb=ff1417ff60baee231a28272f9a16ef2c9c8ea0a2;hp=5bcba9d91d5a05d8048c0acb4b650f73bf6af664;hpb=4b5a7d721d994a49057e9bfb403c7bff1b376660;p=aaf%2Fauthz.git diff --git a/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/CredDAO.java b/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/CredDAO.java index 5bcba9d9..9c57d200 100644 --- a/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/CredDAO.java +++ b/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/CredDAO.java @@ -26,6 +26,7 @@ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; +import java.security.SecureRandom; import java.util.Date; import java.util.List; @@ -55,6 +56,7 @@ public class CredDAO extends CassDAOImpl { public static final int BASIC_AUTH = 1; public static final int BASIC_AUTH_SHA256 = 2; public static final int CERT_SHA256_RSA =200; + public static final SecureRandom srand = new SecureRandom(); private HistoryDAO historyDAO; private CIDAO infoDAO; @@ -78,11 +80,12 @@ public class CredDAO extends CassDAOImpl { public String id; public Integer type; - public Date expires; - public Integer other; - public String ns; - public String notes; - public ByteBuffer cred; // this is a blob in cassandra + public Date expires; + public Integer other; + public String ns; + public String tag; + public String notes; + public ByteBuffer cred; // this is a blob in cassandra @Override @@ -109,9 +112,9 @@ public class CredDAO extends CassDAOImpl { } } - private static class CredLoader extends Loader implements Streamer{ + public static class CredLoader extends Loader implements Streamer{ public static final int MAGIC=153323443; - public static final int VERSION=1; + public static final int VERSION=2; public static final int BUFF_SIZE=48; // Note: public static final CredLoader deflt = new CredLoader(KEYLIMIT); @@ -126,14 +129,15 @@ public class CredDAO extends CassDAOImpl { data.expires = row.getTimestamp(2); data.other = row.getInt(3); data.ns = row.getString(4); - data.notes = row.getString(5); - data.cred = row.getBytesUnsafe(6); + data.tag = row.getString(5); + data.notes = row.getString(6); + data.cred = row.getBytesUnsafe(7); return data; } @Override protected void key(Data data, int _idx, Object[] obj) { - int idx = _idx; + int idx = _idx; obj[idx] = data.id; obj[++idx] = data.type; @@ -145,6 +149,7 @@ public class CredDAO extends CassDAOImpl { int i; obj[i=idx] = data.other; obj[++i] = data.ns; + obj[++i] = data.tag; obj[++i] = data.notes; obj[++i] = data.cred; } @@ -157,8 +162,9 @@ public class CredDAO extends CassDAOImpl { os.writeLong(data.expires==null?-1:data.expires.getTime()); os.writeInt(data.other==null?0:data.other); writeString(os, data.ns); + writeString(os, data.tag); writeString(os, data.notes); - if(data.cred==null) { + if (data.cred==null) { os.writeInt(-1); } else { int l = data.cred.limit()-data.cred.position(); @@ -179,14 +185,15 @@ public class CredDAO extends CassDAOImpl { data.expires = l<0?null:new Date(l); data.other = is.readInt(); data.ns = readString(is,buff); + data.tag = readString(is,buff); data.notes = readString(is,buff); int i = is.readInt(); data.cred=null; - if(i>=0) { + if (i>=0) { byte[] bytes = new byte[i]; // a bit dangerous, but lessened because of all the previous sized data reads int read = is.read(bytes); - if(read>0) { + if (read>0) { data.cred = ByteBuffer.wrap(bytes); } } @@ -195,10 +202,10 @@ public class CredDAO extends CassDAOImpl { private void init(AuthzTrans trans) throws APIException, IOException { // Set up sub-DAOs - if(historyDAO==null) { + if (historyDAO==null) { historyDAO = new HistoryDAO(trans,this); } - if(infoDAO==null) { + if (infoDAO==null) { infoDAO = new CacheInfoDAO(trans,this); } @@ -212,7 +219,19 @@ public class CredDAO extends CassDAOImpl { " WHERE id = ?", CredLoader.deflt,readConsistency); } - public Result> readNS(AuthzTrans trans, String ns) { + /* (non-Javadoc) + * @see org.onap.aaf.auth.dao.CassDAOImpl#create(org.onap.aaf.misc.env.TransStore, java.lang.Object) + */ + @Override + public Result create(AuthzTrans trans, Data data) { + if(data.tag == null) { + long l = srand.nextLong(); + data.tag = Long.toHexString(l); + } + return super.create(trans, data); + } + + public Result> readNS(AuthzTrans trans, String ns) { return psNS.read(trans, R_TEXT, new Object[]{ns}); } @@ -241,7 +260,7 @@ public class CredDAO extends CassDAOImpl { ? String.format("%s by %s", override[0], hd.user) : (modified.name() + "d credential for " + data.id); // Detail? - if(modified==CRUD.delete) { + if (modified==CRUD.delete) { try { hd.reconstruct = data.bytify(); } catch (IOException e) { @@ -249,10 +268,10 @@ public class CredDAO extends CassDAOImpl { } } - if(historyDAO.create(trans, hd).status!=Status.OK) { + if (historyDAO.create(trans, hd).status!=Status.OK) { trans.error().log("Cannot log to History"); } - if(infoDAO.touch(trans, TABLE,data.invalidate(cache)).status!=Status.OK) { + if (infoDAO.touch(trans, TABLE,data.invalidate(cache)).status!=Status.OK) { trans.error().log("Cannot touch Cred"); } }