HCOSE_ENCRYPT _COSE_Encrypt_Init_From_Object(cn_cbor * cbor, COSE_Encrypt * pIn, CBOR_CONTEXT_COMMA cose_errback * perr) { COSE_Encrypt * pobj = pIn; cn_cbor * pRecipients = NULL; cose_errback error = { 0 }; if (perr == NULL) perr = &error; if (pobj == NULL) pobj = (COSE_Encrypt *)COSE_CALLOC(1, sizeof(COSE_Encrypt), context); if (pobj == NULL) { perr->err = COSE_ERR_OUT_OF_MEMORY; errorReturn: if ((pIn == NULL) && (pobj != NULL)) COSE_FREE(pobj, context); return NULL; } if (!_COSE_Init_From_Object(&pobj->m_message, cbor, CBOR_CONTEXT_PARAM_COMMA perr)) { goto errorReturn; } pRecipients = _COSE_arrayget_int(&pobj->m_message, INDEX_RECIPIENTS); CHECK_CONDITION(pRecipients == NULL, COSE_ERR_INVALID_PARAMETER); _COSE_InsertInList(&EncryptRoot, &pobj->m_message); return(HCOSE_ENCRYPT) pobj; }
HCOSE_ENCRYPT COSE_Encrypt_Init_From_Object(cn_cbor * cbor, CBOR_CONTEXT_COMMA cose_errback * perr) { COSE_Encrypt * pobj; cose_errback error = { 0 }; if (perr == NULL) perr = &error; pobj = (COSE_Encrypt *) COSE_CALLOC(1, sizeof(COSE_Encrypt), context); if (pobj == NULL) { perr->err = COSE_ERR_OUT_OF_MEMORY; errorReturn: if (pobj != NULL) { _COSE_Encrypt_Release(pobj); COSE_FREE(pobj, context); } return NULL; } if (!_COSE_Init_From_Object(&pobj->m_message, cbor, CBOR_CONTEXT_PARAM_COMMA perr)) { goto errorReturn; } _COSE_InsertInList(&EncryptRoot, &pobj->m_message); return(HCOSE_ENCRYPT) pobj; }
HCOSE_ENCRYPT COSE_Encrypt_Init(CBOR_CONTEXT_COMMA cose_errback * perror) { COSE_Encrypt * pobj = (COSE_Encrypt *)COSE_CALLOC(1, sizeof(COSE_Encrypt), context); if (pobj == NULL) { if (perror != NULL) perror->err = COSE_ERR_OUT_OF_MEMORY; return NULL; } if (!_COSE_Init(&pobj->m_message, COSE_enveloped_object, CBOR_CONTEXT_PARAM_COMMA perror)) { COSE_Encrypt_Free((HCOSE_ENCRYPT)pobj); return NULL; } _COSE_InsertInList(&EncryptRoot, &pobj->m_message); return (HCOSE_ENCRYPT) pobj; }
/*! * @brief Allocate and initialize an object for creation of an Enveloped message object * * Allocate and initialize the object used to create a COSE Enveloped message object. * Supported flags are: * COSE_INIT_FLAG_DETACHED_CONTENT - content is not part of the message * COSE_INIT_NO_CBOR_FLAG - Do not emit the leading CBOR tag on the message. * * See the notes on the memory model for the use of the context variable. * Applications need to free the returned handle before deallocating the * memory block that it was wrapped in for correct handle checking. * * @param flags Set of initialization flags from the COSE_INIT_FLAGS enum * @param context CN_CBOR context allocator struture * @param perr Location to return error specific information * @returns handle to the newly allocated object */ HCOSE_ENVELOPED COSE_Enveloped_Init(COSE_INIT_FLAGS flags, CBOR_CONTEXT_COMMA cose_errback * perr) { COSE_Enveloped * pobj = (COSE_Enveloped *)COSE_CALLOC(1, sizeof(COSE_Enveloped), context); CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY); if (!_COSE_Init(flags,&pobj->m_message, COSE_enveloped_object, CBOR_CONTEXT_PARAM_COMMA perr)) { _COSE_Enveloped_Release(pobj); COSE_FREE(pobj, context); return NULL; } _COSE_InsertInList(&EnvelopedRoot, &pobj->m_message); return (HCOSE_ENVELOPED) pobj; errorReturn: return NULL; }
HCOSE_ENCRYPT COSE_Encrypt_Init(COSE_INIT_FLAGS flags, CBOR_CONTEXT_COMMA cose_errback * perr) { CHECK_CONDITION(flags == COSE_INIT_FLAGS_NONE, COSE_ERR_INVALID_PARAMETER); COSE_Encrypt * pobj = (COSE_Encrypt *)COSE_CALLOC(1, sizeof(COSE_Encrypt), context); CHECK_CONDITION(pobj != NULL, COSE_ERR_OUT_OF_MEMORY); if (!_COSE_Init(flags, &pobj->m_message, COSE_enveloped_object, CBOR_CONTEXT_PARAM_COMMA perr)) { _COSE_Encrypt_Release(pobj); COSE_FREE(pobj, context); return NULL; } _COSE_InsertInList(&EncryptRoot, &pobj->m_message); return (HCOSE_ENCRYPT) pobj; errorReturn: return NULL; }
HCOSE_ENVELOPED _COSE_Enveloped_Init_From_Object(cn_cbor * cbor, COSE_Enveloped * pIn, CBOR_CONTEXT_COMMA cose_errback * perr) { COSE_Enveloped * pobj = pIn; cn_cbor * pRecipients = NULL; cose_errback error = { 0 }; if (perr == NULL) perr = &error; if (pobj == NULL) pobj = (COSE_Enveloped *)COSE_CALLOC(1, sizeof(COSE_Enveloped), context); if (pobj == NULL) { perr->err = COSE_ERR_OUT_OF_MEMORY; errorReturn: if (pobj != NULL) { _COSE_Enveloped_Release(pobj); if (pIn == NULL) COSE_FREE(pobj, context); } return NULL; } if (!_COSE_Init_From_Object(&pobj->m_message, cbor, CBOR_CONTEXT_PARAM_COMMA perr)) { goto errorReturn; } pRecipients = _COSE_arrayget_int(&pobj->m_message, INDEX_RECIPIENTS); if (pRecipients != NULL) { CHECK_CONDITION(pRecipients->type == CN_CBOR_ARRAY, COSE_ERR_INVALID_PARAMETER); pRecipients = pRecipients->first_child; while (pRecipients != NULL) { COSE_RecipientInfo * pInfo = _COSE_Recipient_Init_From_Object(pRecipients, CBOR_CONTEXT_PARAM_COMMA perr); CHECK_CONDITION(pInfo != NULL, COSE_ERR_OUT_OF_MEMORY); pInfo->m_recipientNext = pobj->m_recipientFirst; pobj->m_recipientFirst = pInfo; pRecipients = pRecipients->next; } } if (pIn == NULL) _COSE_InsertInList(&EnvelopedRoot, &pobj->m_message); return(HCOSE_ENVELOPED) pobj; }