Use SHA512 for encryption too

This commit is contained in:
Julia Friesel
2018-09-13 17:07:10 +02:00
parent f2f0278a1c
commit b82b2d625a
3 changed files with 49 additions and 25 deletions
+23 -1
View File
@@ -6,9 +6,10 @@ import {
ScrollView
} from 'react-native'
import { LocalDate, ChronoUnit } from 'js-joda'
import nodejs from 'nodejs-mobile-react-native'
import styles from '../styles/index'
import cycleModule from '../lib/cycle'
import { requestHash, getOrCreateCycleDay, getBleedingDaysSortedByDate, fillWithMucusDummyData, fillWithCervixDummyData, deleteAll } from '../db'
import { requestHash, getOrCreateCycleDay, getBleedingDaysSortedByDate, fillWithMucusDummyData, fillWithCervixDummyData, deleteAll, encryptAndRestartApp } from '../db'
import {bleedingPrediction as labels} from './labels'
export default class Home extends Component {
@@ -34,10 +35,31 @@ export default class Home extends Component {
})(this)
getBleedingDaysSortedByDate().addListener(this.setStateWithCurrentText)
this.startEncryption = async (msg) => {
msg = JSON.parse(msg)
if (msg.type === 'sha512') {
const hash = msg.message
const key = new Uint8Array(64)
for (let i = 0; i < key.length; i++) {
const twoDigitHex = hash.slice(i * 2, i * 2 + 2)
key[i] = parseInt(twoDigitHex, 16)
}
encryptAndRestartApp(key)
}
}
nodejs.start('main.js')
nodejs.channel.addListener(
'message',
this.startEncryption,
this
)
}
componentWillUnmount() {
getBleedingDaysSortedByDate().removeListener(this.setStateWithCurrentText)
nodejs.channel.removeListener('message', this.startEncryption)
}
passTodayToDayView() {
+24 -17
View File
@@ -20,30 +20,37 @@ export default class PasswordPrompt extends Component {
this.setState({showApp: true})
}
})
this.tryToOpenDb = async (msg) => {
msg = JSON.parse(msg)
if (msg.type === 'sha512') {
const hash = msg.message
const key = new Uint8Array(64)
for (let i = 0; i < key.length; i++) {
const twoDigitHex = hash.slice(i * 2, i * 2 + 2)
key[i] = parseInt(twoDigitHex, 16)
}
try {
await openDbConnection(key)
} catch (err) {
console.log(err)
this.setState({ wrongPassword: true })
}
}
}
nodejs.start('main.js')
nodejs.channel.addListener(
'message',
async msg => {
msg = JSON.parse(msg)
if (msg.type === 'sha512') {
const hash = msg.message
const key = new Uint8Array(64)
for (let i = 0; i < key.length; i++) {
const twoDigitHex = hash.slice(i * 2, i * 2 + 2)
key[i] = parseInt(twoDigitHex, 16)
}
try {
await openDbConnection(key)
} catch(err) {
console.log(err)
this.setState({wrongPassword: true})
}
}
},
this.tryToOpenDb,
this
)
}
componentWillUnmount() {
nodejs.channel.removeListener('message', this.tryToOpenDb)
}
render() {
return (
<View style={{ flex: 1 }}>