/* This Source Code Form is subject to the terms of the Mozilla Public *License,v.2.0.IfacopyoftheMPLwasnotdistributedwiththis
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* *NSS_CMSAlgArray_GetIndexByAlgID-findaspecificalgorithminanarrayof *algorithms. * *algorithmArray-arrayofalgorithmIDs *algid-algorithmidofalgorithmtopick * *Returns: *Anintegercontainingtheindexofthealgorithminthearrayor-1if *algorithmwasnotfound.
*/ int
NSS_CMSAlgArray_GetIndexByAlgID(SECAlgorithmID **algorithmArray, SECAlgorithmID *algid)
{ int i;
if (algorithmArray == NULL || algorithmArray[0] == NULL) return -1;
for (i = 0; algorithmArray[i] != NULL; i++) { if (SECOID_CompareAlgorithmID(algorithmArray[i], algid) == SECEqual) break; /* bingo */
}
if (algorithmArray[i] == NULL) return -1; /* not found */
return i;
}
/* *NSS_CMSAlgArray_GetIndexByAlgTag-findaspecificalgorithminanarrayof *algorithms. * *algorithmArray-arrayofalgorithmIDs *algtag-algorithmtagofalgorithmtopick * *Returns: *Anintegercontainingtheindexofthealgorithminthearrayor-1if *algorithmwasnotfound.
*/ int
NSS_CMSAlgArray_GetIndexByAlgTag(SECAlgorithmID **algorithmArray,
SECOidTag algtag)
{
SECOidData *algid; int i = -1;
if (algorithmArray == NULL || algorithmArray[0] == NULL) return i;
#ifdef ORDER_N_SQUARED for (i = 0; algorithmArray[i] != NULL; i++) {
algid = SECOID_FindOID(&(algorithmArray[i]->algorithm)); if (algid->offset == algtag) break; /* bingo */
} #else
algid = SECOID_FindOIDByTag(algtag); if (!algid) return i; for (i = 0; algorithmArray[i] != NULL; i++) { if (SECITEM_ItemsAreEqual(&algorithmArray[i]->algorithm, &algid->oid)) break; /* bingo */
} #endif
if (algorithmArray[i] == NULL) return -1; /* not found */
return i;
}
/* *Mapasignalgorithmtoadigestalgorithm. *Thisisusedtohandleincorrectlyformattedpackagessenttous *fromWindows2003.
*/
SECOidTag
NSS_CMSUtil_MapSignAlgs(SECOidTag signAlg)
{ switch (signAlg) { case SEC_OID_PKCS1_MD2_WITH_RSA_ENCRYPTION: return SEC_OID_MD2; break; case SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION: return SEC_OID_MD5; break; case SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION: case SEC_OID_ANSIX962_ECDSA_SHA1_SIGNATURE: case SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST: return SEC_OID_SHA1; break; case SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION: case SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE: return SEC_OID_SHA256; break; case SEC_OID_PKCS1_SHA384_WITH_RSA_ENCRYPTION: case SEC_OID_ANSIX962_ECDSA_SHA384_SIGNATURE: return SEC_OID_SHA384; break; case SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION: case SEC_OID_ANSIX962_ECDSA_SHA512_SIGNATURE: return SEC_OID_SHA512; break; default: break;
} /* not one of the algtags incorrectly sent to us*/ return signAlg;
}
if (!msg) return cinfo;
c.pointer = msg; switch (type) { case SEC_OID_PKCS7_SIGNED_DATA:
cinfo = &(c.signedData->contentInfo); break; case SEC_OID_PKCS7_ENVELOPED_DATA:
cinfo = &(c.envelopedData->contentInfo); break; case SEC_OID_PKCS7_ENCRYPTED_DATA:
cinfo = &(c.encryptedData->contentInfo); break; case SEC_OID_PKCS7_DIGESTED_DATA:
cinfo = &(c.digestedData->contentInfo); break; default:
cinfo = NULL; if (NSS_CMSType_IsWrapper(type)) {
cinfo = &(c.genericData->contentInfo);
}
} /* We are using a union as a form of 'safe casting'. This *syntaxconfusescppcheck,sotellitit'sOK(andanyhuman
* who happens along to verify any other scanner warnings) */ /* cppcheck-suppress returnDanglingLifetime */ return cinfo;
}
constchar *
NSS_CMSUtil_VerificationStatusToString(NSSCMSVerificationStatus vs)
{ switch (vs) { case NSSCMSVS_Unverified: return"Unverified"; case NSSCMSVS_GoodSignature: return"GoodSignature"; case NSSCMSVS_BadSignature: return"BadSignature"; case NSSCMSVS_DigestMismatch: return"DigestMismatch"; case NSSCMSVS_SigningCertNotFound: return"SigningCertNotFound"; case NSSCMSVS_SigningCertNotTrusted: return"SigningCertNotTrusted"; case NSSCMSVS_SignatureAlgorithmUnknown: return"SignatureAlgorithmUnknown"; case NSSCMSVS_SignatureAlgorithmUnsupported: return"SignatureAlgorithmUnsupported"; case NSSCMSVS_MalformedSignature: return"MalformedSignature"; case NSSCMSVS_ProcessingError: return"ProcessingError"; default: return"Unknown";
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.