diff --git a/test/sign.c b/test/sign.c
index 1ed188d..af46825 100644
--- a/test/sign.c
+++ b/test/sign.c
@@ -27,6 +27,7 @@
 	int iSigner;
 	bool fFail = false;
 	bool fFailBody = false;
+	bool fNoSupportAlg = false;
 
 	pFail = cn_cbor_mapget_string(pControl, "fail");
 	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
@@ -68,12 +69,21 @@
 			continue;
 		}
 
+		cn_cbor * alg = COSE_Signer_map_get_int(hSigner, COSE_Header_Algorithm, COSE_BOTH, 0);
+		if (!IsAlgorithmSupported(alg)) fNoSupportAlg = true;
+
 		pFail = cn_cbor_mapget_string(pSigners, "fail");
 		if (COSE_Sign_validate(hSig, hSigner, NULL)) {
-			if ((pFail != NULL) && (pFail->type != CN_CBOR_TRUE)) fFail = true;
+			if (fNoSupportAlg) {
+				fFail = true;
+			}
+			else if ((pFail != NULL) && (pFail->type != CN_CBOR_TRUE)) fFail = true;
 		}
 		else {
-			if ((pFail == NULL) || (pFail->type == CN_CBOR_FALSE)) fFail = true;
+			if (fNoSupportAlg) {
+				;
+			}
+			else if ((pFail == NULL) || (pFail->type == CN_CBOR_FALSE)) fFail = true;
 		}
 
 		COSE_Sign_Free(hSig);
@@ -86,7 +96,7 @@
 	}
 
 	if (fFail) CFails += 1;
-	return 0;
+	return fNoSupportAlg ? 0 : 1;
 
 returnError:
 	CFails += 1;
@@ -246,6 +256,7 @@
 	int type;
 	bool fFail = false;
 	bool fFailBody = false;
+	bool fNoAlgSupport = false;
 
 	pFail = cn_cbor_mapget_string(pControl, "fail");
 	if ((pFail != NULL) && (pFail->type == CN_CBOR_TRUE)) {
@@ -269,13 +280,21 @@
 		goto exitHere;
 	}
 
+	cn_cbor * alg = COSE_Sign0_map_get_int(hSig, COSE_Header_Algorithm, COSE_BOTH, NULL);
+	if (!IsAlgorithmSupported(alg)) fNoAlgSupport = true;
 
 	pFail = cn_cbor_mapget_string(pInput, "fail");
 	if (COSE_Sign0_validate(hSig, pkey, NULL)) {
-		if ((pFail != NULL) && (pFail->type != CN_CBOR_TRUE)) fFail = true;
+		if (fNoAlgSupport) {
+			fFail = true;
+		}
+		else if ((pFail != NULL) && (pFail->type != CN_CBOR_TRUE)) fFail = true;
 	}
 	else {
-		if ((pFail == NULL) || (pFail->type == CN_CBOR_FALSE)) fFail = true;
+		if (fNoAlgSupport) {
+			;
+		}
+		else if ((pFail == NULL) || (pFail->type == CN_CBOR_FALSE)) fFail = true;
 	}
 
 	COSE_Sign0_Free(hSig);
@@ -288,7 +307,7 @@
 exitHere:
 
 	if (fFail) CFails += 1;
-	return 0;
+	return fNoAlgSupport ? 0 : 1;
 
 returnError:
 	CFails += 1;
diff --git a/test/test.c b/test/test.c
index 803d7e2..15e2d04 100644
--- a/test/test.c
+++ b/test/test.c
@@ -777,12 +777,14 @@
 		}
 	}
 	else if (cn_cbor_mapget_string(pInput, "sign") != NULL) {
-		ValidateSigned(pControl);
-		BuildSignedMessage(pControl);
+		if (ValidateSigned(pControl)) {
+			BuildSignedMessage(pControl);
+		}
 	}
 	else if (cn_cbor_mapget_string(pInput, "sign0") != NULL) {
-		ValidateSign0(pControl);
-		BuildSign0Message(pControl);
+		if (ValidateSign0(pControl)) {
+			BuildSign0Message(pControl);
+		}
 	}
 	else if (cn_cbor_mapget_string(pInput, "encrypted") != NULL) {
 		if (ValidateEncrypt(pControl)) {
