SETATTR
X(SETATTR, "setattr"),
SETATTR(ecdsaTemplate, 0, CKA_EC_PARAMS,
SETATTR(ecdsaTemplate, 1, CKA_EC_POINT,
SETATTR(x509templ, i, CKA_CLASS, &certClass, sizeof (certClass)); i++;
SETATTR(x509templ, i, CKA_CERTIFICATE_TYPE, &certtype,
SETATTR(x509templ, i, CKA_TOKEN, &true, sizeof (true)); i++;
SETATTR(x509templ, i, CKA_SUBJECT, subject, subject_len); i++;
SETATTR(x509templ, i, CKA_ISSUER, issuer, issuer_len); i++;
SETATTR(x509templ, i, CKA_SERIAL_NUMBER, serial, serno_len); i++;
SETATTR(x509templ, i, CKA_VALUE, pcert->Data, pcert->Length); i++;
SETATTR(x509templ, i, CKA_ID, Id.Data, Id.Length); i++;
SETATTR(x509templ, i, CKA_LABEL, label, strlen(label)); i++;
SETATTR(ckDsaPriKeyTemplate, 2, CKA_TOKEN,
SETATTR(rsaPubKeyTemplate, numpubattr, CKA_TOKEN,
SETATTR(rsaPubKeyTemplate, numpubattr, CKA_MODULUS_BITS,
SETATTR(rsaPubKeyTemplate, numpubattr,
SETATTR(rsaPubKeyTemplate, numpubattr,
SETATTR(rsaPubKeyTemplate, numpubattr, CKA_ENCRYPT,
SETATTR(rsaPubKeyTemplate, numpubattr, CKA_VERIFY,
SETATTR(rsaPubKeyTemplate, numpubattr, CKA_WRAP,
SETATTR(rsaPriKeyTemplate, numpriattr, CKA_TOKEN,
SETATTR(rsaPriKeyTemplate, numpriattr, CKA_PRIVATE, &true,
SETATTR(rsaPriKeyTemplate, numpriattr, CKA_DECRYPT, &true,
SETATTR(rsaPriKeyTemplate, numpriattr, CKA_SIGN, &true,
SETATTR(rsaPriKeyTemplate, numpriattr, CKA_UNWRAP, &true,
SETATTR(public_template, numpubattr, CKA_CLASS,
SETATTR(public_template, numpubattr, CKA_KEY_TYPE,
SETATTR(public_template, numpubattr, CKA_EC_PARAMS,
SETATTR(public_template, numpubattr, CKA_TOKEN,
SETATTR(public_template, numpubattr, CKA_VERIFY,
SETATTR(public_template, numpubattr, CKA_PRIVATE,
SETATTR(private_template, numpriattr, CKA_CLASS,
SETATTR(private_template, numpriattr, CKA_KEY_TYPE,
SETATTR(private_template, numpriattr, CKA_TOKEN,
SETATTR(private_template, numpriattr, CKA_PRIVATE,
SETATTR(private_template, numpriattr, CKA_SIGN,
SETATTR(private_template, numpriattr, CKA_DERIVE,
SETATTR(modattr, 0, CKA_MODULUS, NULL, modulusLength);
SETATTR(valattr, 0, CKA_VALUE, NULL, &valueLen);
SETATTR(valattr, 0, CKA_EC_POINT, NULL, &valueLen);
SETATTR(labelattr, 0, CKA_LABEL, keylabel, strlen(keylabel));
SETATTR(idattr, 0, CKA_ID, IDOutput.Data, IDOutput.Length);
SETATTR(templ, 0, CKA_CLASS, &objClass, sizeof (objClass));
SETATTR(templ, 1, CKA_TOKEN, &true, sizeof (true));
SETATTR(templ, 2, CKA_PRIVATE, &true, sizeof (true));
SETATTR(templ, 3, CKA_ID, Id.Data, Id.Length);
SETATTR(templ, 0, CKA_CLASS, &class, sizeof (class));
SETATTR(ckTemplate, 0, CKA_MODULUS, (CK_BYTE *)NULL,
SETATTR(templ, 0, CKA_CERTIFICATE_TYPE, &cktype, sizeof (cktype));
SETATTR(templ, i, CKA_SUBJECT, NULL, subject_len);
SETATTR(templ, i, CKA_ISSUER, NULL, issuer_len);
SETATTR(templ, i, CKA_SERIAL_NUMBER, NULL, serno_len);
SETATTR(templ, i, CKA_ID, NULL, id_len);
SETATTR(templ, i, CKA_VALUE, NULL, value_len);
SETATTR(pTmpl, i, CKA_TOKEN, &true, sizeof (true));
SETATTR(pTmpl, i, CKA_CLASS, &class, sizeof (class));
SETATTR(templ, i, CKA_VALUE, value, value_len);
SETATTR(pTmpl, i, CKA_LABEL, findLabel, strlen(findLabel));
SETATTR(pTmpl, i, CKA_KEY_TYPE, &alg, sizeof (alg));
SETATTR(pTmpl, i, CKA_ID, iddata.Data, iddata.Length);
SETATTR(pTmpl, i, CKA_PRIVATE, &true, sizeof (true));
SETATTR(templ, i, CKA_CLASS, &oClass, sizeof (CK_OBJECT_CLASS)); i++;
SETATTR(templ, i, CKA_KEY_TYPE, &keytype, sizeof (keytype)); i++;
SETATTR(templ, i, CKA_TOKEN, &cktrue, sizeof (cktrue)); i++;
SETATTR(templ, i, CKA_PRIVATE, &cktrue, sizeof (cktrue)); i++;
SETATTR(templ, i, CKA_DECRYPT, &cktrue, sizeof (cktrue)); i++;
SETATTR(templ, i, CKA_SUBJECT, subject.Data, subject.Length);
SETATTR(templ, i, CKA_ID, id.Data, id.Length);
SETATTR(templ, i, CKA_START_DATE, &startdate,
SETATTR(templ, i, CKA_END_DATE, &enddate,
SETATTR(templ, i, CKA_UNWRAP, &condition, sizeof (CK_BBOOL));
SETATTR(templ, i, CKA_DECRYPT, &condition, sizeof (CK_BBOOL));
SETATTR(templ, i, CKA_SIGN, &condition, sizeof (CK_BBOOL));
SETATTR(templ, i, CKA_SIGN_RECOVER, &condition,
SETATTR(templ, i, CKA_LABEL, keylabel, strlen(keylabel));
SETATTR(templ, i, CKA_ID, rawkey->id.Data,
SETATTR(templ, i, CKA_MODULUS,
SETATTR(templ, i, CKA_PUBLIC_EXPONENT,
SETATTR(templ, i, CKA_PRIVATE_EXPONENT,
SETATTR(templ, i, CKA_PRIME_1,
SETATTR(templ, i, CKA_PRIME_2,
SETATTR(templ, i, CKA_EXPONENT_1,
SETATTR(templ, i, CKA_EXPONENT_2,
SETATTR(templ, i, CKA_COEFFICIENT,
SETATTR(templ, i, CKA_PRIME,
SETATTR(templ, i, CKA_SUBPRIME,
SETATTR(templ, i, CKA_BASE,
SETATTR(templ, i, CKA_VALUE,
SETATTR(templ, i, CKA_SIGN, &cktrue, sizeof (cktrue));
SETATTR(templ, i, CKA_DERIVE, &cktrue, sizeof (cktrue));
SETATTR(templ, i, CKA_VALUE,
SETATTR(templ, i, CKA_EC_PARAMS,
SETATTR(templ, i, CKA_VALUE_LEN, &secKeyLen,
SETATTR(templ, i, CKA_VALUE, keydata, secKeyLen);
SETATTR(templ, i, CKA_CLASS, &class, sizeof (class));
SETATTR(templ, i, CKA_KEY_TYPE, &secKeyType, sizeof (secKeyType));
SETATTR(templ, i, CKA_LABEL, keylabel, strlen(keylabel));
SETATTR(templ, i, CKA_SENSITIVE, &true, sizeof (true));
SETATTR(templ, i, CKA_SENSITIVE, &false, sizeof (false));
SETATTR(templ, i, CKA_EXTRACTABLE, &false, sizeof (false));
SETATTR(templ, i, CKA_EXTRACTABLE, &true, sizeof (true));
SETATTR(templ, i, CKA_TOKEN, &true, sizeof (true));
SETATTR(templ, i, CKA_PRIVATE, &true, sizeof (true));
SETATTR(templ, i, CKA_ENCRYPT, &true, sizeof (true));
SETATTR(templ, i, CKA_DECRYPT, &true, sizeof (true));
SETATTR(templ, i, CKA_SIGN, &true, sizeof (true));
SETATTR(templ, i, CKA_VERIFY, &true, sizeof (true));
SETATTR(templ, i, CKA_CLASS, &class, sizeof (class));
SETATTR(templ, i, CKA_KEY_TYPE, &secKeyType, sizeof (secKeyType));
SETATTR(templ, i, CKA_VALUE, buf, secKeyLen);
SETATTR(templ, i, CKA_LABEL, keylabel, strlen(keylabel));
SETATTR(templ, i, CKA_SENSITIVE, &true, sizeof (true));
SETATTR(templ, i, CKA_SENSITIVE, &false, sizeof (false));
SETATTR(templ, i, CKA_EXTRACTABLE, &false, sizeof (false));
SETATTR(templ, i, CKA_EXTRACTABLE, &true, sizeof (true));
SETATTR(templ, i, CKA_TOKEN, &true, sizeof (true));
SETATTR(templ, i, CKA_PRIVATE, &true, sizeof (true));
SETATTR(templ, i, CKA_SIGN, &true, sizeof (true));
SETATTR(tokenattr, 0, CKA_TOKEN, &btrue, sizeof (btrue));
SETATTR(templ, i, CKA_TOKEN, &true, sizeof (true)); i++;
SETATTR(templ, i, CKA_CLASS, &oclass, sizeof (oclass)); i++;
SETATTR(templ, i, CKA_CERTIFICATE_TYPE, &ctype, sizeof (ctype)); i++;
SETATTR(templ, i, CKA_LABEL, label, strlen(label));
SETATTR(templ, i, CKA_PRIVATE, &true, sizeof (true)); i++;
SETATTR(templ, i, CKA_SERIAL_NUMBER, serial->val, serial->len);
SETATTR(rsaTemplate, 0, CKA_CLASS, &ckObjClass,
SETATTR(rsaTemplate, 1, CKA_KEY_TYPE, &ckKeyType,
SETATTR(rsaTemplate, 2, CKA_MODULUS, Modulus.Data,
SETATTR(rsaTemplate, 3, CKA_PUBLIC_EXPONENT,
SETATTR(rsaTemplate, 2, CKA_MODULUS, Modulus.Data,
SETATTR(rsaTemplate, 3, CKA_PUBLIC_EXPONENT,
SETATTR(dsaTemplate, 0, CKA_CLASS, &ckObjClass,
SETATTR(dsaTemplate, 1, CKA_KEY_TYPE, &ckKeyType,
SETATTR(dsaTemplate, 2, CKA_PRIME, Prime.Data,
SETATTR(dsaTemplate, 3, CKA_SUBPRIME, Subprime.Data,
SETATTR(dsaTemplate, 4, CKA_BASE, Base.Data,
SETATTR(dsaTemplate, 5, CKA_VALUE, Value.Data,
SETATTR(dsaTemplate, 2, CKA_PRIME, Prime.Data,
SETATTR(dsaTemplate, 3, CKA_SUBPRIME, Subprime.Data,
SETATTR(dsaTemplate, 4, CKA_BASE, Base.Data,
SETATTR(dsaTemplate, 5, CKA_VALUE, Value.Data,
_FEMGUARD(SETATTR, setattr),
_FEMOPDEF(SETATTR, setattr),