NFC NDEF library
Dependents: Nucleo_NFC_Example I2C_NFC_Master Print_Entire_Nucleo_NFC01A1_Memory
Fork of lib_NDEF by
lib_ISO7816_Password.c@0:3b093bd0819e, 2014-12-15 (annotated)
- Committer:
- EnricoG
- Date:
- Mon Dec 15 19:41:36 2014 +0000
- Revision:
- 0:3b093bd0819e
Initial commit
Who changed what in which revision?
User | Revision | Line number | New 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>© 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 |