Index: lib/web.xml.tomcat5
===================================================================
--- lib/web.xml.tomcat5	(revision 5643)
+++ lib/web.xml.tomcat5	(revision 5644)
@@ -389,6 +389,11 @@
         <servlet-name>RestServlet</servlet-name>
         <url-pattern>/log/*</url-pattern>
     </servlet-mapping>
+    
+    <servlet-mapping>
+        <servlet-name>RestServlet</servlet-name>
+        <url-pattern>/checksum/*</url-pattern>
+    </servlet-mapping>
 
 
  <!-- uncomment this if you want the admin servlet -->
Index: src/edu/ucsb/nceas/metacat/restservice/ResourceHandler.java
===================================================================
--- src/edu/ucsb/nceas/metacat/restservice/ResourceHandler.java	(revision 5643)
+++ src/edu/ucsb/nceas/metacat/restservice/ResourceHandler.java	(revision 5644)
@@ -203,6 +203,7 @@
     private static final String RESOURCE_SESSION = "session";
     private static final String RESOURCE_IDENTIFIER = "identifier";
     private static final String RESOURCE_LOG = "log";
+    private static final String RESOURCE_CHECKSUM = "checksum";
 
     /*
      * API Functions used as URL parameters
@@ -380,8 +381,73 @@
             			status = true;
             		}
 
+            	} else if(resource.equals(RESOURCE_CHECKSUM)) {
+            	    //handle checksum requests
+            	    System.out.println("Handling getChecksum request");
+            	    if(httpVerb == GET)
+            	    {
+            	        String guid = null;
+            	        String checksumAlgorithm = "MD5";
+            	    
+            	        try
+            	        {
+            	           guid = params.get("id")[0];
+            	        }
+            	        catch(Exception e)
+            	        {
+            	            throw new InvalidRequest("1402", "Incorrect parameters passed to getChecksum");
+            	        }
+            	        
+            	        Identifier guidid = new Identifier();
+            	        guidid.setValue(guid);
+            	        AuthToken token = new AuthToken(sessionId);
+            	        try
+            	        {
+            	            checksumAlgorithm = params.get("checksumAlgorithm")[0];
+            	        }
+            	        catch(Exception e)
+            	        {
+            	            //do nothing.  default to MD5
+            	        }
+            	        System.out.println("getting checksum for object " + guid +
+            	                " with algorithm " + checksumAlgorithm);
+            	        try
+            	        {
+            	            Checksum c = CrudService.getInstance().getChecksum(token, guidid, checksumAlgorithm);
+            	            System.out.println("got checksum " + c.getValue());
+            	            response.setStatus(200);
+            	            System.out.println("serializing response");
+            	            serializeServiceType(Checksum.class, c, response.getOutputStream());
+            	            System.out.println("done serializing response.");
+            	        }
+            	        catch(NotAuthorized na)
+            	        {
+            	            na.setDetail_code("1400");
+            	            serializeException(na, response.getOutputStream());
+            	        }
+            	        catch(NotFound nf)
+            	        {
+            	            nf.setDetail_code("1420");
+            	            serializeException(nf, response.getOutputStream());
+            	        }
+            	        catch(InvalidRequest ir)
+            	        {
+            	            ir.setDetail_code("1402");
+            	            serializeException(ir, response.getOutputStream());
+            	        }
+            	        catch(ServiceFailure sf)
+            	        {
+            	            sf.setDetail_code("1410");
+            	            serializeException(sf, response.getOutputStream());
+            	        }
+            	        catch(InvalidToken it)
+            	        {
+            	            it.setDetail_code("1430");
+            	            serializeException(it, response.getOutputStream());
+            	        }
+            	    }
             	}
-
+            	    
             	if (!status)
             	{
             	    response.setStatus(400);
Index: src/edu/ucsb/nceas/metacat/dataone/CrudService.java
===================================================================
--- src/edu/ucsb/nceas/metacat/dataone/CrudService.java	(revision 5643)
+++ src/edu/ucsb/nceas/metacat/dataone/CrudService.java	(revision 5644)
@@ -1019,6 +1019,10 @@
             NotAuthorized, NotFound, InvalidRequest, NotImplemented 
     {
         logCrud.info("getChecksum");
+        if(checksumAlgorithm == null)
+        {
+            checksumAlgorithm = "MD5";
+        }
         InputStream docStream = get(token, guid);
         String checksum;
         try
