diff --git a/xsec/dsig/DSIGConstants.hpp b/xsec/dsig/DSIGConstants.hpp
index a9030eb..c6ca82c 100644
--- a/xsec/dsig/DSIGConstants.hpp
+++ b/xsec/dsig/DSIGConstants.hpp
@@ -269,50 +269,6 @@
 
 
 inline
-bool hashMethod2URI(safeBuffer &uri, hashMethod hm) {
-
-	switch (hm) {
-
-	case (HASH_SHA1) :
-
-		uri = URI_ID_SHA1;
-		break;
-
-	case (HASH_MD5) :
-
-		uri = URI_ID_MD5;
-		break;
-
-	case (HASH_SHA224) :
-
-		uri = URI_ID_SHA224;
-		break;
-
-	case (HASH_SHA256) :
-
-		uri = URI_ID_SHA256;
-		break;
-
-	case (HASH_SHA384) :
-
-		uri = URI_ID_SHA384;
-		break;
-
-	case (HASH_SHA512) :
-
-		uri = URI_ID_SHA512;
-		break;
-
-	default:
-		return false;
-
-	}
-
-	return true;
-
-}
-
-inline
 bool maskGenerationFunc2URI(safeBuffer &uri, maskGenerationFunc mgf) {
 
 	switch (mgf) {
diff --git a/xsec/dsig/DSIGReference.cpp b/xsec/dsig/DSIGReference.cpp
index 7678971..a1fb306 100644
--- a/xsec/dsig/DSIGReference.cpp
+++ b/xsec/dsig/DSIGReference.cpp
@@ -311,21 +311,6 @@
 // --------------------------------------------------------------------------------
 
 
-DOMElement *DSIGReference::createBlankReference(const XMLCh * URI, hashMethod hm, char * type) {
-
-	// Deprecated - use the algorithm URI based method instead
-
-	safeBuffer hURI;
-
-	if (hashMethod2URI(hURI, hm) == false) {
-		throw XSECException(XSECException::UnknownSignatureAlgorithm,
-			"DSIGReference::createBlankReference - Hash method unknown");
-	}
-
-	return createBlankReference(URI, hURI.sbStrToXMLCh(), MAKE_UNICODE_STRING(type));
-
-}
-
 DOMElement *DSIGReference::createBlankReference(const XMLCh * URI,
 												const XMLCh * hashAlgorithmURI,
 												const XMLCh * type) {
diff --git a/xsec/dsig/DSIGReference.hpp b/xsec/dsig/DSIGReference.hpp
index b175ff0..bdd8484 100644
--- a/xsec/dsig/DSIGReference.hpp
+++ b/xsec/dsig/DSIGReference.hpp
@@ -149,29 +149,6 @@
 	 *
 	 * @param URI The URI (data source) for this reference.  Set to NULL for
 	 * an anonymous reference.
-	 * @param hm The type of Digest to be used (generally SHA-1)
-	 * @param type A type string (as defined by XML Signature).
-	 * @returns The root Reference element of the newly created DOM structure.
-	 * @deprecated Use the URI based creation method instead
-	 */
-
-	XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * 
-		createBlankReference(const XMLCh * URI, hashMethod hm, char * type);
-
-	/**
-	 * \brief Create a Reference structure in the document.
-	 *
-	 * <p>This function will create a Reference structure in the owner
-	 * document.  In some cases, a call to this function will be sufficient
-	 * to put the required Reference in place.  In other cases, calls will
-	 * also need to be made to the various append*Transform methods.</p>
-	 *
-	 * @note The XSEC Library currently makes very little use of <em>type</em>
-	 * attributes in \<Reference\> Elements.  However this may of use to calling
-	 * applications.
-	 *
-	 * @param URI The URI (data source) for this reference.  Set to NULL for
-	 * an anonymous reference.
 	 * @param hashAlgorithmURI The type of Digest to be used (generally SHA-1)
 	 * @param type A type string (as defined by XML Signature).
 	 * @returns The root Reference element of the newly created DOM structure.
