NFC NDEF library

Dependents:   Nucleo_NFC_Example I2C_NFC_Master Print_Entire_Nucleo_NFC01A1_Memory

Fork of lib_NDEF by Enrico Gregoratto

Committer:
EnricoG
Date:
Mon Dec 15 19:41:36 2014 +0000
Revision:
0:3b093bd0819e
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EnricoG 0:3b093bd0819e 1 /**
EnricoG 0:3b093bd0819e 2 ******************************************************************************
EnricoG 0:3b093bd0819e 3 * @file lib_ISO7816_Password.c
EnricoG 0:3b093bd0819e 4 * @author MMY Application Team
EnricoG 0:3b093bd0819e 5 * @version V1.0.0
EnricoG 0:3b093bd0819e 6 * @date 20-November-2013
EnricoG 0:3b093bd0819e 7 * @brief This file help to manage password in the ISO7816 context.
EnricoG 0:3b093bd0819e 8 ******************************************************************************
EnricoG 0:3b093bd0819e 9 * @attention
EnricoG 0:3b093bd0819e 10 *
EnricoG 0:3b093bd0819e 11 * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
EnricoG 0:3b093bd0819e 12 *
EnricoG 0:3b093bd0819e 13 * Licensed under MMY-ST Liberty SW License Agreement V2, (the "License");
EnricoG 0:3b093bd0819e 14 * You may not use this file except in compliance with the License.
EnricoG 0:3b093bd0819e 15 * You may obtain a copy of the License at:
EnricoG 0:3b093bd0819e 16 *
EnricoG 0:3b093bd0819e 17 * http://www.st.com/software_license_agreement_liberty_v2
EnricoG 0:3b093bd0819e 18 *
EnricoG 0:3b093bd0819e 19 * Unless required by applicable law or agreed to in writing, software
EnricoG 0:3b093bd0819e 20 * distributed under the License is distributed on an "AS IS" BASIS,
EnricoG 0:3b093bd0819e 21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
EnricoG 0:3b093bd0819e 22 * See the License for the specific language governing permissions and
EnricoG 0:3b093bd0819e 23 * limitations under the License.
EnricoG 0:3b093bd0819e 24 *
EnricoG 0:3b093bd0819e 25 ******************************************************************************
EnricoG 0:3b093bd0819e 26 */
EnricoG 0:3b093bd0819e 27
EnricoG 0:3b093bd0819e 28 /* Includes ------------------------------------------------------------------*/
EnricoG 0:3b093bd0819e 29 #include "lib_ISO7816_Password.h"
EnricoG 0:3b093bd0819e 30
EnricoG 0:3b093bd0819e 31 /** @addtogroup NFC_libraries
EnricoG 0:3b093bd0819e 32 * @{
EnricoG 0:3b093bd0819e 33 * @brief <b>This is the library used to manage the content of the TAG (data)
EnricoG 0:3b093bd0819e 34 * But also the specific feature of the tag, for instance
EnricoG 0:3b093bd0819e 35 * password, gpo... </b>
EnricoG 0:3b093bd0819e 36 */
EnricoG 0:3b093bd0819e 37
EnricoG 0:3b093bd0819e 38
EnricoG 0:3b093bd0819e 39 /** @addtogroup libISO7816
EnricoG 0:3b093bd0819e 40 * @{
EnricoG 0:3b093bd0819e 41 * @brief This part of the library help to manage TAG with ISO7816 feature.
EnricoG 0:3b093bd0819e 42 */
EnricoG 0:3b093bd0819e 43
EnricoG 0:3b093bd0819e 44
EnricoG 0:3b093bd0819e 45 /** @defgroup libPassword_Private_Functions
EnricoG 0:3b093bd0819e 46 * @{
EnricoG 0:3b093bd0819e 47 */
EnricoG 0:3b093bd0819e 48
EnricoG 0:3b093bd0819e 49 /**
EnricoG 0:3b093bd0819e 50 * @}
EnricoG 0:3b093bd0819e 51 */
EnricoG 0:3b093bd0819e 52
EnricoG 0:3b093bd0819e 53 /** @defgroup libPassword_Public_Functions
EnricoG 0:3b093bd0819e 54 * @{
EnricoG 0:3b093bd0819e 55 * @brief This file is used to manage password with NDEF file
EnricoG 0:3b093bd0819e 56 */
EnricoG 0:3b093bd0819e 57
EnricoG 0:3b093bd0819e 58 /**
EnricoG 0:3b093bd0819e 59 * @brief This fonction activate the need of a password for next read access
EnricoG 0:3b093bd0819e 60 * @param pCurrentWritePassword : Write password is needed to have the right to enable Read Password
EnricoG 0:3b093bd0819e 61 * @param pNewPassword : The password that will be requiered for next read access
EnricoG 0:3b093bd0819e 62 * @retval SUCCESS : Read password is activated
EnricoG 0:3b093bd0819e 63 * @retval ERROR : operation does not complete
EnricoG 0:3b093bd0819e 64 */
EnricoG 0:3b093bd0819e 65 uint16_t ISO7816_EnableReadPwd(uint8_t* pCurrentWritePassword, uint8_t* pNewPassword)
EnricoG 0:3b093bd0819e 66 {
EnricoG 0:3b093bd0819e 67 uint16_t status;
EnricoG 0:3b093bd0819e 68 uint16_t FileId;
EnricoG 0:3b093bd0819e 69
EnricoG 0:3b093bd0819e 70 /* Before using Verify command NDEF file must be selected */
EnricoG 0:3b093bd0819e 71 GetNDEFFileId(&FileId);
EnricoG 0:3b093bd0819e 72 OpenNDEFSession(FileId, ASK_FOR_SESSION);
EnricoG 0:3b093bd0819e 73
EnricoG 0:3b093bd0819e 74 status = EnableReadPassword( pCurrentWritePassword, pNewPassword);
EnricoG 0:3b093bd0819e 75
EnricoG 0:3b093bd0819e 76 CloseNDEFSession(FileId);
EnricoG 0:3b093bd0819e 77
EnricoG 0:3b093bd0819e 78 return status;
EnricoG 0:3b093bd0819e 79 }
EnricoG 0:3b093bd0819e 80
EnricoG 0:3b093bd0819e 81 /**
EnricoG 0:3b093bd0819e 82 * @brief This fonction desactivate the need of a password for next read access
EnricoG 0:3b093bd0819e 83 * @param pCurrentWritePassword : Write password is needed to have the right to disable Read Password
EnricoG 0:3b093bd0819e 84 * @retval SUCCESS : Read password is desactivated
EnricoG 0:3b093bd0819e 85 * @retval ERROR : operation does not complete
EnricoG 0:3b093bd0819e 86 */
EnricoG 0:3b093bd0819e 87 uint16_t ISO7816_DisableReadPwd(uint8_t* pCurrentWritePassword )
EnricoG 0:3b093bd0819e 88 {
EnricoG 0:3b093bd0819e 89 uint16_t status;
EnricoG 0:3b093bd0819e 90 uint16_t FileId;
EnricoG 0:3b093bd0819e 91
EnricoG 0:3b093bd0819e 92 /* Before using Verify command NDEF file must be selected */
EnricoG 0:3b093bd0819e 93 GetNDEFFileId(&FileId);
EnricoG 0:3b093bd0819e 94 OpenNDEFSession(FileId, ASK_FOR_SESSION);
EnricoG 0:3b093bd0819e 95
EnricoG 0:3b093bd0819e 96 status = DisableReadPassword( pCurrentWritePassword );
EnricoG 0:3b093bd0819e 97
EnricoG 0:3b093bd0819e 98 CloseNDEFSession(FileId);
EnricoG 0:3b093bd0819e 99
EnricoG 0:3b093bd0819e 100 return status;
EnricoG 0:3b093bd0819e 101 }
EnricoG 0:3b093bd0819e 102
EnricoG 0:3b093bd0819e 103 /**
EnricoG 0:3b093bd0819e 104 * @brief This fonction activate the need of a password for next write access
EnricoG 0:3b093bd0819e 105 * @param pCurrentWritePassword : Write password must be prensented to have the right to modify write Password
EnricoG 0:3b093bd0819e 106 * @param pNewPassword : The password that will be requiered for next write access
EnricoG 0:3b093bd0819e 107 * @retval SUCCESS : Write password is activated
EnricoG 0:3b093bd0819e 108 * @retval ERROR : operation does not complete
EnricoG 0:3b093bd0819e 109 */
EnricoG 0:3b093bd0819e 110 uint16_t ISO7816_EnableWritePwd(uint8_t* pCurrentWritePassword, uint8_t* pNewPassword)
EnricoG 0:3b093bd0819e 111 {
EnricoG 0:3b093bd0819e 112 uint16_t status;
EnricoG 0:3b093bd0819e 113 uint16_t FileId;
EnricoG 0:3b093bd0819e 114
EnricoG 0:3b093bd0819e 115 /* Before using Verify command NDEF file must be selected */
EnricoG 0:3b093bd0819e 116 GetNDEFFileId(&FileId);
EnricoG 0:3b093bd0819e 117 OpenNDEFSession(FileId, ASK_FOR_SESSION);
EnricoG 0:3b093bd0819e 118
EnricoG 0:3b093bd0819e 119 status = EnableWritePassword( pCurrentWritePassword, pNewPassword);
EnricoG 0:3b093bd0819e 120
EnricoG 0:3b093bd0819e 121 CloseNDEFSession(FileId);
EnricoG 0:3b093bd0819e 122
EnricoG 0:3b093bd0819e 123 return status;
EnricoG 0:3b093bd0819e 124 }
EnricoG 0:3b093bd0819e 125
EnricoG 0:3b093bd0819e 126 /**
EnricoG 0:3b093bd0819e 127 * @brief This fonction desactivate the need of a password for next write access
EnricoG 0:3b093bd0819e 128 * @param pCurrentWritePassword : Write password must be prensented to have the right to disable it
EnricoG 0:3b093bd0819e 129 * @retval SUCCESS : Write password is desactivated
EnricoG 0:3b093bd0819e 130 * @retval ERROR : operation does not complete
EnricoG 0:3b093bd0819e 131 */
EnricoG 0:3b093bd0819e 132 uint16_t ISO7816_DisableWritePwd(uint8_t* pCurrentWritePassword)
EnricoG 0:3b093bd0819e 133 {
EnricoG 0:3b093bd0819e 134 uint16_t status;
EnricoG 0:3b093bd0819e 135 uint16_t FileId;
EnricoG 0:3b093bd0819e 136
EnricoG 0:3b093bd0819e 137 /* Before using Verify command NDEF file must be selected */
EnricoG 0:3b093bd0819e 138 GetNDEFFileId(&FileId);
EnricoG 0:3b093bd0819e 139 OpenNDEFSession(FileId, ASK_FOR_SESSION);
EnricoG 0:3b093bd0819e 140
EnricoG 0:3b093bd0819e 141 status = DisableWritePassword( pCurrentWritePassword);
EnricoG 0:3b093bd0819e 142
EnricoG 0:3b093bd0819e 143 CloseNDEFSession(FileId);
EnricoG 0:3b093bd0819e 144
EnricoG 0:3b093bd0819e 145 return status;
EnricoG 0:3b093bd0819e 146 }
EnricoG 0:3b093bd0819e 147
EnricoG 0:3b093bd0819e 148 /**
EnricoG 0:3b093bd0819e 149 * @brief This fonction desactivate the need of read and write password for next access
EnricoG 0:3b093bd0819e 150 * @param pSuperUserPassword : I2C super user password to overwrite read and write password
EnricoG 0:3b093bd0819e 151 * @retval SUCCESS : M24SR access is now free (no password needed)
EnricoG 0:3b093bd0819e 152 * @retval ERROR : operation does not complete
EnricoG 0:3b093bd0819e 153 */
EnricoG 0:3b093bd0819e 154 uint16_t ISO7816_DisableAllPassword(uint8_t* pSuperUserPassword)
EnricoG 0:3b093bd0819e 155 {
EnricoG 0:3b093bd0819e 156 uint16_t status;
EnricoG 0:3b093bd0819e 157 uint16_t FileId;
EnricoG 0:3b093bd0819e 158
EnricoG 0:3b093bd0819e 159 /* Before using Verify command NDEF file must be selected */
EnricoG 0:3b093bd0819e 160 GetNDEFFileId(&FileId);
EnricoG 0:3b093bd0819e 161 OpenNDEFSession(FileId, TAKE_SESSION);
EnricoG 0:3b093bd0819e 162
EnricoG 0:3b093bd0819e 163 status = DisableAllPassword( pSuperUserPassword);
EnricoG 0:3b093bd0819e 164
EnricoG 0:3b093bd0819e 165 CloseNDEFSession(FileId);
EnricoG 0:3b093bd0819e 166
EnricoG 0:3b093bd0819e 167 return status;
EnricoG 0:3b093bd0819e 168 }
EnricoG 0:3b093bd0819e 169
EnricoG 0:3b093bd0819e 170
EnricoG 0:3b093bd0819e 171 /**
EnricoG 0:3b093bd0819e 172 * @}
EnricoG 0:3b093bd0819e 173 */
EnricoG 0:3b093bd0819e 174
EnricoG 0:3b093bd0819e 175 /**
EnricoG 0:3b093bd0819e 176 * @}
EnricoG 0:3b093bd0819e 177 */
EnricoG 0:3b093bd0819e 178
EnricoG 0:3b093bd0819e 179 /**
EnricoG 0:3b093bd0819e 180 * @}
EnricoG 0:3b093bd0819e 181 */
EnricoG 0:3b093bd0819e 182
EnricoG 0:3b093bd0819e 183 /******************* (C) COPYRIGHT 2013 STMicroelectronics *****END OF FILE****/
EnricoG 0:3b093bd0819e 184