[pinCode] cryptoJS 라이브러리 삭제 및 sha256 함수 추가
This commit is contained in:
11
com.twin.app.shoptime/package-lock.json
generated
11
com.twin.app.shoptime/package-lock.json
generated
@@ -16,7 +16,6 @@
|
|||||||
"@enact/ui": "^3.3.0",
|
"@enact/ui": "^3.3.0",
|
||||||
"@enact/webos": "^3.3.0",
|
"@enact/webos": "^3.3.0",
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"crypto-js": "^4.2.0",
|
|
||||||
"google-libphonenumber": "^3.2.34",
|
"google-libphonenumber": "^3.2.34",
|
||||||
"ilib": "^14.3.0",
|
"ilib": "^14.3.0",
|
||||||
"prop-types": "^15.6.2",
|
"prop-types": "^15.6.2",
|
||||||
@@ -677,11 +676,6 @@
|
|||||||
"integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==",
|
"integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==",
|
||||||
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js."
|
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js."
|
||||||
},
|
},
|
||||||
"node_modules/crypto-js": {
|
|
||||||
"version": "4.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
|
|
||||||
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
|
||||||
},
|
|
||||||
"node_modules/csstype": {
|
"node_modules/csstype": {
|
||||||
"version": "3.1.3",
|
"version": "3.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
||||||
@@ -2424,11 +2418,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
|
"resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
|
||||||
"integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA=="
|
"integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA=="
|
||||||
},
|
},
|
||||||
"crypto-js": {
|
|
||||||
"version": "4.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
|
|
||||||
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
|
||||||
},
|
|
||||||
"csstype": {
|
"csstype": {
|
||||||
"version": "3.1.3",
|
"version": "3.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
||||||
|
|||||||
@@ -40,7 +40,6 @@
|
|||||||
"@enact/ui": "^3.3.0",
|
"@enact/ui": "^3.3.0",
|
||||||
"@enact/webos": "^3.3.0",
|
"@enact/webos": "^3.3.0",
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"crypto-js": "^4.2.0",
|
|
||||||
"google-libphonenumber": "^3.2.34",
|
"google-libphonenumber": "^3.2.34",
|
||||||
"ilib": "^14.3.0",
|
"ilib": "^14.3.0",
|
||||||
"prop-types": "^15.6.2",
|
"prop-types": "^15.6.2",
|
||||||
|
|||||||
100
com.twin.app.shoptime/src/utils/sha256.js
Normal file
100
com.twin.app.shoptime/src/utils/sha256.js
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
export function sha256(ascii) {
|
||||||
|
function rightRotate(value, amount) {
|
||||||
|
return (value >>> amount) | (value << (32 - amount));
|
||||||
|
}
|
||||||
|
|
||||||
|
var mathPow = Math.pow;
|
||||||
|
var maxWord = mathPow(2, 32);
|
||||||
|
var lengthProperty = "length";
|
||||||
|
var i, j; // Used as a counter across the whole file
|
||||||
|
var result = "";
|
||||||
|
|
||||||
|
var words = [];
|
||||||
|
var asciiBitLength = ascii[lengthProperty] * 8;
|
||||||
|
|
||||||
|
//* caching results is optional - remove/add slash from front of this line to toggle
|
||||||
|
// Initial hash value: first 32 bits of the fractional parts of the square roots of the first 8 primes
|
||||||
|
// (we actually calculate the first 64, but extra values are just ignored)
|
||||||
|
var hash = (sha256.h = sha256.h || []);
|
||||||
|
// Round constants: first 32 bits of the fractional parts of the cube roots of the first 64 primes
|
||||||
|
var k = (sha256.k = sha256.k || []);
|
||||||
|
var primeCounter = k[lengthProperty];
|
||||||
|
/*/
|
||||||
|
var hash = [], k = [];
|
||||||
|
var primeCounter = 0;
|
||||||
|
//*/
|
||||||
|
|
||||||
|
var isComposite = {};
|
||||||
|
for (var candidate = 2; primeCounter < 64; candidate++) {
|
||||||
|
if (!isComposite[candidate]) {
|
||||||
|
for (i = 0; i < 313; i += candidate) {
|
||||||
|
isComposite[i] = candidate;
|
||||||
|
}
|
||||||
|
hash[primeCounter] = (mathPow(candidate, 0.5) * maxWord) | 0;
|
||||||
|
k[primeCounter++] = (mathPow(candidate, 1 / 3) * maxWord) | 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ascii += "\x80"; // Append Ƈ' bit (plus zero padding)
|
||||||
|
while ((ascii[lengthProperty] % 64) - 56) ascii += "\x00"; // More zero padding
|
||||||
|
for (i = 0; i < ascii[lengthProperty]; i++) {
|
||||||
|
j = ascii.charCodeAt(i);
|
||||||
|
if (j >> 8) return; // ASCII check: only accept characters in range 0-255
|
||||||
|
words[i >> 2] |= j << (((3 - i) % 4) * 8);
|
||||||
|
}
|
||||||
|
words[words[lengthProperty]] = (asciiBitLength / maxWord) | 0;
|
||||||
|
words[words[lengthProperty]] = asciiBitLength;
|
||||||
|
|
||||||
|
// Process each chunk
|
||||||
|
for (j = 0; j < words[lengthProperty]; ) {
|
||||||
|
var w = words.slice(j, (j += 16)); // The message is expanded into 64 words as part of the iteration
|
||||||
|
var oldHash = hash;
|
||||||
|
// This is now the undefinedworking hash", often labelled as variables a...g
|
||||||
|
// (we have to truncate as well, otherwise extra entries at the end accumulate
|
||||||
|
hash = hash.slice(0, 8);
|
||||||
|
|
||||||
|
for (i = 0; i < 64; i++) {
|
||||||
|
var i2 = i + j;
|
||||||
|
// Expand the message into 64 words
|
||||||
|
// Used below if
|
||||||
|
var w15 = w[i - 15],
|
||||||
|
w2 = w[i - 2];
|
||||||
|
|
||||||
|
// Iterate
|
||||||
|
var a = hash[0],
|
||||||
|
e = hash[4];
|
||||||
|
var temp1 =
|
||||||
|
hash[7] +
|
||||||
|
(rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) +
|
||||||
|
((e & hash[5]) ^ (~e & hash[6])) +
|
||||||
|
k[i] +
|
||||||
|
(w[i] =
|
||||||
|
i < 16
|
||||||
|
? w[i]
|
||||||
|
: (w[i - 16] +
|
||||||
|
(rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15 >>> 3)) +
|
||||||
|
w[i - 7] +
|
||||||
|
(rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2 >>> 10))) |
|
||||||
|
0);
|
||||||
|
// This is only used once, so *could* be moved below, but it only saves 4 bytes and makes things unreadble
|
||||||
|
var temp2 =
|
||||||
|
(rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) +
|
||||||
|
((a & hash[1]) ^ (a & hash[2]) ^ (hash[1] & hash[2]));
|
||||||
|
|
||||||
|
hash = [(temp1 + temp2) | 0].concat(hash); // We don't bother to truncate values properly to 32 bits
|
||||||
|
hash[4] = (hash[4] + temp1) | 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 8; i++) {
|
||||||
|
hash[i] = (hash[i] + oldHash[i]) | 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 8; i++) {
|
||||||
|
for (j = 3; j + 1; j--) {
|
||||||
|
var b = (hash[i] >> (j * 8)) & 255;
|
||||||
|
result += (b < 16 ? 0 : "") + b.toString(16);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
import React, { useCallback, useEffect, useState } from "react";
|
import React, { useCallback, useEffect, useState } from "react";
|
||||||
|
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
import CryptoJS from "crypto-js";
|
|
||||||
import { useDispatch, useSelector } from "react-redux";
|
import { useDispatch, useSelector } from "react-redux";
|
||||||
|
|
||||||
import Spotlight from "@enact/spotlight";
|
import Spotlight from "@enact/spotlight";
|
||||||
@@ -15,6 +14,7 @@ import TPopUp from "../../../components/TPopUp/TPopUp";
|
|||||||
import TQRCode from "../../../components/TQRCode/TQRCode";
|
import TQRCode from "../../../components/TQRCode/TQRCode";
|
||||||
import * as Config from "../../../utils/Config";
|
import * as Config from "../../../utils/Config";
|
||||||
import { $L } from "../../../utils/helperMethods";
|
import { $L } from "../../../utils/helperMethods";
|
||||||
|
import { sha256 } from "../../../utils/sha256";
|
||||||
import { SpotlightIds } from "../../../utils/SpotlightIds";
|
import { SpotlightIds } from "../../../utils/SpotlightIds";
|
||||||
import css from "./PinCodeInput.module.less";
|
import css from "./PinCodeInput.module.less";
|
||||||
|
|
||||||
@@ -88,6 +88,14 @@ export default function PinCodeInput({ setPlaceOrderPopup }) {
|
|||||||
setPlaceOrderPopup(false);
|
setPlaceOrderPopup(false);
|
||||||
}, [setPlaceOrderPopup]);
|
}, [setPlaceOrderPopup]);
|
||||||
|
|
||||||
|
// const pincodeCallback = (ret) =>{
|
||||||
|
// if(ret === error ){
|
||||||
|
// //
|
||||||
|
// }else{
|
||||||
|
// //success
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
const onClickConfirm = useCallback(() => {
|
const onClickConfirm = useCallback(() => {
|
||||||
if (pin.includes("")) {
|
if (pin.includes("")) {
|
||||||
setErrorMsg($L("Please enter a PIN CODE."));
|
setErrorMsg($L("Please enter a PIN CODE."));
|
||||||
@@ -97,12 +105,13 @@ export default function PinCodeInput({ setPlaceOrderPopup }) {
|
|||||||
setOkClicked(true);
|
setOkClicked(true);
|
||||||
|
|
||||||
const pinString = pin.join("");
|
const pinString = pin.join("");
|
||||||
const encryptedPin = CryptoJS.SHA256(pinString).toString();
|
const encryptedPin = sha256(pinString);
|
||||||
|
|
||||||
dispatch(
|
dispatch(
|
||||||
getMyInfoCardPincodeCheck({
|
getMyInfoCardPincodeCheck({
|
||||||
mbrNo: userNumber,
|
mbrNo: userNumber,
|
||||||
pinCd: encryptedPin,
|
pinCd: encryptedPin,
|
||||||
|
// callback: pincodeCallback,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}, [pin, userNumber, dispatch]);
|
}, [pin, userNumber, dispatch]);
|
||||||
|
|||||||
Reference in New Issue
Block a user