본문 바로가기
개발 및 알고리즘/알고리즘

[React Native] 리액트 네이티브에서 keychain store 구현하기 (react-native-keychain)

by 0xseo 2024. 8. 16.
반응형

이전 글(리액트 네이티브에서 지문 인식 구현하기)에서 지문 인식을 도입한 프로젝트는 서버가 없어 react native단에서 직접 pulbic key를 안전하게 저장해놨다가, signature를 받아 검증까지 해야 했다.


이를 위해서 모듈 react-native-keychain과 jsrsasign을 사용하였다.
여기서는 keychain만 기록한다.

keychain은 asyncStorage와 비슷하게 작동하지 ios 기기의 keychain과 android 기기의 keystore에 저장되어 매우 안전하게 보관된다는 특징이 있다.

간단해서 따로 설명할 건 없고 기록용이다.

import * as Keychain from 'react-native-keychain'

export const setItem = async (key: string, value: string) => {
  try {
    await Keychain.setInternetCredentials(key, key, value)
  } catch (error) {
    console.log('keychain set error:', error)
  }
}

export const getItem = async (key: string) => {
  try {
    const credentials = await Keychain.getInternetCredentials(key)
    if (credentials && credentials.password) {
      const savedPinNumber = credentials.password
      return savedPinNumber
    } else {
      return null
    }
  } catch (error) {
    console.log('keychain get error:', error)
    return null
  }
}

export const deleteItem = async (key: string) => {
  try {
    await Keychain.resetInternetCredentials(key)
    return true
  } catch (error) {
    console.log('keychain delete error:', error)
    return false
  }
}
반응형