/* Generate DER for SpcAttributeTypeAndValue, which is basically just * a DER_SEQUENCE containing the OID 1.3.6.1.4.1.311.2.1.15 * (SPC_PE_IMAGE_DATA_OBJID) and the SpcPeImageData. */ static int generate_spc_attribute_yadda_yadda(cms_context *cms, SECItem *ataovp) { SpcAttributeTypeAndOptionalValue ataov; memset(&ataov, '\0', sizeof (ataov)); int rc; rc = get_ms_oid_secitem(SPC_PE_IMAGE_DATA_OBJID, &ataov.contentType); if (rc < 0) { cms->log(cms, LOG_ERR, "could not get SPC_PE_IMAGE_DATA_OBJID"); return -1; } rc = generate_spc_pe_image_data(cms, &ataov.value); if (rc < 0) return rc; if (SEC_ASN1EncodeItem(cms->arena, ataovp, &ataov, SpcAttributeTypeAndOptionalValueTemplate) == NULL) { cms->log(cms, LOG_ERR, "could not encode " "SpcAttributeTypeAndOptionalValue: %s", PORT_ErrorToString(PORT_GetError())); return -1; } return 0; }
/* Generate DER for SpcAttributeTypeAndValue, which is basically just * a DER_SEQUENCE containing the OID 1.3.6.1.4.1.311.2.1.15 * (SPC_PE_IMAGE_DATA_OBJID) and the SpcPeImageData. */ static int generate_spc_attribute_yadda_yadda(PRArenaPool *arena, SECItem *ataovp) { SpcAttributeTypeAndOptionalValue ataov; memset(&ataov, '\0', sizeof (ataov)); if (get_ms_oid_secitem(SPC_PE_IMAGE_DATA_OBJID, &ataov.contentType) < 0){ fprintf(stderr, "got here %s:%d\n",__func__,__LINE__); return -1; } if (generate_spc_pe_image_data(arena, &ataov.value) < 0) { fprintf(stderr, "got here %s:%d\n",__func__,__LINE__); return -1; } if (SEC_ASN1EncodeItem(arena, ataovp, &ataov, SpcAttributeTypeAndOptionalValueTemplate) == NULL) { fprintf(stderr, "Could not encode SpcAttributeTypeAndOptionalValue:" "%s\n", PORT_ErrorToString(PORT_GetError())); return -1; } return 0; }