+
+
+//
+// Form a KeySpec with checking and masking
+//
+LocalKey::KeySpec::KeySpec(CSSM_KEYUSE usage, CSSM_KEYATTR_FLAGS attrs)
+ : CssmClient::KeySpec(usage, (attrs & ~managedAttributes) | forcedAttributes)
+{
+ if (attrs & generatedAttributes)
+ CssmError::throwMe(CSSMERR_CSP_INVALID_KEYATTR_MASK);
+}
+
+LocalKey::KeySpec::KeySpec(CSSM_KEYUSE usage, CSSM_KEYATTR_FLAGS attrs, const CssmData &label)
+ : CssmClient::KeySpec(usage, (attrs & ~managedAttributes) | forcedAttributes, label)
+{
+ if (attrs & generatedAttributes)
+ CssmError::throwMe(CSSMERR_CSP_INVALID_KEYATTR_MASK);
+}