summaryrefslogtreecommitdiffstats
path: root/pki/base/common/src/com/netscape/certsrv/dbs/keydb
diff options
context:
space:
mode:
authorEndi Sukma Dewata <edewata@redhat.com>2012-02-28 00:05:53 -0600
committerEndi Sukma Dewata <edewata@redhat.com>2012-03-05 14:28:39 -0600
commit2956ea8a9003d637a3e161621eb97f7be779d94c (patch)
treee327fef6639edd513f6b9250d955d250ba1a74b5 /pki/base/common/src/com/netscape/certsrv/dbs/keydb
parentea1bbcfb01ca2a1b4d6f0ac83ba7662c0a576a05 (diff)
downloadpki-2956ea8a9003d637a3e161621eb97f7be779d94c.tar.gz
pki-2956ea8a9003d637a3e161621eb97f7be779d94c.tar.xz
pki-2956ea8a9003d637a3e161621eb97f7be779d94c.zip
Fixed DRM REST interface to use BigInteger.
The DRM REST interface previously uses strings for key ID and request ID. It has been modified to use KeyId and RequestId classes which can accept decimal or hex numbers and internally store it as BigInteger. Ticket #94
Diffstat (limited to 'pki/base/common/src/com/netscape/certsrv/dbs/keydb')
-rw-r--r--pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyId.java122
-rw-r--r--pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyIdAdapter.java37
2 files changed, 159 insertions, 0 deletions
diff --git a/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyId.java b/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyId.java
new file mode 100644
index 000000000..f998bf97a
--- /dev/null
+++ b/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyId.java
@@ -0,0 +1,122 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.certsrv.dbs.keydb;
+
+import java.math.BigInteger;
+
+/**
+ * The KeyId class represents the identifier for a particular
+ * key record. This identifier may be used to retrieve the key record
+ * from the database.
+ * <p>
+ *
+ * @author Endi S. Dewata
+ * @version $Revision$ $Date$
+ */
+public class KeyId {
+
+ protected BigInteger value;
+
+ /**
+ * Creates a new KeyId from its string representation.
+ * <p>
+ *
+ * @param id
+ * a string containing the decimal or hex value for the identifier.
+ */
+ public KeyId(String id) {
+ if (id != null) {
+ id = id.trim();
+ if (id.startsWith("0x")) { // hex
+ value = new BigInteger(id.substring(2), 16);
+ } else { // decimal
+ value = new BigInteger(id);
+ }
+ }
+ }
+
+ /**
+ * Creates a new KeyId from its BigInteger representation.
+ * <p>
+ *
+ * @param id
+ * a BigInteger containing the identifier.
+ */
+ public KeyId(BigInteger id) {
+ value = id;
+ }
+
+ /**
+ * Creates a new KeyId from its integer representation.
+ * <p>
+ *
+ * @param id
+ * an integer containing the identifier.
+ */
+ public KeyId(int id) {
+ value = BigInteger.valueOf(id);
+ }
+
+ /**
+ * Converts the KeyId into its BigInteger representation.
+ * <p>
+ *
+ * @return
+ * a BigInteger containing the identifier.
+ */
+ public BigInteger toBigInteger() {
+ return value;
+ }
+
+ /**
+ * Converts the KeyId into its string representation. The string
+ * form can be stored in a database (such as the LDAP directory)
+ * <p>
+ *
+ * @return
+ * a string containing the decimal (base 10) value for the identifier.
+ */
+ public String toString() {
+ return value.toString();
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((value == null) ? 0 : value.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ KeyId other = (KeyId) obj;
+ if (value == null) {
+ if (other.value != null)
+ return false;
+ } else if (!value.equals(other.value))
+ return false;
+ return true;
+ }
+}
diff --git a/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyIdAdapter.java b/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyIdAdapter.java
new file mode 100644
index 000000000..3232999fd
--- /dev/null
+++ b/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyIdAdapter.java
@@ -0,0 +1,37 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.certsrv.dbs.keydb;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+/**
+ * The KeyIdAdapter class provides custom marshaling for KeyId.
+ *
+ * @author Endi S. Dewata
+ * @version $Revision$ $Date$
+ */
+public class KeyIdAdapter extends XmlAdapter<String, KeyId> {
+
+ public KeyId unmarshal(String value) throws Exception {
+ return new KeyId(value);
+ }
+
+ public String marshal(KeyId value) throws Exception {
+ return value.toString();
+ }
+}