A small memory footprint AMQP implimentation

Dependents:   iothub_client_sample_amqp remote_monitoring simplesample_amqp

Committer:
AzureIoTClient
Date:
Fri Mar 24 16:35:45 2017 -0700
Revision:
21:f9c433d8e6ca
Parent:
19:000ab4e6a2c1
Child:
27:d74f1cea23e1
1.1.10

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Azure.IoT Build 0:6ae2f7bca550 1 // Copyright (c) Microsoft. All rights reserved.
Azure.IoT Build 0:6ae2f7bca550 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
Azure.IoT Build 0:6ae2f7bca550 3
Azure.IoT Build 0:6ae2f7bca550 4 #include <stdlib.h>
Azure.IoT Build 0:6ae2f7bca550 5 #include <string.h>
AzureIoTClient 19:000ab4e6a2c1 6 #include "azure_c_shared_utility/optimize_size.h"
AzureIoTClient 21:f9c433d8e6ca 7 #include "azure_c_shared_utility/gballoc.h"
Azure.IoT Build 0:6ae2f7bca550 8 #include "azure_uamqp_c/sasl_mssbcbs.h"
Azure.IoT Build 0:6ae2f7bca550 9
Azure.IoT Build 0:6ae2f7bca550 10 typedef struct SASL_MSSBCBS_INSTANCE_TAG
Azure.IoT Build 0:6ae2f7bca550 11 {
AzureIoTClient 6:641a9672db08 12 unsigned char dummy;
Azure.IoT Build 0:6ae2f7bca550 13 } SASL_MSSBCBS_INSTANCE;
Azure.IoT Build 0:6ae2f7bca550 14
Azure.IoT Build 0:6ae2f7bca550 15 static const SASL_MECHANISM_INTERFACE_DESCRIPTION saslmssbcbs_interface =
Azure.IoT Build 0:6ae2f7bca550 16 {
Azure.IoT Build 0:6ae2f7bca550 17 saslmssbcbs_create,
Azure.IoT Build 0:6ae2f7bca550 18 saslmssbcbs_destroy,
Azure.IoT Build 0:6ae2f7bca550 19 saslmssbcbs_get_init_bytes,
Azure.IoT Build 0:6ae2f7bca550 20 saslmssbcbs_get_mechanism_name,
Azure.IoT Build 0:6ae2f7bca550 21 saslmssbcbs_challenge
Azure.IoT Build 0:6ae2f7bca550 22 };
Azure.IoT Build 0:6ae2f7bca550 23
Azure.IoT Build 0:6ae2f7bca550 24 CONCRETE_SASL_MECHANISM_HANDLE saslmssbcbs_create(void* config)
Azure.IoT Build 0:6ae2f7bca550 25 {
AzureIoTClient 6:641a9672db08 26 (void)config;
AzureIoTClient 21:f9c433d8e6ca 27 return malloc(sizeof(SASL_MSSBCBS_INSTANCE));
Azure.IoT Build 0:6ae2f7bca550 28 }
Azure.IoT Build 0:6ae2f7bca550 29
Azure.IoT Build 0:6ae2f7bca550 30 void saslmssbcbs_destroy(CONCRETE_SASL_MECHANISM_HANDLE sasl_mechanism_concrete_handle)
Azure.IoT Build 0:6ae2f7bca550 31 {
Azure.IoT Build 0:6ae2f7bca550 32 if (sasl_mechanism_concrete_handle != NULL)
Azure.IoT Build 0:6ae2f7bca550 33 {
AzureIoTClient 21:f9c433d8e6ca 34 free(sasl_mechanism_concrete_handle);
Azure.IoT Build 0:6ae2f7bca550 35 }
Azure.IoT Build 0:6ae2f7bca550 36 }
Azure.IoT Build 0:6ae2f7bca550 37
Azure.IoT Build 0:6ae2f7bca550 38 int saslmssbcbs_get_init_bytes(CONCRETE_SASL_MECHANISM_HANDLE sasl_mechanism_concrete_handle, SASL_MECHANISM_BYTES* init_bytes)
Azure.IoT Build 0:6ae2f7bca550 39 {
Azure.IoT Build 0:6ae2f7bca550 40 int result;
Azure.IoT Build 0:6ae2f7bca550 41
Azure.IoT Build 0:6ae2f7bca550 42 if (sasl_mechanism_concrete_handle == NULL)
Azure.IoT Build 0:6ae2f7bca550 43 {
AzureIoTClient 19:000ab4e6a2c1 44 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 45 }
Azure.IoT Build 0:6ae2f7bca550 46 else
Azure.IoT Build 0:6ae2f7bca550 47 {
Azure.IoT Build 0:6ae2f7bca550 48 init_bytes->bytes = NULL;
Azure.IoT Build 0:6ae2f7bca550 49 init_bytes->length = 0;
Azure.IoT Build 0:6ae2f7bca550 50
Azure.IoT Build 0:6ae2f7bca550 51 result = 0;
Azure.IoT Build 0:6ae2f7bca550 52 }
Azure.IoT Build 0:6ae2f7bca550 53
Azure.IoT Build 0:6ae2f7bca550 54 return result;
Azure.IoT Build 0:6ae2f7bca550 55 }
Azure.IoT Build 0:6ae2f7bca550 56
Azure.IoT Build 0:6ae2f7bca550 57 const char* saslmssbcbs_get_mechanism_name(CONCRETE_SASL_MECHANISM_HANDLE sasl_mechanism)
Azure.IoT Build 0:6ae2f7bca550 58 {
Azure.IoT Build 0:6ae2f7bca550 59 const char* result;
Azure.IoT Build 0:6ae2f7bca550 60
Azure.IoT Build 0:6ae2f7bca550 61 if (sasl_mechanism == NULL)
Azure.IoT Build 0:6ae2f7bca550 62 {
Azure.IoT Build 0:6ae2f7bca550 63 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 64 }
Azure.IoT Build 0:6ae2f7bca550 65 else
Azure.IoT Build 0:6ae2f7bca550 66 {
Azure.IoT Build 0:6ae2f7bca550 67 result = "MSSBCBS";
Azure.IoT Build 0:6ae2f7bca550 68 }
Azure.IoT Build 0:6ae2f7bca550 69
Azure.IoT Build 0:6ae2f7bca550 70 return result;
Azure.IoT Build 0:6ae2f7bca550 71 }
Azure.IoT Build 0:6ae2f7bca550 72
Azure.IoT Build 0:6ae2f7bca550 73 int saslmssbcbs_challenge(CONCRETE_SASL_MECHANISM_HANDLE concrete_sasl_mechanism, const SASL_MECHANISM_BYTES* challenge_bytes, SASL_MECHANISM_BYTES* response_bytes)
Azure.IoT Build 0:6ae2f7bca550 74 {
AzureIoTClient 17:923575db8b2d 75 (void)concrete_sasl_mechanism;
AzureIoTClient 17:923575db8b2d 76 (void)challenge_bytes;
AzureIoTClient 17:923575db8b2d 77 (void)response_bytes;
Azure.IoT Build 0:6ae2f7bca550 78 return 0;
Azure.IoT Build 0:6ae2f7bca550 79 }
Azure.IoT Build 0:6ae2f7bca550 80
Azure.IoT Build 0:6ae2f7bca550 81 const SASL_MECHANISM_INTERFACE_DESCRIPTION* saslmssbcbs_get_interface(void)
Azure.IoT Build 0:6ae2f7bca550 82 {
Azure.IoT Build 0:6ae2f7bca550 83 return &saslmssbcbs_interface;
Azure.IoT Build 0:6ae2f7bca550 84 }