juice-shop

Форк
0
/
checkKeys.ts 
42 строки · 1.9 Кб
1
import { type Request, type Response } from 'express'
2
import { HDNodeWallet } from 'ethers'
3
import challengeUtils = require('../lib/challengeUtils')
4
import * as utils from '../lib/utils'
5
import { challenges } from '../data/datacache'
6

7
module.exports.checkKeys = function checkKeys () {
8
  return (req: Request, res: Response) => {
9
    try {
10
      const mnemonic = 'purpose betray marriage blame crunch monitor spin slide donate sport lift clutch'
11
      const mnemonicWallet = HDNodeWallet.fromPhrase(mnemonic)
12
      const privateKey = mnemonicWallet.privateKey
13
      const publicKey = mnemonicWallet.publicKey
14
      const address = mnemonicWallet.address
15
      challengeUtils.solveIf(challenges.nftUnlockChallenge, () => {
16
        return req.body.privateKey === privateKey
17
      })
18
      if (req.body.privateKey === privateKey) {
19
        res.status(200).json({ success: true, message: 'Challenge successfully solved', status: challenges.nftUnlockChallenge })
20
      } else {
21
        if (req.body.privateKey === address) {
22
          res.status(401).json({ success: false, message: 'Looks like you entered the public address of my ethereum wallet!', status: challenges.nftUnlockChallenge })
23
        } else if (req.body.privateKey === publicKey) {
24
          res.status(401).json({ success: false, message: 'Looks like you entered the public key of my ethereum wallet!', status: challenges.nftUnlockChallenge })
25
        } else {
26
          res.status(401).json({ success: false, message: 'Looks like you entered a non-Ethereum private key to access me.', status: challenges.nftUnlockChallenge })
27
        }
28
      }
29
    } catch (error) {
30
      res.status(500).json(utils.getErrorMessage(error))
31
    }
32
  }
33
}
34
module.exports.nftUnlocked = function nftUnlocked () {
35
  return (req: Request, res: Response) => {
36
    try {
37
      res.status(200).json({ status: challenges.nftUnlockChallenge.solved })
38
    } catch (error) {
39
      res.status(500).json(utils.getErrorMessage(error))
40
    }
41
  }
42
}
43

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.