1 //******************************************************************
3 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
23 #include "ocsecurity.h"
24 #include "ocsecurityconfig.h"
27 static OCDtlsPskCredsBlob* pskCredsBlob;
28 static int pskCredsBlobLen;
30 // Internal API. Invoked by OC stack to cleanup memory
31 void DeinitOCSecurityInfo()
35 // Initialize sensitive data to zeroes before freeing.
36 memset(pskCredsBlob, 0, pskCredsBlobLen);
43 // Internal API. Invoked by OC stack to retrieve credentials from this module
44 void OCGetDtlsPskCredentials(OCDtlsPskCredsBlob **credInfo)
46 *credInfo = pskCredsBlob;
50 * Provides the DTLS PSK credetials blob to OC stack.
53 * binary blob containing credentials
55 * length of binary blob
57 * @retval OC_STACK_OK for Success, otherwise some error value
59 OCStackResult OCSetDtlsPskCredentials(const OCDtlsPskCredsBlob *credInfo,
62 if(credInfo && len > 0)
64 if (credInfo->blobVer != DtlsPskCredsBlobVer_CurrentVersion)
66 return OC_STACK_INVALID_PARAM;
69 // Remove existing blob
70 DeinitOCSecurityInfo();
71 // Allocate storage for new blob
72 pskCredsBlob = (OCDtlsPskCredsBlob*)OCMalloc(len);
75 memcpy(pskCredsBlob, credInfo, len);
76 pskCredsBlobLen = len;
80 return OC_STACK_NO_MEMORY;
83 return OC_STACK_INVALID_PARAM;