mirror of
https://github.com/selfxyz/self.git
synced 2026-01-08 22:28:11 -05:00
Merge pull request #147 from zk-passport/csca-sha1-rsapss
This commit is contained in:
52
.github/workflows/action.yml
vendored
Normal file
52
.github/workflows/action.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
name: Proof of Passport CI/CD
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- dev
|
||||
- main
|
||||
jobs:
|
||||
run_circuit_tests:
|
||||
runs-on: ubuntu-latest
|
||||
environment: development
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
# Circom installation from https://github.com/erhant/circomkit/blob/main/.github/workflows/tests.yml
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install --yes \
|
||||
build-essential \
|
||||
libgmp-dev \
|
||||
libsodium-dev \
|
||||
nasm \
|
||||
nlohmann-json3-dev
|
||||
|
||||
- name: Set Node.js 18.x
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
|
||||
- name: Setup Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Download Circom Binary v2.1.8
|
||||
run: |
|
||||
wget -qO /home/runner/work/circom https://github.com/iden3/circom/releases/download/v2.1.8/circom-linux-amd64
|
||||
chmod +x /home/runner/work/circom
|
||||
sudo mv /home/runner/work/circom /bin/circom
|
||||
|
||||
- name: Print Circom version
|
||||
run: circom --version
|
||||
|
||||
- name: Install Yarn dependencies
|
||||
working-directory: ./circuits
|
||||
run: yarn install-circuits --immutable
|
||||
|
||||
- name: Run Tests
|
||||
working-directory: ./circuits
|
||||
run: yarn test
|
||||
@@ -2,8 +2,8 @@ pragma circom 2.1.5;
|
||||
|
||||
include "circomlib/circuits/poseidon.circom";
|
||||
include "@zk-email/circuits/utils/bytes.circom";
|
||||
include "./utils/isOlderThan.circom";
|
||||
include "./utils/isValid.circom";
|
||||
include "../utils/isOlderThan.circom";
|
||||
include "../utils/isValid.circom";
|
||||
include "binary-merkle-root.circom";
|
||||
|
||||
template Disclose(nLevels) {
|
||||
75
circuits/circuits/dsc/dsc_sha1_rsa.circom
Normal file
75
circuits/circuits/dsc/dsc_sha1_rsa.circom
Normal file
@@ -0,0 +1,75 @@
|
||||
pragma circom 2.1.5;
|
||||
include "circomlib/circuits/bitify.circom";
|
||||
include "circomlib/circuits/poseidon.circom";
|
||||
include "circomlib/circuits/comparators.circom";
|
||||
include "binary-merkle-root.circom";
|
||||
include "../utils/splitBytesToWords.circom";
|
||||
include "../utils/splitSignalsToWords.circom";
|
||||
include "../utils/Sha1Bytes.circom";
|
||||
include "../utils/leafHasher.circom";
|
||||
include "../utils/rsaPkcs1.circom";
|
||||
|
||||
template DSC_SHA1_RSA(max_cert_bytes, n_dsc, k_dsc, n_csca, k_csca, dsc_mod_len, nLevels ) {
|
||||
signal input raw_dsc_cert[max_cert_bytes];
|
||||
signal input raw_dsc_cert_padded_bytes;
|
||||
signal input csca_modulus[k_csca];
|
||||
signal input dsc_signature[k_csca];
|
||||
signal input dsc_modulus[k_dsc];
|
||||
signal input start_index;
|
||||
signal input secret;
|
||||
|
||||
signal input merkle_root;
|
||||
signal input path[nLevels];
|
||||
signal input siblings[nLevels];
|
||||
|
||||
signal output blinded_dsc_commitment;
|
||||
|
||||
//verify the leaf
|
||||
component leafHasher = LeafHasher(n_csca,k_csca);
|
||||
leafHasher.in <== csca_modulus;
|
||||
signal leaf <== leafHasher.out;
|
||||
|
||||
|
||||
signal computed_merkle_root <== BinaryMerkleRoot(nLevels)(leaf, nLevels, path, siblings);
|
||||
merkle_root === computed_merkle_root;
|
||||
|
||||
// variables verification
|
||||
assert(max_cert_bytes % 64 == 0);
|
||||
assert(n_csca * k_csca > max_cert_bytes);
|
||||
assert(n_csca <= (255 \ 2));
|
||||
|
||||
// hash raw TBS certificate
|
||||
signal sha[160] <== Sha1Bytes(max_cert_bytes)(raw_dsc_cert, raw_dsc_cert_padded_bytes);
|
||||
component sstw_1 = SplitSignalsToWords(1,160, n_csca, k_csca);
|
||||
for (var i = 0; i < 160; i++) {
|
||||
sstw_1.in[i] <== sha[159 - i];
|
||||
}
|
||||
|
||||
//verify RSA dsc_signature
|
||||
component rsa = RSAVerify65537(n_csca, k_csca);
|
||||
for (var i = 0; i < k_csca; i++) {
|
||||
rsa.base_message[i] <== sstw_1.out[i];
|
||||
rsa.modulus[i] <== csca_modulus[i];
|
||||
rsa.signature[i] <== dsc_signature[i];
|
||||
}
|
||||
|
||||
// verify DSC csca_modulus
|
||||
component shiftLeft = VarShiftLeft(max_cert_bytes, dsc_mod_len);
|
||||
shiftLeft.in <== raw_dsc_cert;
|
||||
shiftLeft.shift <== start_index;
|
||||
component spbt_1 = SplitBytesToWords(dsc_mod_len, n_dsc, k_dsc);
|
||||
spbt_1.in <== shiftLeft.out;
|
||||
for (var i = 0; i < k_dsc; i++) {
|
||||
dsc_modulus[i] === spbt_1.out[i];
|
||||
}
|
||||
// generate blinded commitment
|
||||
component sstw_2 = SplitSignalsToWords(n_dsc,k_dsc, 230, 9);
|
||||
sstw_2.in <== dsc_modulus;
|
||||
component poseidon = Poseidon(10);
|
||||
poseidon.inputs[0] <== secret;
|
||||
for (var i = 0; i < 9; i++) {
|
||||
poseidon.inputs[i+1] <== sstw_2.out[i];
|
||||
}
|
||||
blinded_dsc_commitment <== poseidon.out;
|
||||
}
|
||||
|
||||
@@ -6,12 +6,12 @@ include "circomlib/circuits/comparators.circom";
|
||||
include "@zk-email/circuits/lib/sha.circom";
|
||||
include "@zk-email/circuits/lib/rsa.circom";
|
||||
include "binary-merkle-root.circom";
|
||||
include "./utils/splitBytesToWords.circom";
|
||||
include "./utils/splitSignalsToWords.circom";
|
||||
include "./utils/leafHasher.circom";
|
||||
include "./utils/leafHasher2.circom";
|
||||
include "../utils/splitBytesToWords.circom";
|
||||
include "../utils/splitSignalsToWords.circom";
|
||||
include "../utils/leafHasher.circom";
|
||||
include "../utils/leafHasher.circom";
|
||||
|
||||
template DSC(max_cert_bytes, n_dsc, k_dsc, n_csca, k_csca, dsc_mod_len, nLevels ) {
|
||||
template DSC_SHA256_RSA(max_cert_bytes, n_dsc, k_dsc, n_csca, k_csca, dsc_mod_len, nLevels ) {
|
||||
signal input raw_dsc_cert[max_cert_bytes];
|
||||
signal input raw_dsc_cert_padded_bytes;
|
||||
signal input csca_modulus[k_csca];
|
||||
@@ -26,13 +26,9 @@ template DSC(max_cert_bytes, n_dsc, k_dsc, n_csca, k_csca, dsc_mod_len, nLevels
|
||||
|
||||
signal output blinded_dsc_commitment;
|
||||
|
||||
// verify the leaf
|
||||
// component leafHasher = LeafHasher(k_csca);
|
||||
// leafHasher.in <== csca_modulus;
|
||||
// signal leaf <== leafHasher.out;
|
||||
component leafHasher2 = LeafHasher2(n_csca,k_csca);
|
||||
leafHasher2.in <== csca_modulus;
|
||||
signal leaf <== leafHasher2.out;
|
||||
component leafHasher = LeafHasher(n_csca,k_csca);
|
||||
leafHasher.in <== csca_modulus;
|
||||
signal leaf <== leafHasher.out;
|
||||
|
||||
|
||||
signal computed_merkle_root <== BinaryMerkleRoot(nLevels)(leaf, nLevels, path, siblings);
|
||||
@@ -45,31 +41,16 @@ template DSC(max_cert_bytes, n_dsc, k_dsc, n_csca, k_csca, dsc_mod_len, nLevels
|
||||
|
||||
// hash raw TBS certificate
|
||||
signal sha[256] <== Sha256Bytes(max_cert_bytes)(raw_dsc_cert, raw_dsc_cert_padded_bytes);
|
||||
|
||||
var msg_len = (256+n_csca)\n_csca;
|
||||
component base_msg[msg_len];
|
||||
for (var i = 0; i < msg_len; i++) {
|
||||
base_msg[i] = Bits2Num(n_csca);
|
||||
}
|
||||
component sstw_1 = SplitSignalsToWords(1,256, n_csca, k_csca);
|
||||
for (var i = 0; i < 256; i++) {
|
||||
base_msg[i\n_csca].in[i%n_csca] <== sha[255 - i];
|
||||
}
|
||||
for (var i = 256; i < n_csca*msg_len; i++) {
|
||||
base_msg[i\n_csca].in[i%n_csca] <== 0;
|
||||
sstw_1.in[i] <== sha[255 - i];
|
||||
}
|
||||
|
||||
// verify RSA dsc_signature
|
||||
component rsa = RSAVerifier65537(n_csca, k_csca);
|
||||
for (var i = 0; i < msg_len; i++) {
|
||||
rsa.message[i] <== base_msg[i].out;
|
||||
}
|
||||
for (var i = msg_len; i < k_csca; i++) {
|
||||
rsa.message[i] <== 0;
|
||||
}
|
||||
for (var i = 0; i < k_csca; i++) {
|
||||
rsa.message[i] <== sstw_1.out[i];
|
||||
rsa.modulus[i] <== csca_modulus[i];
|
||||
}
|
||||
for (var i = 0; i < k_csca; i++) {
|
||||
rsa.signature[i] <== dsc_signature[i];
|
||||
}
|
||||
|
||||
@@ -83,12 +64,12 @@ template DSC(max_cert_bytes, n_dsc, k_dsc, n_csca, k_csca, dsc_mod_len, nLevels
|
||||
dsc_modulus[i] === spbt_1.out[i];
|
||||
}
|
||||
// generate blinded commitment
|
||||
component spbt_2 = SplitSignalsToWords(n_dsc,k_dsc, 230, 9);
|
||||
spbt_2.in <== dsc_modulus;
|
||||
component sstw_2 = SplitSignalsToWords(n_dsc,k_dsc, 230, 9);
|
||||
sstw_2.in <== dsc_modulus;
|
||||
component poseidon = Poseidon(10);
|
||||
poseidon.inputs[0] <== secret;
|
||||
for (var i = 0; i < 9; i++) {
|
||||
poseidon.inputs[i+1] <== spbt_2.out[i];
|
||||
poseidon.inputs[i+1] <== sstw_2.out[i];
|
||||
}
|
||||
blinded_dsc_commitment <== poseidon.out;
|
||||
}
|
||||
@@ -4,12 +4,14 @@ include "circomlib/circuits/bitify.circom";
|
||||
include "circomlib/circuits/poseidon.circom";
|
||||
include "circomlib/circuits/comparators.circom";
|
||||
include "@zk-email/circuits/lib/sha.circom";
|
||||
include "./utils/RSASSAPSS_padded.circom";
|
||||
include "binary-merkle-root.circom";
|
||||
include "./utils/splitBytesToWords.circom";
|
||||
include "./utils/splitSignalsToWords.circom";
|
||||
include "../utils/splitBytesToWords.circom";
|
||||
include "../utils/splitSignalsToWords.circom";
|
||||
include "../utils/RSASSAPSS_padded.circom";
|
||||
include "../utils/leafHasher.circom";
|
||||
|
||||
template DSC(max_cert_bytes, n_dsc, k_dsc, n_csca, k_csca, dsc_mod_len, nLevels ) {
|
||||
|
||||
template DSC_SHA256_RSAPSS(max_cert_bytes, n_dsc, k_dsc, n_csca, k_csca, dsc_mod_len, nLevels ) {
|
||||
signal input raw_dsc_cert[max_cert_bytes];
|
||||
signal input raw_dsc_cert_padded_bytes;
|
||||
signal input csca_modulus[k_csca];
|
||||
@@ -25,33 +27,19 @@ template DSC(max_cert_bytes, n_dsc, k_dsc, n_csca, k_csca, dsc_mod_len, nLevels
|
||||
signal output blinded_dsc_commitment;
|
||||
|
||||
// verify the leaf
|
||||
component leafHasher = LeafHasher(n_csca,k_csca);
|
||||
leafHasher.in <== csca_modulus;
|
||||
signal leaf <== leafHasher.out;
|
||||
|
||||
|
||||
// component poseidon16first = Poseidon(16);
|
||||
// component poseidon16next = Poseidon(16);
|
||||
// component poseidon2last = Poseidon(2);
|
||||
// component poseidonfinal = Poseidon(3);
|
||||
// for (var i = 0; i < 16; i++) {
|
||||
// poseidon16first.inputs[i] <== csca_modulus[i];
|
||||
// poseidon16next.inputs[i] <== csca_modulus[i+16];
|
||||
// }
|
||||
// poseidon2last.inputs[0] <== csca_modulus[32];
|
||||
// poseidon2last.inputs[1] <== csca_modulus[33];
|
||||
// poseidonfinal.inputs[0] <== poseidon16first.out;
|
||||
// poseidonfinal.inputs[1] <== poseidon16next.out;
|
||||
// poseidonfinal.inputs[2] <== poseidon2last.out;
|
||||
// signal leaf <== poseidonfinal.out;
|
||||
|
||||
|
||||
// signal computed_merkle_root <== BinaryMerkleRoot(nLevels)(leaf, nLevels, path, siblings);
|
||||
// merkle_root === computed_merkle_root;
|
||||
signal computed_merkle_root <== BinaryMerkleRoot(nLevels)(leaf, nLevels, path, siblings);
|
||||
merkle_root === computed_merkle_root;
|
||||
|
||||
// variables verification
|
||||
assert(max_cert_bytes % 64 == 0);
|
||||
assert(n_csca * k_csca > max_cert_bytes);
|
||||
assert(n_csca <= (255 \ 2));
|
||||
|
||||
// decode signature to get encoded message
|
||||
// decode signature to get encoded message
|
||||
component rsaDecode = RSASSAPSS_Decode(n_csca, k_csca);
|
||||
rsaDecode.signature <== dsc_signature;
|
||||
rsaDecode.modulus <== csca_modulus;
|
||||
@@ -73,12 +61,12 @@ template DSC(max_cert_bytes, n_dsc, k_dsc, n_csca, k_csca, dsc_mod_len, nLevels
|
||||
dsc_modulus[i] === spbt_1.out[i];
|
||||
}
|
||||
// generate blinded commitment
|
||||
component spbt_2 = SplitSignalsToWords(n_dsc,k_dsc, 230, 9);
|
||||
spbt_2.in <== dsc_modulus;
|
||||
component sstw_1 = SplitSignalsToWords(n_dsc,k_dsc, 230, 9);
|
||||
sstw_1.in <== dsc_modulus;
|
||||
component poseidon = Poseidon(10);
|
||||
poseidon.inputs[0] <== secret;
|
||||
for (var i = 0; i < 9; i++) {
|
||||
poseidon.inputs[i+1] <== spbt_2.out[i];
|
||||
poseidon.inputs[i+1] <== sstw_1.out[i];
|
||||
}
|
||||
blinded_dsc_commitment <== poseidon.out;
|
||||
}
|
||||
@@ -1,112 +0,0 @@
|
||||
pragma circom 2.1.5;
|
||||
|
||||
include "circomlib/circuits/bitify.circom";
|
||||
include "circomlib/circuits/poseidon.circom";
|
||||
include "circomlib/circuits/comparators.circom";
|
||||
include "@zk-email/circuits/lib/rsa.circom";
|
||||
include "binary-merkle-root.circom";
|
||||
include "./utils/splitBytesToWords.circom";
|
||||
include "./utils/splitSignalsToWords.circom";
|
||||
include "./utils/Sha1Bytes.circom";
|
||||
|
||||
|
||||
template DSC_sha1WithRSAEncryption(max_cert_bytes, n_dsc, k_dsc, n_csca, k_csca, dsc_mod_len, nLevels ) {
|
||||
signal input raw_dsc_cert[max_cert_bytes];
|
||||
signal input raw_dsc_cert_padded_bytes;
|
||||
signal input csca_modulus[k_csca];
|
||||
signal input dsc_signature[k_csca];
|
||||
signal input dsc_modulus[k_dsc];
|
||||
signal input start_index;
|
||||
signal input secret;
|
||||
|
||||
signal input merkle_root;
|
||||
signal input path[nLevels];
|
||||
signal input siblings[nLevels];
|
||||
|
||||
signal output blinded_dsc_commitment;
|
||||
|
||||
verify the leaf
|
||||
component poseidon16first = Poseidon(16);
|
||||
component poseidon16next = Poseidon(16);
|
||||
component poseidon2last = Poseidon(2);
|
||||
component poseidonfinal = Poseidon(3);
|
||||
for (var i = 0; i < 16; i++) {
|
||||
poseidon16first.inputs[i] <== csca_modulus[i];
|
||||
poseidon16next.inputs[i] <== csca_modulus[i+16];
|
||||
}
|
||||
poseidon2last.inputs[0] <== csca_modulus[32];
|
||||
poseidon2last.inputs[1] <== csca_modulus[33];
|
||||
poseidonfinal.inputs[0] <== poseidon16first.out;
|
||||
poseidonfinal.inputs[1] <== poseidon16next.out;
|
||||
poseidonfinal.inputs[2] <== poseidon2last.out;
|
||||
signal leaf <== poseidonfinal.out;
|
||||
|
||||
|
||||
signal computed_merkle_root <== BinaryMerkleRoot(nLevels)(leaf, nLevels, path, siblings);
|
||||
merkle_root === computed_merkle_root;
|
||||
|
||||
// variables verification
|
||||
assert(max_cert_bytes % 64 == 0);
|
||||
assert(n_csca * k_csca > max_cert_bytes);
|
||||
assert(n_csca <= (255 \ 2));
|
||||
|
||||
// hash raw TBS certificate
|
||||
signal sha[160] <== Sha1Bytes(max_cert_bytes)(raw_dsc_cert, raw_dsc_cert_padded_bytes);
|
||||
component b2n = Bits2Num(160);
|
||||
for (var i = 0; i < 160; i++) {
|
||||
b2n.in[i] <== sha[159-i];
|
||||
}
|
||||
|
||||
signal sha_bigint <== b2n.out;
|
||||
log("sha_bigint", sha_bigint);
|
||||
|
||||
|
||||
var msg_len = (160 + n_csca)\n_csca;
|
||||
log("msg_len", msg_len);
|
||||
|
||||
component base_msg[msg_len];
|
||||
for (var i = 0; i < msg_len; i++) {
|
||||
base_msg[i] = Bits2Num(n_csca);
|
||||
}
|
||||
for (var i = 0; i < 160; i++) {
|
||||
base_msg[i\n_csca].in[i%n_csca] <== sha[160 - 1 - i];
|
||||
}
|
||||
for (var i = 160; i < n_csca*msg_len; i++) {
|
||||
base_msg[i\n_csca].in[i%n_csca] <== 0;
|
||||
}
|
||||
|
||||
//verify RSA dsc_signature
|
||||
component rsa = RSAVerifier65537(n_csca, k_csca);
|
||||
for (var i = 0; i < msg_len; i++) {
|
||||
rsa.message[i] <== base_msg[i].out;
|
||||
}
|
||||
for (var i = msg_len; i < k_csca; i++) {
|
||||
rsa.message[i] <== 0;
|
||||
}
|
||||
for (var i = 0; i < k_csca; i++) {
|
||||
rsa.modulus[i] <== csca_modulus[i];
|
||||
}
|
||||
for (var i = 0; i < k_csca; i++) {
|
||||
rsa.signature[i] <== dsc_signature[i];
|
||||
}
|
||||
|
||||
// verify DSC csca_modulus
|
||||
component shiftLeft = VarShiftLeft(max_cert_bytes, dsc_mod_len);
|
||||
shiftLeft.in <== raw_dsc_cert;
|
||||
shiftLeft.shift <== start_index;
|
||||
component spbt_1 = SplitBytesToWords(dsc_mod_len, n_dsc, k_dsc);
|
||||
spbt_1.in <== shiftLeft.out;
|
||||
for (var i = 0; i < k_dsc; i++) {
|
||||
dsc_modulus[i] === spbt_1.out[i];
|
||||
}
|
||||
// generate blinded commitment
|
||||
component spbt_2 = SplitSignalsToWords(n_dsc,k_dsc, 230, 9);
|
||||
spbt_2.in <== dsc_modulus;
|
||||
component poseidon = Poseidon(10);
|
||||
poseidon.inputs[0] <== secret;
|
||||
for (var i = 0; i < 9; i++) {
|
||||
poseidon.inputs[i+1] <== spbt_2.out[i];
|
||||
}
|
||||
blinded_dsc_commitment <== poseidon.out;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@ pragma circom 2.1.5;
|
||||
|
||||
include "circomlib/circuits/poseidon.circom";
|
||||
include "@zk-email/circuits/utils/bytes.circom";
|
||||
include "./passport_verifier_sha1WithRSAEncryption_65537.circom";
|
||||
include "./verifier/passport_verifier_sha1WithRSAEncryption_65537.circom";
|
||||
include "binary-merkle-root.circom";
|
||||
include "./utils/splitSignalsToWords.circom";
|
||||
include "../utils/splitSignalsToWords.circom";
|
||||
|
||||
template Register_sha1WithRSAEncryption_65537(n, k, max_datahashes_bytes, nLevels, signatureAlgorithm) {
|
||||
signal input secret;
|
||||
@@ -2,9 +2,9 @@ pragma circom 2.1.5;
|
||||
|
||||
include "circomlib/circuits/poseidon.circom";
|
||||
include "@zk-email/circuits/utils/bytes.circom";
|
||||
include "./passport_verifier_sha256WithRSAEncryption_65537.circom";
|
||||
include "./verifier/passport_verifier_sha256WithRSAEncryption_65537.circom";
|
||||
include "binary-merkle-root.circom";
|
||||
include "./utils/splitSignalsToWords.circom";
|
||||
include "../utils/splitSignalsToWords.circom";
|
||||
|
||||
template Register_sha256WithRSAEncryption_65537(n, k, max_datahashes_bytes, nLevels, signatureAlgorithm) {
|
||||
signal input secret;
|
||||
@@ -2,9 +2,9 @@ pragma circom 2.1.5;
|
||||
|
||||
include "circomlib/circuits/poseidon.circom";
|
||||
include "@zk-email/circuits/utils/bytes.circom";
|
||||
include "./passport_verifier_sha256WithRSASSAPSS_65537.circom";
|
||||
include "./verifier/passport_verifier_sha256WithRSASSAPSS_65537.circom";
|
||||
include "binary-merkle-root.circom";
|
||||
include "./utils/splitSignalsToWords.circom";
|
||||
include "../utils/splitSignalsToWords.circom";
|
||||
|
||||
template register_sha256WithRSASSAPSS_65537(n, k, max_datahashes_bytes, nLevels, signatureAlgorithm) {
|
||||
signal input secret;
|
||||
@@ -2,9 +2,9 @@ pragma circom 2.1.5;
|
||||
|
||||
include "circomlib/circuits/poseidon.circom";
|
||||
include "@zk-email/circuits/utils/bytes.circom";
|
||||
include "./passport_verifier_sha256WithRSASSAPSS_65537.circom";
|
||||
include "./utils/chunk_data.circom";
|
||||
include "./utils/compute_pubkey_leaf.circom";
|
||||
include "./verifier/passport_verifier_sha256WithRSASSAPSS_65537.circom";
|
||||
include "../utils/chunk_data.circom";
|
||||
include "../utils/compute_pubkey_leaf.circom";
|
||||
include "binary-merkle-root.circom";
|
||||
|
||||
template register_sha256WithRSASSAPSS_65537(n, k, max_datahashes_bytes, nLevels, signatureAlgorithm) {
|
||||
@@ -1,9 +1,9 @@
|
||||
pragma circom 2.1.5;
|
||||
|
||||
include "./utils/rsaPkcs1.circom";
|
||||
include "@zk-email/circuits/utils/bytes.circom";
|
||||
include "./utils/Sha1BytesStatic.circom";
|
||||
include "./utils/Sha1Bytes.circom";
|
||||
include "../../utils/Sha1BytesStatic.circom";
|
||||
include "../../utils/Sha1Bytes.circom";
|
||||
include "../../utils/rsaPkcs1.circom";
|
||||
include "dmpierre/sha1-circom/circuits/sha1.circom";
|
||||
|
||||
template PassportVerifier_sha1WithRSAEncryption_65537(n, k, max_datahashes_bytes) {
|
||||
@@ -4,7 +4,7 @@ include "@zk-email/circuits/lib/rsa.circom";
|
||||
include "@zk-email/circuits/utils/bytes.circom";
|
||||
include "@zk-email/circuits/lib/sha.circom";
|
||||
include "@zk-email/circuits/utils/array.circom";
|
||||
include "./utils/Sha256BytesStatic.circom";
|
||||
include "../../utils/Sha256BytesStatic.circom";
|
||||
|
||||
template PassportVerifier_sha256WithRSAEncryption_65537(n, k, max_datahashes_bytes) {
|
||||
var hashLen = 32;
|
||||
@@ -4,8 +4,8 @@ pragma circom 2.1.5;
|
||||
include "@zk-email/circuits/utils/bytes.circom";
|
||||
include "@zk-email/circuits/lib/sha.circom";
|
||||
include "@zk-email/circuits/utils/array.circom";
|
||||
include "./utils/Sha256BytesStatic.circom";
|
||||
include "./utils/RSASSAPSS.circom";
|
||||
include "../../utils/Sha256BytesStatic.circom";
|
||||
include "../../utils/RSASSAPSS.circom";
|
||||
include "@zk-email/circuits/lib/fp.circom";
|
||||
|
||||
template PassportVerifier_sha256WithRSASSAPSS_65537(n, k, max_datahashes_bytes) {
|
||||
@@ -1,5 +0,0 @@
|
||||
pragma circom 2.1.6;
|
||||
|
||||
include "../../dsc_sha1WithRSAEncryption.circom";
|
||||
|
||||
component main { public [ merkle_root ] } = DSC_sha1WithRSAEncryption(1664,121 ,17 ,121, 17, 256, 12);
|
||||
@@ -1,5 +0,0 @@
|
||||
pragma circom 2.1.6;
|
||||
|
||||
include "../../dsc.circom";
|
||||
|
||||
component main { public [ merkle_root ] } = DSC(1664,64 ,32 ,64, 32, 256, 12);
|
||||
@@ -1,5 +0,0 @@
|
||||
pragma circom 2.1.6;
|
||||
|
||||
include "../../dsc_sha256WithRSASSAPSS.circom";
|
||||
|
||||
component main { public [ merkle_root ] } = DSC(1664,64 ,32 ,64, 32, 256, 12);
|
||||
5
circuits/circuits/tests/dsc/dsc_sha1_rsa_2048.circom
Normal file
5
circuits/circuits/tests/dsc/dsc_sha1_rsa_2048.circom
Normal file
@@ -0,0 +1,5 @@
|
||||
pragma circom 2.1.6;
|
||||
|
||||
include "../../dsc/dsc_sha1_rsa.circom";
|
||||
|
||||
component main { public [ merkle_root ] } = DSC_SHA1_RSA(960,121 ,17 ,121, 17, 256, 12);
|
||||
5
circuits/circuits/tests/dsc/dsc_sha256_rsa_2048.circom
Normal file
5
circuits/circuits/tests/dsc/dsc_sha256_rsa_2048.circom
Normal file
@@ -0,0 +1,5 @@
|
||||
pragma circom 2.1.6;
|
||||
|
||||
include "../../dsc/dsc_sha256_rsa.circom";
|
||||
|
||||
component main { public [ merkle_root ] } = DSC_SHA256_RSA(960,121 ,17 ,121, 17, 256, 12);
|
||||
@@ -0,0 +1,5 @@
|
||||
pragma circom 2.1.6;
|
||||
|
||||
include "../../dsc/dsc_sha256_rsapss.circom";
|
||||
|
||||
component main { public [ merkle_root ] } = DSC_SHA256_RSAPSS(960,64 ,32 ,64, 32, 256, 12);
|
||||
@@ -1,6 +1,6 @@
|
||||
pragma circom 2.1.6;
|
||||
|
||||
include "../utils/isOlderThan.circom";
|
||||
include "../../utils/isOlderThan.circom";
|
||||
|
||||
template isOlderThan_tester() {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
pragma circom 2.1.6;
|
||||
|
||||
include "../utils/IsValid.circom";
|
||||
include "../../utils/isValid.circom";
|
||||
|
||||
template IsValid_tester() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
pragma circom 2.1.6;
|
||||
|
||||
include "../utils/leafHasher.circom";
|
||||
include "../../utils/leafHasher.circom";
|
||||
|
||||
component main = LeafHasher(32);
|
||||
3
circuits/circuits/tests/utils/rsa_verifier.circom
Normal file
3
circuits/circuits/tests/utils/rsa_verifier.circom
Normal file
@@ -0,0 +1,3 @@
|
||||
include "@zk-email/circuits/lib/rsa.circom";
|
||||
|
||||
component main = RSAVerifier65537(64, 32);
|
||||
@@ -2,25 +2,23 @@ pragma circom 2.1.6;
|
||||
|
||||
include "circomlib/circuits/poseidon.circom";
|
||||
|
||||
template LeafHasher (k) {
|
||||
template LeafHasher (n,k) {
|
||||
signal input in[k];
|
||||
signal output out;
|
||||
|
||||
component splitSignalsToWords = SplitSignalsToWords(n,k,64,64);
|
||||
splitSignalsToWords.in <== in;
|
||||
|
||||
component hash[4];
|
||||
for (var i = 0; i < 4 ; i ++){
|
||||
hash[i] = Poseidon(16);
|
||||
}
|
||||
for (var i = 0; i < 64 ; i ++){
|
||||
if (i < k ){
|
||||
hash[ i % 4 ].inputs[ i \ 4 ] <== in[i];
|
||||
}
|
||||
else{
|
||||
hash[ i % 4 ].inputs[ i \ 4 ] <== 0;
|
||||
}
|
||||
hash[ i % 4 ].inputs[ i \ 4 ] <== splitSignalsToWords.out[i];
|
||||
}
|
||||
component finalHash = Poseidon(4);
|
||||
for (var i = 0 ; i < 4 ; i++){
|
||||
finalHash.inputs[i] <== hash[i].out;
|
||||
}
|
||||
log(finalHash.out);
|
||||
out <== finalHash.out;
|
||||
}
|
||||
|
||||
@@ -2,24 +2,20 @@ pragma circom 2.1.6;
|
||||
|
||||
include "circomlib/circuits/poseidon.circom";
|
||||
|
||||
template LeafHasher2 (n,k) {
|
||||
template LeafHasher (k) {
|
||||
signal input in[k];
|
||||
signal output out;
|
||||
|
||||
component splitSignalsToWords = SplitSignalsToWords(n,k,64,64);
|
||||
splitSignalsToWords.in <== in;
|
||||
|
||||
component hash[4];
|
||||
for (var i = 0; i < 4 ; i ++){
|
||||
hash[i] = Poseidon(16);
|
||||
}
|
||||
for (var i = 0; i < 64 ; i ++){
|
||||
// if (i < k ){
|
||||
hash[ i % 4 ].inputs[ i \ 4 ] <== splitSignalsToWords.out[i];
|
||||
// }
|
||||
// else{
|
||||
// hash[ i % 4 ].inputs[ i \ 4 ] <== 0;
|
||||
// }
|
||||
if (i < k ){
|
||||
hash[ i % 4 ].inputs[ i \ 4 ] <== in[i];
|
||||
}
|
||||
else{
|
||||
hash[ i % 4 ].inputs[ i \ 4 ] <== 0;
|
||||
}
|
||||
}
|
||||
component finalHash = Poseidon(4);
|
||||
for (var i = 0 ; i < 4 ; i++){
|
||||
@@ -4,7 +4,7 @@
|
||||
"author": "",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"test": "yarn ts-mocha test/**/*.test.ts --exit",
|
||||
"test": "yarn ts-mocha tests/**/*.test.ts --exit",
|
||||
"install-circuits": "cd ../common && yarn && cd ../circuits && yarn"
|
||||
},
|
||||
"dependencies": {
|
||||
@@ -18,6 +18,8 @@
|
||||
"@zk-kit/circuits": "^1.0.0-beta",
|
||||
"@zk-kit/imt": "https://gitpkg.now.sh/0xturboblitz/zk-kit/packages/imt?6d417675",
|
||||
"@zk-kit/lean-imt": "^2.0.1",
|
||||
"asn1": "^0.2.6",
|
||||
"asn1js": "^3.0.5",
|
||||
"chai-as-promised": "^7.1.1",
|
||||
"circom_tester": "github:Atomic-Buy/circom_tester#main",
|
||||
"circomlib": "^2.0.5",
|
||||
@@ -26,7 +28,8 @@
|
||||
"elliptic": "^6.5.5",
|
||||
"js-sha256": "^0.10.1",
|
||||
"jsrsasign": "^11.1.0",
|
||||
"node-forge": "^1.3.1",
|
||||
"modpow": "^1.0.0",
|
||||
"node-forge": "https://github.com/remicolin/forge",
|
||||
"poseidon-lite": "^0.2.0",
|
||||
"snarkjs": "^0.7.1",
|
||||
"typescript": "^5.3.3"
|
||||
@@ -40,4 +43,4 @@
|
||||
"ts-mocha": "^10.0.0",
|
||||
"ts-node": "^10.9.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,10 +4,11 @@ source "scripts/download_ptau.sh"
|
||||
|
||||
build_circuit() {
|
||||
local CIRCUIT_NAME=$1
|
||||
local CIRCUIT_TYPE=$2
|
||||
local START_TIME=$(date +%s)
|
||||
|
||||
echo "compiling circuit: $CIRCUIT_NAME"
|
||||
circom circuits/${CIRCUIT_NAME}.circom -l node_modules -l ./node_modules/@zk-kit/binary-merkle-root.circom/src -l ./node_modules/circomlib/circuits --r1cs --O1 --wasm -c --output build
|
||||
circom circuits/${CIRCUIT_TYPE}/${CIRCUIT_NAME}.circom -l node_modules -l ./node_modules/@zk-kit/binary-merkle-root.circom/src -l ./node_modules/circomlib/circuits --r1cs --O1 --wasm -c --output build
|
||||
|
||||
echo "building zkey"
|
||||
yarn snarkjs groth16 setup build/${CIRCUIT_NAME}.r1cs build/powersOfTau28_hez_final_20.ptau build/${CIRCUIT_NAME}.zkey
|
||||
@@ -27,11 +28,23 @@ build_circuit() {
|
||||
echo "Size of ${CIRCUIT_NAME}_final.zkey: $(wc -c <build/${CIRCUIT_NAME}_final.zkey) bytes"
|
||||
}
|
||||
|
||||
#declare -a CIRCUITS=("register_sha256WithRSAEncryption_65537" "register_sha1WithRSAEncryption_65537" "register_sha256WithRSAEncryption_65537" "disclose")
|
||||
declare -a CIRCUITS=("register_sha256WithRSAEncryption_65537")
|
||||
# Define circuits and their types
|
||||
# name:folder:build_flag
|
||||
# set build_flag to false if you want to skip the build
|
||||
CIRCUITS=(
|
||||
"register_sha256WithRSAEncryption_65537:register:true"
|
||||
"register_sha1WithRSAEncryption_65537:register:true"
|
||||
"disclose:disclose:true"
|
||||
)
|
||||
|
||||
TOTAL_START_TIME=$(date +%s)
|
||||
for CIRCUIT_NAME in "${CIRCUITS[@]}"; do
|
||||
build_circuit "$CIRCUIT_NAME"
|
||||
for circuit in "${CIRCUITS[@]}"; do
|
||||
IFS=':' read -r CIRCUIT_NAME CIRCUIT_TYPE BUILD_FLAG <<< "$circuit"
|
||||
if [ "$BUILD_FLAG" = "true" ]; then
|
||||
echo "Debug: Building circuit $CIRCUIT_NAME of type $CIRCUIT_TYPE"
|
||||
build_circuit "$CIRCUIT_NAME" "$CIRCUIT_TYPE"
|
||||
else
|
||||
echo "Skipping build for $CIRCUIT_NAME"
|
||||
fi
|
||||
done
|
||||
echo "Total completed in $(($(date +%s) - TOTAL_START_TIME)) seconds"
|
||||
@@ -1,49 +0,0 @@
|
||||
import { assert, expect } from 'chai'
|
||||
import fs from 'fs'
|
||||
const forge = require('node-forge');
|
||||
import path from 'path';
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { splitToWords } from '../../common/src/utils/utils';
|
||||
import { sha256Pad } from '../../common/src/utils/shaPad';
|
||||
import { findStartIndex, getCSCAInputs } from '../../common/src/utils/csca';
|
||||
|
||||
describe('DSC chain certificate', function () {
|
||||
this.timeout(0); // Disable timeout
|
||||
let circuit;
|
||||
const n_dsc = 121;
|
||||
const k_dsc = 17;
|
||||
const n_csca = 121;
|
||||
const k_csca = 17;
|
||||
const max_cert_bytes = 1664;
|
||||
const dsc = fs.readFileSync('../common/src/mock_certificates/sha1_rsa_2048/mock_dsc.crt', 'utf8');
|
||||
const csca = fs.readFileSync('../common/src/mock_certificates/sha1_rsa_2048/mock_csca.crt', 'utf8');
|
||||
const dscCert = forge.pki.certificateFromPem(dsc);
|
||||
const cscaCert = forge.pki.certificateFromPem(csca);
|
||||
|
||||
|
||||
const inputs = getCSCAInputs(BigInt(0).toString(), dscCert, cscaCert, n_dsc, k_dsc, n_csca, k_csca, max_cert_bytes, true);
|
||||
console.log("inputs:", inputs);
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(
|
||||
path.join(__dirname, '../circuits/tests/certificates/dsc_sha1_rsa_2048.circom'),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
"./node_modules/@zk-kit/binary-merkle-root.circom/src",
|
||||
"./node_modules/circomlib/circuits"
|
||||
]
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('should compile and load the circuit', () => {
|
||||
expect(circuit).to.not.be.undefined;
|
||||
})
|
||||
|
||||
it('should compute the correct output', async () => {
|
||||
console.log("Inputs:", inputs);
|
||||
const witness = await circuit.calculateWitness(inputs, true);
|
||||
console.log(witness);
|
||||
})
|
||||
|
||||
})
|
||||
@@ -1,95 +0,0 @@
|
||||
import { assert, expect } from 'chai'
|
||||
import fs from 'fs'
|
||||
const forge = require('node-forge');
|
||||
import path from 'path';
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { splitToWords } from '../../common/src/utils/utils';
|
||||
import { sha256Pad } from '../../common/src/utils/shaPad';
|
||||
import { computeLeafFromModulus, findStartIndex, getCSCAInputs } from '../../common/src/utils/cscasha1';
|
||||
|
||||
describe('DSC chain certificate', function () {
|
||||
this.timeout(0); // Disable timeout
|
||||
let circuit;
|
||||
const n_dsc = 121;
|
||||
const k_dsc = 17;
|
||||
const n_csca = 121;
|
||||
const k_csca = 34;
|
||||
const max_cert_bytes = 1664;
|
||||
const dsc = fs.readFileSync('../common/src/mock_certificates/sha1_rsa_4096/mock_dsc.crt', 'utf8');
|
||||
const csca = fs.readFileSync('../common/src/mock_certificates/sha1_rsa_4096/mock_csca.crt', 'utf8');
|
||||
const dscCert = forge.pki.certificateFromPem(dsc);
|
||||
const cscaCert = forge.pki.certificateFromPem(csca);
|
||||
console.log('DSC Issuer:', dscCert.issuer.getField('CN').value);
|
||||
console.log('CSCA Subject:', cscaCert.subject.getField('CN').value);
|
||||
console.log('TBS Certificate length:', forge.asn1.toDer(dscCert.tbsCertificate).getBytes().length);
|
||||
console.log('DSC Signature length:', dscCert.signature.length);
|
||||
console.log('CSCA Public Key length:', cscaCert.publicKey.n.toString(16).length * 4);
|
||||
|
||||
describe('DSC chain certificate', () => {
|
||||
describe('DSC chain certificate', () => {
|
||||
it('should verify that the DSC is signed by the CSCA', () => {
|
||||
// Method 1: Using verifyCertificateChain
|
||||
const caStore = forge.pki.createCaStore([cscaCert]);
|
||||
try {
|
||||
const verified = forge.pki.verifyCertificateChain(caStore, [dscCert]);
|
||||
console.log('Certificate chain verified:', verified);
|
||||
expect(verified).to.be.true;
|
||||
} catch (error) {
|
||||
console.error('Certificate chain verification failed:', error);
|
||||
throw error;
|
||||
}
|
||||
|
||||
// Method 2: Manual verification
|
||||
const tbsCertificate = forge.asn1.toDer(dscCert.tbsCertificate).getBytes();
|
||||
const signature = dscCert.signature;
|
||||
|
||||
const md = forge.md.sha1.create();
|
||||
md.update(tbsCertificate, 'raw');
|
||||
|
||||
const publicKey = cscaCert.publicKey;
|
||||
const digestBytes = md.digest().getBytes();
|
||||
const digestBigInt = BigInt('0x' + Buffer.from(digestBytes, 'binary').toString('hex'));
|
||||
console.log('Digest as BigInt:', digestBigInt);
|
||||
try {
|
||||
const verified = publicKey.verify(md.digest().getBytes(), signature);
|
||||
console.log('Manual signature verification:', verified);
|
||||
expect(verified).to.be.true;
|
||||
} catch (error) {
|
||||
console.error('Manual signature verification failed:', error);
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
const inputs = getCSCAInputs(BigInt(0).toString(), dscCert, cscaCert, n_dsc, k_dsc, n_csca, k_csca, max_cert_bytes, true);
|
||||
|
||||
//console.log("inputs:", JSON.stringify(inputs, null, 2));
|
||||
fs.writeFileSync('inputs.json', JSON.stringify(inputs, null, 2));
|
||||
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(
|
||||
path.join(__dirname, '../circuits/tests/certificates/dsc_sha1_rsa_4096.circom'),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
"./node_modules/@zk-kit/binary-merkle-root.circom/src",
|
||||
"./node_modules/circomlib/circuits"
|
||||
]
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('should compile and load the circuit', () => {
|
||||
expect(circuit).to.not.be.undefined;
|
||||
})
|
||||
|
||||
it('should compute the correct output', async () => {
|
||||
//console.log("Inputs:", inputs);
|
||||
const witness = await circuit.calculateWitness(inputs, true);
|
||||
const blinded_dsc_commitment = (await circuit.getOutput(witness, ["blinded_dsc_commitment"])).blinded_dsc_commitment;
|
||||
console.log("blinded_dsc_commitment", blinded_dsc_commitment)
|
||||
})
|
||||
|
||||
});
|
||||
});
|
||||
@@ -1,63 +0,0 @@
|
||||
import { assert, expect } from 'chai'
|
||||
import fs from 'fs'
|
||||
const forge = require('node-forge');
|
||||
import path from 'path';
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { splitToWords } from '../../common/src/utils/utils';
|
||||
import { sha256Pad } from '../../common/src/utils/shaPad';
|
||||
import { findStartIndex, getCSCAInputs } from '../../common/src/utils/csca';
|
||||
|
||||
describe('DSC chain certificate', function () {
|
||||
this.timeout(0); // Disable timeout
|
||||
let circuit;
|
||||
const n_dsc = 64;
|
||||
const k_dsc = 32;
|
||||
const n_csca = 64;
|
||||
const k_csca = 32;
|
||||
const max_cert_bytes = 1664;
|
||||
const dsc = fs.readFileSync('../common/src/mock_certificates/sha256_rsa_2048/mock_dsc.crt', 'utf8');
|
||||
const csca = fs.readFileSync('../common/src/mock_certificates/sha256_rsa_2048/mock_csca.crt', 'utf8');
|
||||
const dscCert = forge.pki.certificateFromPem(dsc);
|
||||
const cscaCert = forge.pki.certificateFromPem(csca);
|
||||
|
||||
|
||||
const inputs = getCSCAInputs(BigInt(0).toString(), dscCert, cscaCert, n_dsc, k_dsc, n_csca, k_csca, max_cert_bytes, true);
|
||||
console.log("inputs:", inputs);
|
||||
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(
|
||||
path.join(__dirname, '../circuits/tests/certificates/dsc_sha256_rsa_2048.circom'),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
"./node_modules/@zk-kit/binary-merkle-root.circom/src",
|
||||
"./node_modules/circomlib/circuits"
|
||||
]
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(
|
||||
path.join(__dirname, '../circuits/tests/certificates/dsc_sha256_rsa_2048.circom'),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
"./node_modules/@zk-kit/binary-merkle-root.circom/src",
|
||||
"./node_modules/circomlib/circuits"
|
||||
]
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('should compile and load the circuit', () => {
|
||||
expect(circuit).to.not.be.undefined;
|
||||
})
|
||||
|
||||
it('should compute the correct output', async () => {
|
||||
console.log("Inputs:", inputs);
|
||||
const witness = await circuit.calculateWitness(inputs, true);
|
||||
console.log(witness);
|
||||
})
|
||||
|
||||
})
|
||||
@@ -1,49 +0,0 @@
|
||||
import { assert, expect } from 'chai'
|
||||
import fs from 'fs'
|
||||
const forge = require('node-forge');
|
||||
import path from 'path';
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { getCSCAInputs } from '../../common/src/utils/csca';
|
||||
|
||||
describe('DSC chain certificate', function () {
|
||||
this.timeout(0); // Disable timeout
|
||||
let circuit;
|
||||
const n_dsc = 121;
|
||||
const k_dsc = 17;
|
||||
const n_csca = 121;
|
||||
const k_csca = 34;
|
||||
const max_cert_bytes = 1664;
|
||||
const dsc = fs.readFileSync('../common/src/mock_certificates/sha256_rsa_4096/mock_dsc.crt', 'utf8');
|
||||
const csca = fs.readFileSync('../common/src/mock_certificates/sha256_rsa_4096/mock_csca.crt', 'utf8');
|
||||
const dscCert = forge.pki.certificateFromPem(dsc);
|
||||
const cscaCert = forge.pki.certificateFromPem(csca);
|
||||
const inputs = getCSCAInputs(BigInt(0).toString(), dscCert, cscaCert, n_dsc, k_dsc, n_csca, k_csca, max_cert_bytes, true);
|
||||
|
||||
console.log("inputs:", JSON.stringify(inputs, null, 2));
|
||||
fs.writeFileSync('inputs.json', JSON.stringify(inputs, null, 2));
|
||||
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(
|
||||
path.join(__dirname, '../circuits/tests/certificates/dsc_sha256_rsa_4096.circom'),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
"./node_modules/@zk-kit/binary-merkle-root.circom/src",
|
||||
"./node_modules/circomlib/circuits"
|
||||
]
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
// it('should compile and load the circuit', () => {
|
||||
// expect(circuit).to.not.be.undefined;
|
||||
// })
|
||||
|
||||
it('should compute the correct output', async () => {
|
||||
//console.log("Inputs:", inputs);
|
||||
const witness = await circuit.calculateWitness(inputs, true);
|
||||
const blinded_dsc_commitment = (await circuit.getOutput(witness, ["blinded_dsc_commitment"])).blinded_dsc_commitment;
|
||||
console.log("blinded_dsc_commitment", blinded_dsc_commitment)
|
||||
})
|
||||
|
||||
})
|
||||
@@ -1,54 +0,0 @@
|
||||
import { assert, expect } from 'chai'
|
||||
import fs from 'fs'
|
||||
import jsrsasign from 'jsrsasign';
|
||||
import path from 'path';
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { splitToWords } from '../../common/src/utils/utils';
|
||||
import { sha256Pad } from '../../common/src/utils/shaPad';
|
||||
import { findStartIndex, getCSCAInputs } from '../../common/src/utils/csca';
|
||||
import { readCertificate } from '../../common/src/utils/certificates';
|
||||
|
||||
describe('DSC chain certificate', function () {
|
||||
this.timeout(0); // Disable timeout
|
||||
let circuit;
|
||||
const n_dsc = 64;
|
||||
const k_dsc = 32;
|
||||
const n_csca = 64;
|
||||
const k_csca = 32;
|
||||
const max_cert_bytes = 1664;
|
||||
const dsc_path = path.join(__dirname, '../../common/src/mock_certificates/sha256_rsapss_2048/mock_dsc.pem');
|
||||
const csca_path = path.join(__dirname, '../../common/src/mock_certificates/sha256_rsapss_2048/mock_csca.pem');
|
||||
|
||||
|
||||
|
||||
const dscCert = readCertificate(dsc_path);
|
||||
const cscaCert = readCertificate(csca_path);
|
||||
|
||||
|
||||
const inputs = getCSCAInputs(BigInt(0).toString(), dscCert, cscaCert, n_dsc, k_dsc, n_csca, k_csca, max_cert_bytes, true);
|
||||
console.log("inputs:", inputs);
|
||||
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(
|
||||
path.join(__dirname, '../circuits/tests/certificates/dsc_sha256_rsapss_2048.circom'),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
"./node_modules/@zk-kit/binary-merkle-root.circom/src",
|
||||
"./node_modules/circomlib/circuits"
|
||||
]
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('should compile and load the circuit', () => {
|
||||
expect(circuit).to.not.be.undefined;
|
||||
})
|
||||
|
||||
it('should compute the correct output', async () => {
|
||||
console.log("Inputs:", inputs);
|
||||
const witness = await circuit.calculateWitness(inputs, true);
|
||||
console.log(witness);
|
||||
})
|
||||
|
||||
})
|
||||
@@ -1,26 +1,27 @@
|
||||
import { assert, expect } from 'chai'
|
||||
import path from "path";
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { mockPassportData_sha256WithRSAEncryption_65537 } from '../../common/src/utils/mockPassportData';
|
||||
import { formatMrz, packBytes } from '../../common/src/utils/utils';
|
||||
import { attributeToPosition, COMMITMENT_TREE_DEPTH } from "../../common/src/constants/constants";
|
||||
import { mockPassportData_sha256_rsa_65537 } from '../../../common/src/constants/mockPassportData';
|
||||
import { formatMrz, packBytes } from '../../../common/src/utils/utils';
|
||||
import { attributeToPosition, COMMITMENT_TREE_DEPTH } from "../../../common/src/constants/constants";
|
||||
import { poseidon1, poseidon2, poseidon6 } from "poseidon-lite";
|
||||
import { LeanIMT } from "@zk-kit/lean-imt";
|
||||
import { getLeaf } from '../../common/src/utils/pubkeyTree';
|
||||
import { generateCircuitInputsDisclose } from '../../common/src/utils/generateInputs';
|
||||
import { unpackReveal } from '../../common/src/utils/revealBitmap';
|
||||
import { getLeaf } from '../../../common/src/utils/pubkeyTree';
|
||||
import { generateCircuitInputsDisclose } from '../../../common/src/utils/generateInputs';
|
||||
import { unpackReveal } from '../../../common/src/utils/revealBitmap';
|
||||
|
||||
describe("start testing disclose.circom", function () {
|
||||
describe("Disclose", function () {
|
||||
this.timeout(0);
|
||||
let inputs: any;
|
||||
let circuit: any;
|
||||
let w: any;
|
||||
let passportData = mockPassportData_sha256WithRSAEncryption_65537;
|
||||
let passportData = mockPassportData_sha256_rsa_65537;
|
||||
let attestation_id: string;
|
||||
let tree: any;
|
||||
const attestation_name = "E-PASSPORT";
|
||||
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(path.join(__dirname, "../circuits/disclose.circom"),
|
||||
circuit = await wasm_tester(path.join(__dirname, "../../circuits/disclose/disclose.circom"),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
@@ -31,7 +32,6 @@ describe("start testing disclose.circom", function () {
|
||||
);
|
||||
|
||||
const secret = BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString();
|
||||
const attestation_name = "E-PASSPORT";
|
||||
attestation_id = poseidon1([
|
||||
BigInt(Buffer.from(attestation_name).readUIntBE(0, 6))
|
||||
]).toString();
|
||||
@@ -82,8 +82,8 @@ describe("start testing disclose.circom", function () {
|
||||
const nullifier_js = poseidon2([inputs.secret, inputs.scope]).toString();
|
||||
const nullifier_circom = (await circuit.getOutput(w, ["nullifier"])).nullifier;
|
||||
|
||||
console.log("nullifier_circom", nullifier_circom);
|
||||
console.log("nullifier_js", nullifier_js);
|
||||
//console.log("nullifier_circom", nullifier_circom);
|
||||
//console.log("nullifier_js", nullifier_js);
|
||||
expect(nullifier_circom).to.equal(nullifier_js);
|
||||
});
|
||||
|
||||
@@ -174,7 +174,7 @@ describe("start testing disclose.circom", function () {
|
||||
const revealedData_packed = await circuit.getOutput(w, ["revealedData_packed[3]"])
|
||||
|
||||
const reveal_unpacked = unpackReveal(revealedData_packed);
|
||||
console.log("reveal_unpacked", reveal_unpacked)
|
||||
//console.log("reveal_unpacked", reveal_unpacked)
|
||||
|
||||
expect(reveal_unpacked[88]).to.equal("1");
|
||||
expect(reveal_unpacked[89]).to.equal("8");
|
||||
@@ -194,7 +194,7 @@ describe("start testing disclose.circom", function () {
|
||||
const revealedData_packed = await circuit.getOutput(w, ["revealedData_packed[3]"])
|
||||
|
||||
const reveal_unpacked = unpackReveal(revealedData_packed);
|
||||
console.log("reveal_unpacked", reveal_unpacked)
|
||||
//console.log("reveal_unpacked", reveal_unpacked)
|
||||
|
||||
expect(reveal_unpacked[88]).to.equal("\x00");
|
||||
expect(reveal_unpacked[89]).to.equal("\x00");
|
||||
57
circuits/tests/dsc/dsc_sha1_rsa_2048.test.ts
Normal file
57
circuits/tests/dsc/dsc_sha1_rsa_2048.test.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import { assert, expect } from 'chai'
|
||||
import fs from 'fs'
|
||||
const forge = require('node-forge');
|
||||
import path from 'path';
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { getCSCAInputs } from '../../../common/src/utils/csca';
|
||||
import { mock_dsc_sha1_rsa_2048, mock_csca_sha1_rsa_2048 } from '../../../common/src/constants/mockCertificates';
|
||||
|
||||
describe('DSC chain certificate - SHA1 RSA', function () {
|
||||
this.timeout(0); // Disable timeout
|
||||
let circuit;
|
||||
const n_dsc = 121;
|
||||
const k_dsc = 17;
|
||||
const n_csca = 121;
|
||||
const k_csca = 17;
|
||||
const max_cert_bytes = 960;
|
||||
const dscCert = forge.pki.certificateFromPem(mock_dsc_sha1_rsa_2048);
|
||||
const cscaCert = forge.pki.certificateFromPem(mock_csca_sha1_rsa_2048);
|
||||
|
||||
const inputs = getCSCAInputs(BigInt(0).toString(), dscCert, cscaCert, n_dsc, k_dsc, n_csca, k_csca, max_cert_bytes, true);
|
||||
|
||||
before(async () => {
|
||||
const circuitPath = path.resolve(__dirname, '../../circuits/tests/dsc/dsc_sha1_rsa_2048.circom');
|
||||
circuit = await wasm_tester(
|
||||
circuitPath,
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
"./node_modules/@zk-kit/binary-merkle-root.circom/src",
|
||||
"./node_modules/circomlib/circuits"
|
||||
]
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('verify dsc has been signed by the csca', () => {
|
||||
const tbsCertAsn1 = forge.pki.getTBSCertificate(dscCert);
|
||||
const tbsCertDer = forge.asn1.toDer(tbsCertAsn1).getBytes();
|
||||
const md = forge.md.sha1.create();
|
||||
md.update(tbsCertDer);
|
||||
const tbsHash = md.digest().getBytes();
|
||||
const signature = dscCert.signature;
|
||||
const cscaCert = forge.pki.certificateFromPem(mock_csca_sha1_rsa_2048);
|
||||
const publicKey = cscaCert.publicKey;
|
||||
const verified = publicKey.verify(tbsHash, signature);
|
||||
expect(verified).to.be.true;
|
||||
})
|
||||
|
||||
it('should compile and load the circuit', () => {
|
||||
expect(circuit).to.not.be.undefined;
|
||||
})
|
||||
|
||||
it('should compute the correct output', async () => {
|
||||
const witness = await circuit.calculateWitness(inputs, true);
|
||||
})
|
||||
|
||||
})
|
||||
56
circuits/tests/dsc/dsc_sha256_rsa_2048.test.ts
Normal file
56
circuits/tests/dsc/dsc_sha256_rsa_2048.test.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import { assert, expect } from 'chai'
|
||||
import fs from 'fs'
|
||||
const forge = require('node-forge');
|
||||
import path from 'path';
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { getCSCAInputs } from '../../../common/src/utils/csca';
|
||||
import { mock_dsc_sha256_rsa_2048, mock_csca_sha256_rsa_2048 } from '../../../common/src/constants/mockCertificates';
|
||||
|
||||
describe('DSC chain certificate - SHA256 RSA', function () {
|
||||
this.timeout(0); // Disable timeout
|
||||
let circuit;
|
||||
const n_dsc = 121;
|
||||
const k_dsc = 17;
|
||||
const n_csca = 121;
|
||||
const k_csca = 17;
|
||||
const max_cert_bytes = 960;
|
||||
const dscCert = forge.pki.certificateFromPem(mock_dsc_sha256_rsa_2048);
|
||||
const cscaCert = forge.pki.certificateFromPem(mock_csca_sha256_rsa_2048);
|
||||
|
||||
const inputs = getCSCAInputs(BigInt(0).toString(), dscCert, cscaCert, n_dsc, k_dsc, n_csca, k_csca, max_cert_bytes, true);
|
||||
|
||||
before(async () => {
|
||||
const circuitPath = path.resolve(__dirname, '../../circuits/tests/dsc/dsc_sha256_rsa_2048.circom');
|
||||
circuit = await wasm_tester(
|
||||
circuitPath,
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
"./node_modules/@zk-kit/binary-merkle-root.circom/src",
|
||||
"./node_modules/circomlib/circuits"
|
||||
]
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('verify dsc has been signed by the csca', () => {
|
||||
const tbsCertAsn1 = forge.pki.getTBSCertificate(dscCert);
|
||||
const tbsCertDer = forge.asn1.toDer(tbsCertAsn1).getBytes();
|
||||
const md = forge.md.sha256.create();
|
||||
md.update(tbsCertDer);
|
||||
const tbsHash = md.digest().getBytes();
|
||||
const signature = dscCert.signature;
|
||||
const publicKey = cscaCert.publicKey;
|
||||
const verified = publicKey.verify(tbsHash, signature);
|
||||
expect(verified).to.be.true;
|
||||
})
|
||||
|
||||
it('should compile and load the circuit', () => {
|
||||
expect(circuit).to.not.be.undefined;
|
||||
})
|
||||
|
||||
it('should compute the correct output', async () => {
|
||||
const witness = await circuit.calculateWitness(inputs, true);
|
||||
})
|
||||
|
||||
})
|
||||
87
circuits/tests/dsc/dsc_sha256_rsapss_2048.test.ts
Normal file
87
circuits/tests/dsc/dsc_sha256_rsapss_2048.test.ts
Normal file
@@ -0,0 +1,87 @@
|
||||
import { assert, expect } from 'chai'
|
||||
import fs from 'fs'
|
||||
const forge = require('node-forge');
|
||||
import path from 'path';
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { getCSCAInputs } from '../../../common/src/utils/csca';
|
||||
import crypto from 'crypto';
|
||||
import { mock_dsc_sha256_rsapss_2048, mock_csca_sha256_rsapss_2048 } from '../../../common/src/constants/mockCertificates';
|
||||
|
||||
describe('DSC chain certificate - SHA256 RSA-PSS', function () {
|
||||
this.timeout(0); // Disable timeout
|
||||
let circuit;
|
||||
const n_dsc = 64;
|
||||
const k_dsc = 32;
|
||||
const n_csca = 64;
|
||||
const k_csca = 32;
|
||||
const max_cert_bytes = 960;
|
||||
const dscCert = forge.pki.certificateFromPem(mock_dsc_sha256_rsapss_2048);
|
||||
const cscaCert = forge.pki.certificateFromPem(mock_csca_sha256_rsapss_2048);
|
||||
|
||||
const inputs = getCSCAInputs(BigInt(0).toString(), dscCert, cscaCert, n_dsc, k_dsc, n_csca, k_csca, max_cert_bytes, true);
|
||||
|
||||
before(async () => {
|
||||
const circuitPath = path.resolve(__dirname, '../../circuits/tests/dsc/dsc_sha256_rsapss_2048.circom');
|
||||
circuit = await wasm_tester(
|
||||
circuitPath,
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
"./node_modules/@zk-kit/binary-merkle-root.circom/src",
|
||||
"./node_modules/circomlib/circuits"
|
||||
]
|
||||
}
|
||||
);
|
||||
});
|
||||
// TODO: Verify the certificate chain in ts too.
|
||||
// it('verify dsc has been signed by the csca using RSA-PSS', () => {
|
||||
// // Extract TBS (To Be Signed) certificate
|
||||
// const tbsCertAsn1 = forge.pki.getTBSCertificate(dscCert);
|
||||
// const tbsCertDer = forge.asn1.toDer(tbsCertAsn1).getBytes();
|
||||
|
||||
// // Create SHA-256 hash of the TBS certificate
|
||||
// const tbsHash = crypto.createHash('sha256').update(Buffer.from(tbsCertDer, 'binary')).digest();
|
||||
|
||||
// // Extract signature from DSC certificate
|
||||
// const signature = Buffer.from(dscCert.signature, 'binary');
|
||||
|
||||
// // Get public key from CSCA certificate
|
||||
// const publicKeyPem = forge.pki.publicKeyToPem(cscaCert.publicKey);
|
||||
// const publicKey = crypto.createPublicKey(publicKeyPem);
|
||||
|
||||
// // Verify signature
|
||||
// const pssOptions = {
|
||||
// saltLength: 32,
|
||||
// mgf1Hash: 'sha256'
|
||||
// };
|
||||
|
||||
// try {
|
||||
// const verifier = crypto.createVerify('RSA-SHA256');
|
||||
// verifier.update(tbsHash);
|
||||
// const isValid = verifier.verify({
|
||||
// key: publicKey,
|
||||
// padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
|
||||
// saltLength: pssOptions.saltLength
|
||||
// }, signature);
|
||||
|
||||
// console.log('TBS Hash:', tbsHash.toString('hex'));
|
||||
// console.log('Signature:', signature.toString('hex'));
|
||||
// console.log('Public Key:', publicKeyPem);
|
||||
// console.log('Verification result:', isValid);
|
||||
|
||||
// expect(isValid).to.be.true;
|
||||
// } catch (error) {
|
||||
// console.error('Verification error:', error);
|
||||
// throw error;
|
||||
// }
|
||||
// })
|
||||
|
||||
it('should compile and load the circuit', () => {
|
||||
expect(circuit).to.not.be.undefined;
|
||||
})
|
||||
|
||||
it('should compute the correct output', async () => {
|
||||
const witness = await circuit.calculateWitness(inputs, true);
|
||||
})
|
||||
|
||||
})
|
||||
@@ -3,22 +3,24 @@ import { assert, expect } from 'chai'
|
||||
import path from "path";
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { poseidon1, poseidon6 } from "poseidon-lite";
|
||||
import { mockPassportData_sha1WithRSAEncryption_65537 } from "../../common/src/utils/mockPassportData";
|
||||
import { generateCircuitInputsRegister } from '../../common/src/utils/generateInputs';
|
||||
import { getLeaf } from '../../common/src/utils/pubkeyTree';
|
||||
import { packBytes } from '../../common/src/utils/utils';
|
||||
import { k_csca, k_dsc, n_csca, n_dsc } from '../../common/src/constants/constants';
|
||||
import { mockPassportData_sha1_rsa_65537 } from "../../../common/src/constants/mockPassportData";
|
||||
import { generateCircuitInputsRegister } from '../../../common/src/utils/generateInputs';
|
||||
import { getLeaf } from '../../../common/src/utils/pubkeyTree';
|
||||
import { packBytes } from '../../../common/src/utils/utils';
|
||||
|
||||
describe("Circuits - sha1WithRSAEncryption_65537 Register flow", function () {
|
||||
describe("Register - SHA1 RSA", function () {
|
||||
this.timeout(0);
|
||||
let inputs: any;
|
||||
let circuit: any;
|
||||
let passportData = mockPassportData_sha1WithRSAEncryption_65537;
|
||||
let passportData = mockPassportData_sha1_rsa_65537;
|
||||
let attestation_id: string;
|
||||
const attestation_name = "E-PASSPORT";
|
||||
const n_dsc = 121;
|
||||
const k_dsc = 17;
|
||||
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(
|
||||
path.join(__dirname, "../circuits/register_sha1WithRSAEncryption_65537.circom"),
|
||||
path.join(__dirname, "../../circuits/register/register_sha1WithRSAEncryption_65537.circom"),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
@@ -30,16 +32,15 @@ describe("Circuits - sha1WithRSAEncryption_65537 Register flow", function () {
|
||||
);
|
||||
|
||||
const secret = BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString();
|
||||
console.log("secret", secret);
|
||||
const dscSecret = BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString();
|
||||
|
||||
const attestation_name = "E-PASSPORT";
|
||||
attestation_id = poseidon1([
|
||||
BigInt(Buffer.from(attestation_name).readUIntBE(0, 6))
|
||||
]).toString();
|
||||
|
||||
inputs = generateCircuitInputsRegister(
|
||||
secret,
|
||||
BigInt(0).toString(),
|
||||
dscSecret,
|
||||
attestation_id,
|
||||
passportData,
|
||||
n_dsc,
|
||||
@@ -55,9 +56,13 @@ describe("Circuits - sha1WithRSAEncryption_65537 Register flow", function () {
|
||||
const w = await circuit.calculateWitness(inputs);
|
||||
await circuit.checkConstraints(w);
|
||||
|
||||
console.log("nullifier", (await circuit.getOutput(w, ["nullifier"])).nullifier);
|
||||
|
||||
const nullifier = (await circuit.getOutput(w, ["nullifier"])).nullifier;
|
||||
console.log("\x1b[34m%s\x1b[0m", "nullifier", nullifier);
|
||||
const commitment_circom = (await circuit.getOutput(w, ["commitment"])).commitment;
|
||||
console.log("\x1b[34m%s\x1b[0m", "commitment", commitment_circom);
|
||||
const blinded_dsc_commitment = (await circuit.getOutput(w, ["blinded_dsc_commitment"])).blinded_dsc_commitment;
|
||||
console.log("\x1b[34m%s\x1b[0m", "blinded_dsc_commitment", blinded_dsc_commitment);
|
||||
|
||||
const mrz_bytes = packBytes(inputs.mrz);
|
||||
const commitment_bytes = poseidon6([
|
||||
inputs.secret[0],
|
||||
@@ -72,8 +77,8 @@ describe("Circuits - sha1WithRSAEncryption_65537 Register flow", function () {
|
||||
mrz_bytes[2]
|
||||
]);
|
||||
const commitment_js = commitment_bytes.toString();
|
||||
console.log('commitment_js', commitment_js)
|
||||
console.log('commitment_circom', commitment_circom)
|
||||
//console.log('commitment_js', commitment_js)
|
||||
//console.log('commitment_circom', commitment_circom)
|
||||
expect(commitment_circom).to.be.equal(commitment_js);
|
||||
});
|
||||
|
||||
@@ -116,17 +121,4 @@ describe("Circuits - sha1WithRSAEncryption_65537 Register flow", function () {
|
||||
}
|
||||
});
|
||||
|
||||
// it("should fail to calculate witness with invalid merkle root", async function () {
|
||||
// try {
|
||||
// const invalidInputs = {
|
||||
// ...inputs,
|
||||
// merkle_root: inputs.merkle_root.map((byte: string) => String((parseInt(byte, 10) + 1) % 256)),
|
||||
// }
|
||||
// await circuit.calculateWitness(invalidInputs);
|
||||
// expect.fail("Expected an error but none was thrown.");
|
||||
// } catch (error) {
|
||||
// expect(error.message).to.include("Assert Failed");
|
||||
// }
|
||||
// });
|
||||
|
||||
});
|
||||
@@ -3,23 +3,24 @@ import { assert, expect } from 'chai'
|
||||
import path from "path";
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { poseidon1, poseidon6 } from "poseidon-lite";
|
||||
import { mockPassportData_sha256WithRSAEncryption_65537 } from "../../common/src/utils/mockPassportData";
|
||||
import { generateCircuitInputsRegister } from '../../common/src/utils/generateInputs';
|
||||
import { getLeaf } from '../../common/src/utils/pubkeyTree';
|
||||
import { packBytes } from '../../common/src/utils/utils';
|
||||
import { mockPassportData_sha256_rsa_65537 } from "../../../common/src/constants/mockPassportData";
|
||||
import { generateCircuitInputsRegister } from '../../../common/src/utils/generateInputs';
|
||||
import { getLeaf } from '../../../common/src/utils/pubkeyTree';
|
||||
import { packBytes } from '../../../common/src/utils/utils';
|
||||
|
||||
describe("Circuits - sha256WithRSAEncryption_65537 Register flow", function () {
|
||||
describe("Register - SHA256 RSA", function () {
|
||||
this.timeout(0);
|
||||
let inputs: any;
|
||||
let circuit: any;
|
||||
let passportData = mockPassportData_sha256WithRSAEncryption_65537;
|
||||
let passportData = mockPassportData_sha256_rsa_65537;
|
||||
let attestation_id: string;
|
||||
const attestation_name = "E-PASSPORT";
|
||||
const n_dsc = 121;
|
||||
const k_dsc = 17;
|
||||
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(
|
||||
path.join(__dirname, "../circuits/register_sha256WithRSAEncryption_65537.circom"),
|
||||
path.join(__dirname, "../../circuits/register/register_sha256WithRSAEncryption_65537.circom"),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
@@ -29,23 +30,18 @@ describe("Circuits - sha256WithRSAEncryption_65537 Register flow", function () {
|
||||
},
|
||||
);
|
||||
|
||||
//const secret = BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString();
|
||||
const secret = BigInt(0).toString();
|
||||
console.log("secret", secret);
|
||||
|
||||
const attestation_name = "E-PASSPORT";
|
||||
const secret = BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString();
|
||||
const dscSecret = BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString();
|
||||
attestation_id = poseidon1([
|
||||
BigInt(Buffer.from(attestation_name).readUIntBE(0, 6))
|
||||
]).toString();
|
||||
|
||||
inputs = generateCircuitInputsRegister(
|
||||
secret,
|
||||
BigInt(0).toString(),
|
||||
dscSecret,
|
||||
attestation_id,
|
||||
passportData,
|
||||
n_dsc,
|
||||
k_dsc,
|
||||
[mockPassportData_sha256WithRSAEncryption_65537]
|
||||
k_dsc
|
||||
);
|
||||
});
|
||||
|
||||
@@ -57,12 +53,12 @@ describe("Circuits - sha256WithRSAEncryption_65537 Register flow", function () {
|
||||
const w = await circuit.calculateWitness(inputs);
|
||||
await circuit.checkConstraints(w);
|
||||
|
||||
console.log("nullifier", (await circuit.getOutput(w, ["nullifier"])).nullifier);
|
||||
|
||||
const nullifier = (await circuit.getOutput(w, ["nullifier"])).nullifier;
|
||||
console.log("\x1b[34m%s\x1b[0m", "nullifier", nullifier);
|
||||
const commitment_circom = (await circuit.getOutput(w, ["commitment"])).commitment;
|
||||
console.log("commitment_circom", commitment_circom)
|
||||
console.log("\x1b[34m%s\x1b[0m", "commitment", commitment_circom);
|
||||
const blinded_dsc_commitment = (await circuit.getOutput(w, ["blinded_dsc_commitment"])).blinded_dsc_commitment;
|
||||
console.log("blinded_dsc_commitment", blinded_dsc_commitment)
|
||||
console.log("\x1b[34m%s\x1b[0m", "blinded_dsc_commitment", blinded_dsc_commitment);
|
||||
|
||||
const mrz_bytes = packBytes(inputs.mrz);
|
||||
const commitment_bytes = poseidon6([
|
||||
@@ -78,8 +74,8 @@ describe("Circuits - sha256WithRSAEncryption_65537 Register flow", function () {
|
||||
mrz_bytes[2]
|
||||
]);
|
||||
const commitment_js = commitment_bytes.toString();
|
||||
console.log('commitment_js', commitment_js)
|
||||
console.log('commitment_circom', commitment_circom)
|
||||
//console.log('commitment_js', commitment_js)
|
||||
//console.log('commitment_circom', commitment_circom)
|
||||
expect(commitment_circom).to.be.equal(commitment_js);
|
||||
});
|
||||
|
||||
@@ -122,17 +118,4 @@ describe("Circuits - sha256WithRSAEncryption_65537 Register flow", function () {
|
||||
}
|
||||
});
|
||||
|
||||
// it("should fail to calculate witness with invalid merkle root", async function () {
|
||||
// try {
|
||||
// const invalidInputs = {
|
||||
// ...inputs,
|
||||
// merkle_root: inputs.merkle_root.map((byte: string) => String((parseInt(byte, 10) + 1) % 256)),
|
||||
// }
|
||||
// await circuit.calculateWitness(invalidInputs);
|
||||
// expect.fail("Expected an error but none was thrown.");
|
||||
// } catch (error) {
|
||||
// expect(error.message).to.include("Assert Failed");
|
||||
// }
|
||||
// });
|
||||
|
||||
});
|
||||
@@ -3,22 +3,24 @@ import { assert, expect } from 'chai'
|
||||
import path from "path";
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import { poseidon1, poseidon6 } from "poseidon-lite";
|
||||
import { mockPassportData_sha256WithRSASSAPSS_65537 } from "../../common/src/utils/mockPassportData";
|
||||
import { generateCircuitInputsRegister } from '../../common/src/utils/generateInputs';
|
||||
import { getLeaf } from '../../common/src/utils/pubkeyTree';
|
||||
import { packBytes } from '../../common/src/utils/utils';
|
||||
import { k_dsc, n_dsc } from '../../common/src/constants/constants';
|
||||
import { mockPassportData_sha256_rsapss_65537 } from "../../../common/src/constants/mockPassportData";
|
||||
import { generateCircuitInputsRegister } from '../../../common/src/utils/generateInputs';
|
||||
import { getLeaf } from '../../../common/src/utils/pubkeyTree';
|
||||
import { packBytes } from '../../../common/src/utils/utils';
|
||||
|
||||
describe("Proof of Passport - Circuits - RSASSAPSS", function () {
|
||||
describe("Register - SHA256 RSASSAPSS", function () {
|
||||
this.timeout(0);
|
||||
let inputs: any;
|
||||
let circuit: any;
|
||||
let passportData = mockPassportData_sha256WithRSASSAPSS_65537;
|
||||
let passportData = mockPassportData_sha256_rsapss_65537;
|
||||
const attestation_name = "E-PASSPORT";
|
||||
let attestation_id: string;
|
||||
const n_dsc = 64;
|
||||
const k_dsc = 32;
|
||||
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(
|
||||
path.join(__dirname, "../circuits/register_sha256WithRSASSAPSS_65537.circom"),
|
||||
path.join(__dirname, "../../circuits/register/register_sha256WithRSASSAPSS_65537.circom"),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
@@ -30,21 +32,18 @@ describe("Proof of Passport - Circuits - RSASSAPSS", function () {
|
||||
);
|
||||
|
||||
const secret = BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString();
|
||||
console.log("secret", secret);
|
||||
|
||||
const attestation_name = "E-PASSPORT";
|
||||
const dscSecret = BigInt(Math.floor(Math.random() * Math.pow(2, 254))).toString();
|
||||
attestation_id = poseidon1([
|
||||
BigInt(Buffer.from(attestation_name).readUIntBE(0, 6))
|
||||
]).toString();
|
||||
|
||||
inputs = generateCircuitInputsRegister(
|
||||
secret,
|
||||
BigInt(0).toString(),
|
||||
dscSecret,
|
||||
attestation_id,
|
||||
passportData,
|
||||
64,
|
||||
32,
|
||||
[passportData],
|
||||
n_dsc,
|
||||
k_dsc
|
||||
);
|
||||
|
||||
});
|
||||
@@ -59,9 +58,12 @@ describe("Proof of Passport - Circuits - RSASSAPSS", function () {
|
||||
console.timeEnd('calculateWitness')
|
||||
await circuit.checkConstraints(w);
|
||||
|
||||
console.log("nullifier", (await circuit.getOutput(w, ["nullifier"])).nullifier);
|
||||
|
||||
const nullifier = (await circuit.getOutput(w, ["nullifier"])).nullifier;
|
||||
console.log("\x1b[34m%s\x1b[0m", "nullifier", nullifier);
|
||||
const commitment_circom = (await circuit.getOutput(w, ["commitment"])).commitment;
|
||||
console.log("\x1b[34m%s\x1b[0m", "commitment", commitment_circom);
|
||||
const blinded_dsc_commitment = (await circuit.getOutput(w, ["blinded_dsc_commitment"])).blinded_dsc_commitment;
|
||||
console.log("\x1b[34m%s\x1b[0m", "blinded_dsc_commitment", blinded_dsc_commitment);
|
||||
|
||||
const mrz_bytes = packBytes(inputs.mrz);
|
||||
const commitment_bytes = poseidon6([
|
||||
@@ -77,8 +79,8 @@ describe("Proof of Passport - Circuits - RSASSAPSS", function () {
|
||||
mrz_bytes[2]
|
||||
]);
|
||||
const commitment_js = commitment_bytes.toString();
|
||||
console.log('commitment_js', commitment_js)
|
||||
console.log('commitment_circom', commitment_circom)
|
||||
//console.log('commitment_js', commitment_js)
|
||||
//console.log('commitment_circom', commitment_circom)
|
||||
expect(commitment_circom).to.be.equal(commitment_js);
|
||||
});
|
||||
|
||||
@@ -121,17 +123,4 @@ describe("Proof of Passport - Circuits - RSASSAPSS", function () {
|
||||
}
|
||||
});
|
||||
|
||||
it("should fail to calculate witness with invalid merkle root", async function () {
|
||||
try {
|
||||
const invalidInputs = {
|
||||
...inputs,
|
||||
merkle_root: inputs.merkle_root.map((byte: string) => String((parseInt(byte, 10) + 1) % 256)),
|
||||
}
|
||||
await circuit.calculateWitness(invalidInputs);
|
||||
expect.fail("Expected an error but none was thrown.");
|
||||
} catch (error) {
|
||||
expect(error.message).to.include("Assert Failed");
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
@@ -65,7 +65,7 @@ describe('DateIsLessChecker Circuit Test', function () {
|
||||
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(
|
||||
path.join(__dirname, '../circuits/tests/isOlderThan_tester.circom'),
|
||||
path.join(__dirname, '../../circuits/tests/utils/isOlderThan_tester.circom'),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
@@ -64,7 +64,7 @@ describe('DateIsLessChecker Circuit Test', function () {
|
||||
|
||||
before(async () => {
|
||||
circuit = await wasm_tester(
|
||||
path.join(__dirname, '../circuits/tests/isValid_tester.circom'),
|
||||
path.join(__dirname, '../../circuits/tests/utils/isValid_tester.circom'),
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
87
circuits/tests/utils/rsa_verifier.test.ts
Normal file
87
circuits/tests/utils/rsa_verifier.test.ts
Normal file
@@ -0,0 +1,87 @@
|
||||
import { expect } from 'chai';
|
||||
import { X509Certificate } from 'crypto';
|
||||
import path from 'path';
|
||||
import { getCSCAInputs, getTBSHash } from '../../../common/src/utils/csca';
|
||||
const wasm_tester = require("circom_tester").wasm;
|
||||
import forge from 'node-forge';
|
||||
|
||||
import { mock_dsc_sha256_rsa_2048, mock_csca_sha256_rsa_2048, mock_dsc_sha1_rsa_2048, mock_csca_sha1_rsa_2048 } from '../../../common/src/constants/mockCertificates';
|
||||
|
||||
function loadCertificates(dscCertContent: string, cscaCertContent: string) {
|
||||
const dscCert = new X509Certificate(dscCertContent);
|
||||
const cscaCert = new X509Certificate(cscaCertContent);
|
||||
const dscCert_forge = forge.pki.certificateFromPem(dscCertContent);
|
||||
const cscaCert_forge = forge.pki.certificateFromPem(cscaCertContent);
|
||||
|
||||
return { dscCert, cscaCert, dscCert_forge, cscaCert_forge };
|
||||
}
|
||||
|
||||
describe('RSA Verifier', function () {
|
||||
this.timeout(0);
|
||||
let circuit;
|
||||
|
||||
this.beforeAll(async () => {
|
||||
const circuitPath = path.resolve(__dirname, '../../circuits/tests/utils/rsa_verifier.circom');
|
||||
circuit = await wasm_tester(
|
||||
circuitPath,
|
||||
{
|
||||
include: [
|
||||
"node_modules",
|
||||
"./node_modules/@zk-kit/binary-merkle-root.circom/src",
|
||||
"./node_modules/circomlib/circuits"
|
||||
]
|
||||
}
|
||||
);
|
||||
});
|
||||
describe('Circuit', () => {
|
||||
it('should compile and load the circuit', () => {
|
||||
expect(circuit).not.to.be.undefined;
|
||||
});
|
||||
});
|
||||
|
||||
describe('SHA-256 certificates', async () => {
|
||||
const { dscCert, cscaCert, dscCert_forge, cscaCert_forge } = loadCertificates(mock_dsc_sha256_rsa_2048, mock_csca_sha256_rsa_2048);
|
||||
|
||||
it('should verify DSC has been signed by the CSCA', () => {
|
||||
const isVerified = dscCert.verify(cscaCert.publicKey);
|
||||
console.log(`SHA-256 DSC certificate verification result: ${isVerified}`);
|
||||
expect(isVerified).to.be.true;
|
||||
});
|
||||
|
||||
it('should extract and log certificate information', async () => {
|
||||
const csca_inputs = getCSCAInputs("0", dscCert_forge, cscaCert_forge, 64, 32, 64, 32, 2048, true);
|
||||
const tbsCertificateHashFormatted = getTBSHash(dscCert_forge, 'sha256');
|
||||
|
||||
const inputs = {
|
||||
"message": tbsCertificateHashFormatted,
|
||||
"signature": csca_inputs.dsc_signature,
|
||||
"modulus": csca_inputs.csca_modulus
|
||||
}
|
||||
const witness = await circuit.calculateWitness(inputs, true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('SHA-1 certificates', () => {
|
||||
const { dscCert, cscaCert, dscCert_forge, cscaCert_forge } = loadCertificates(mock_dsc_sha1_rsa_2048, mock_csca_sha1_rsa_2048);
|
||||
|
||||
it('should verify DSC has been signed by the CSCA', () => {
|
||||
const isVerified = dscCert.verify(cscaCert.publicKey);
|
||||
console.log(`SHA-1 DSC certificate verification result: ${isVerified}`);
|
||||
expect(isVerified).to.be.true;
|
||||
});
|
||||
/// TODO: Use SHA1RSA verifier circuit (won't work either case because of padding)
|
||||
// it('should extract and log certificate information', async () => {
|
||||
// const csca_inputs = getCSCAInputs("0", dscCert_forge, cscaCert_forge, 64, 32, 64, 32, 2048, true);
|
||||
// const tbsCertificateHashFormatted = getTBSHash(dscCert_forge, 'sha1');
|
||||
|
||||
// const inputs = {
|
||||
// "message": tbsCertificateHashFormatted,
|
||||
// "signature": csca_inputs.dsc_signature,
|
||||
// "modulus": csca_inputs.csca_modulus
|
||||
// }
|
||||
// console.log("final inputs: ", inputs);
|
||||
// const witness = await circuit.calculateWitness(inputs, true);
|
||||
// console.log(witness);
|
||||
// });
|
||||
});
|
||||
});
|
||||
@@ -584,6 +584,22 @@ arrify@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
||||
integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==
|
||||
|
||||
asn1@^0.2.6:
|
||||
version "0.2.6"
|
||||
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d"
|
||||
integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
|
||||
dependencies:
|
||||
safer-buffer "~2.1.0"
|
||||
|
||||
asn1js@^3.0.5:
|
||||
version "3.0.5"
|
||||
resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38"
|
||||
integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==
|
||||
dependencies:
|
||||
pvtsutils "^1.3.2"
|
||||
pvutils "^1.1.3"
|
||||
tslib "^2.4.0"
|
||||
|
||||
assertion-error@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
|
||||
@@ -1435,6 +1451,11 @@ js-yaml@4.1.0:
|
||||
dependencies:
|
||||
argparse "^2.0.1"
|
||||
|
||||
jsbn@^0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
||||
integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==
|
||||
|
||||
json5@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
|
||||
@@ -1599,6 +1620,13 @@ mocha@^10.3.0:
|
||||
yargs-parser "20.2.4"
|
||||
yargs-unparser "2.0.0"
|
||||
|
||||
modpow@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/modpow/-/modpow-1.0.0.tgz#377e5541472e855c82d733c551294da74ecfe73d"
|
||||
integrity sha512-ohpGZH3RvdiZ6BPmjbMa1jqnDjwS0s+u0a6Tb2CiJUPkOR5cNIZRdhwmUwxqaOp2GTDJmO4OIsBqm553PfQo3w==
|
||||
dependencies:
|
||||
jsbn "^0.1.0"
|
||||
|
||||
ms@2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
||||
@@ -1624,6 +1652,10 @@ node-forge@^1.3.1:
|
||||
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
|
||||
integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
|
||||
|
||||
"node-forge@https://github.com/remicolin/forge":
|
||||
version "1.3.2-0"
|
||||
resolved "https://github.com/remicolin/forge#17a11a632dd0e50343b3b8393245a2696f78afbb"
|
||||
|
||||
node-gyp-build@^4.2.2:
|
||||
version "4.8.0"
|
||||
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd"
|
||||
@@ -1712,6 +1744,18 @@ psl@^1.9.0:
|
||||
resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
|
||||
integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
|
||||
|
||||
pvtsutils@^1.3.2:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910"
|
||||
integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==
|
||||
dependencies:
|
||||
tslib "^2.6.1"
|
||||
|
||||
pvutils@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3"
|
||||
integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==
|
||||
|
||||
r1csfile@0.0.41, r1csfile@^0.0.41:
|
||||
version "0.0.41"
|
||||
resolved "https://registry.yarnpkg.com/r1csfile/-/r1csfile-0.0.41.tgz#e3d2709d36923156dd1fc2db9858987b30c92948"
|
||||
@@ -1772,7 +1816,7 @@ safe-buffer@^5.1.0, safe-buffer@~5.2.0:
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
||||
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3.0.0":
|
||||
"safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
@@ -1978,6 +2022,11 @@ tsconfig-paths@^3.5.0:
|
||||
minimist "^1.2.6"
|
||||
strip-bom "^3.0.0"
|
||||
|
||||
tslib@^2.4.0, tslib@^2.6.1:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
|
||||
integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
|
||||
|
||||
type-check@~0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
|
||||
|
||||
@@ -4,16 +4,19 @@
|
||||
"@zk-kit/imt": "https://gitpkg.now.sh/0xturboblitz/zk-kit/packages/imt?6d417675",
|
||||
"@zk-kit/lean-imt": "^2.0.1",
|
||||
"asn1.js": "^5.4.1",
|
||||
"elliptic": "^6.5.5",
|
||||
"fs": "^0.0.1-security",
|
||||
"js-sha1": "^0.7.0",
|
||||
"js-sha256": "^0.10.1",
|
||||
"js-sha512": "^0.9.0",
|
||||
"json-to-ts": "^2.1.0",
|
||||
"jsrsasign": "^11.1.0",
|
||||
"node-forge": "^1.3.1",
|
||||
"node-forge": "https://github.com/remicolin/forge",
|
||||
"path": "^0.12.7",
|
||||
"poseidon-lite": "^0.2.0"
|
||||
"poseidon-lite": "^0.2.0",
|
||||
"typescript-parser": "^2.6.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node-forge": "^1.3.10"
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
47
common/scripts/certificates/concatCertificates.ts
Normal file
47
common/scripts/certificates/concatCertificates.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
|
||||
const srcDir = path.join(__dirname, '..', '..', 'src', 'mock_certificates');
|
||||
const outputFile = path.join(__dirname, '..', '..', 'src', 'constants', 'mockCertificates.ts');
|
||||
|
||||
const algorithms = [
|
||||
'sha1_rsa_2048',
|
||||
'sha1_rsa_4096',
|
||||
'sha256_rsa_2048',
|
||||
'sha256_rsa_4096',
|
||||
'sha256_rsapss_2048',
|
||||
'sha256_rsapss_4096',
|
||||
];
|
||||
|
||||
function readFile(dir: string, filename: string): string | null {
|
||||
const filePath = path.join(dir, filename);
|
||||
if (fs.existsSync(filePath)) {
|
||||
return fs.readFileSync(filePath, 'utf-8').trim();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
let output = '';
|
||||
|
||||
algorithms.forEach((algo) => {
|
||||
const algoDir = path.join(srcDir, algo);
|
||||
|
||||
const cscaCert = readFile(algoDir, 'mock_csca.crt') || readFile(algoDir, 'mock_csca.pem');
|
||||
const dscCert = readFile(algoDir, 'mock_dsc.crt') || readFile(algoDir, 'mock_dsc.pem');
|
||||
const dscKey = readFile(algoDir, 'mock_dsc.key');
|
||||
|
||||
if (cscaCert) {
|
||||
output += `export const mock_csca_${algo} = \`${cscaCert}\`\n\n`;
|
||||
}
|
||||
|
||||
if (dscCert) {
|
||||
output += `export const mock_dsc_${algo} = \`${dscCert}\`\n\n`;
|
||||
}
|
||||
|
||||
if (dscKey) {
|
||||
output += `export const mock_dsc_key_${algo} = \`${dscKey}\`\n\n`;
|
||||
}
|
||||
});
|
||||
|
||||
fs.writeFileSync(outputFile, output);
|
||||
console.log(`Certificates and keys have been written to ${outputFile}`);
|
||||
1
common/scripts/certificates/gen_certificates.sh
Normal file
1
common/scripts/certificates/gen_certificates.sh
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
629
common/scripts/passportData/passportData.json
Normal file
629
common/scripts/passportData/passportData.json
Normal file
@@ -0,0 +1,629 @@
|
||||
{
|
||||
"mrz": "P<FRADUPONT<<ALPHONSE<HUGUES<ALBERT<<<<<<<<<24HB818324FRA0402111M3111115<<<<<<<<<<<<<<02",
|
||||
"signatureAlgorithm": "sha256WithRSASSAPSS",
|
||||
"pubKey": {
|
||||
"modulus": "24462187253413274681146293990014601117483150253485750502784042435672184694412963307122026240846907391312882376801424642119473345751861224453041335405750030091821974208795494089279845074559882616814677854700627123408815125641207116387150180075958682953326415376187334908428885389819481874887447587379894859906385655519567588675165038354987379327125622417796020195813417774532495071662150990707566936780047952622227454986438290561518433120591444215515025611804148686981931860883842745085825036432179109865379231910853752492302597965268640127145219080386320748404798990484447108886155687702517815916586904444799519356177",
|
||||
"exponent": "65537"
|
||||
},
|
||||
"dataGroupHashes": [
|
||||
-114,
|
||||
-118,
|
||||
-62,
|
||||
50,
|
||||
66,
|
||||
9,
|
||||
-21,
|
||||
-98,
|
||||
-47,
|
||||
-62,
|
||||
-12,
|
||||
-83,
|
||||
77,
|
||||
111,
|
||||
103,
|
||||
117,
|
||||
-85,
|
||||
-35,
|
||||
-96,
|
||||
21,
|
||||
-11,
|
||||
-19,
|
||||
-27,
|
||||
-99,
|
||||
-119,
|
||||
62,
|
||||
-62,
|
||||
-36,
|
||||
-103,
|
||||
117,
|
||||
-80,
|
||||
-33,
|
||||
31,
|
||||
-123,
|
||||
108,
|
||||
84,
|
||||
-98,
|
||||
102,
|
||||
70,
|
||||
11,
|
||||
-91,
|
||||
-81,
|
||||
-60,
|
||||
12,
|
||||
-55,
|
||||
-126,
|
||||
25,
|
||||
-125,
|
||||
46,
|
||||
125,
|
||||
-100,
|
||||
-62,
|
||||
28,
|
||||
23,
|
||||
55,
|
||||
-123,
|
||||
-99,
|
||||
-92,
|
||||
-121,
|
||||
-120,
|
||||
-36,
|
||||
78,
|
||||
-66,
|
||||
82,
|
||||
-76,
|
||||
-21,
|
||||
-34,
|
||||
33,
|
||||
79,
|
||||
50,
|
||||
-104,
|
||||
-120,
|
||||
-114,
|
||||
35,
|
||||
116,
|
||||
-32,
|
||||
6,
|
||||
-14,
|
||||
-100,
|
||||
-115,
|
||||
-128,
|
||||
-8,
|
||||
10,
|
||||
61,
|
||||
98,
|
||||
86,
|
||||
-8,
|
||||
45,
|
||||
-49,
|
||||
-46,
|
||||
90,
|
||||
-24,
|
||||
-81,
|
||||
38,
|
||||
0,
|
||||
-62,
|
||||
104,
|
||||
108,
|
||||
-19,
|
||||
-10,
|
||||
97,
|
||||
-26,
|
||||
116,
|
||||
-58,
|
||||
69,
|
||||
110,
|
||||
26,
|
||||
87,
|
||||
17,
|
||||
89,
|
||||
110,
|
||||
-57,
|
||||
108,
|
||||
-6,
|
||||
36,
|
||||
21,
|
||||
39,
|
||||
87,
|
||||
110,
|
||||
102,
|
||||
-6,
|
||||
-43,
|
||||
-82,
|
||||
-125,
|
||||
-85,
|
||||
-82,
|
||||
-120,
|
||||
-101,
|
||||
87,
|
||||
-112,
|
||||
111,
|
||||
15,
|
||||
-104,
|
||||
127,
|
||||
85,
|
||||
25,
|
||||
-102,
|
||||
81,
|
||||
20,
|
||||
58,
|
||||
51,
|
||||
75,
|
||||
-63,
|
||||
116,
|
||||
-22,
|
||||
0,
|
||||
60,
|
||||
30,
|
||||
29,
|
||||
30,
|
||||
-73,
|
||||
-115,
|
||||
72,
|
||||
-9,
|
||||
-1,
|
||||
-53,
|
||||
100,
|
||||
124,
|
||||
41,
|
||||
-22,
|
||||
106,
|
||||
78,
|
||||
31,
|
||||
11,
|
||||
114,
|
||||
-119,
|
||||
-19,
|
||||
17,
|
||||
92,
|
||||
71,
|
||||
-122,
|
||||
47,
|
||||
62,
|
||||
78,
|
||||
-67,
|
||||
-23,
|
||||
-55,
|
||||
-42,
|
||||
53,
|
||||
4,
|
||||
47,
|
||||
-67,
|
||||
-55,
|
||||
-123,
|
||||
6,
|
||||
121,
|
||||
34,
|
||||
-125,
|
||||
64,
|
||||
-114,
|
||||
91,
|
||||
-34,
|
||||
-46,
|
||||
-63,
|
||||
62,
|
||||
-34,
|
||||
104,
|
||||
82,
|
||||
36,
|
||||
41,
|
||||
-118,
|
||||
-3,
|
||||
70,
|
||||
15,
|
||||
-108,
|
||||
-48,
|
||||
-100,
|
||||
45,
|
||||
105,
|
||||
-85,
|
||||
-15,
|
||||
-61,
|
||||
-71,
|
||||
43,
|
||||
-39,
|
||||
-94,
|
||||
-110,
|
||||
-55,
|
||||
-34,
|
||||
89,
|
||||
-18,
|
||||
38,
|
||||
76,
|
||||
123,
|
||||
-40,
|
||||
13,
|
||||
51,
|
||||
-29,
|
||||
72,
|
||||
-11,
|
||||
59,
|
||||
-63,
|
||||
-18,
|
||||
-90,
|
||||
103,
|
||||
49,
|
||||
23,
|
||||
-92,
|
||||
-85,
|
||||
-68,
|
||||
-62,
|
||||
-59,
|
||||
-100,
|
||||
-69,
|
||||
-7,
|
||||
28,
|
||||
-58,
|
||||
95,
|
||||
69,
|
||||
15,
|
||||
-74,
|
||||
56,
|
||||
54,
|
||||
38
|
||||
],
|
||||
"eContent": [
|
||||
49,
|
||||
102,
|
||||
48,
|
||||
21,
|
||||
6,
|
||||
9,
|
||||
42,
|
||||
-122,
|
||||
72,
|
||||
-122,
|
||||
-9,
|
||||
13,
|
||||
1,
|
||||
9,
|
||||
3,
|
||||
49,
|
||||
8,
|
||||
6,
|
||||
6,
|
||||
103,
|
||||
-127,
|
||||
8,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
48,
|
||||
28,
|
||||
6,
|
||||
9,
|
||||
42,
|
||||
-122,
|
||||
72,
|
||||
-122,
|
||||
-9,
|
||||
13,
|
||||
1,
|
||||
9,
|
||||
5,
|
||||
49,
|
||||
15,
|
||||
23,
|
||||
13,
|
||||
49,
|
||||
57,
|
||||
49,
|
||||
50,
|
||||
49,
|
||||
54,
|
||||
49,
|
||||
55,
|
||||
50,
|
||||
50,
|
||||
51,
|
||||
56,
|
||||
90,
|
||||
48,
|
||||
47,
|
||||
6,
|
||||
9,
|
||||
42,
|
||||
-122,
|
||||
72,
|
||||
-122,
|
||||
-9,
|
||||
13,
|
||||
1,
|
||||
9,
|
||||
4,
|
||||
49,
|
||||
34,
|
||||
4,
|
||||
32,
|
||||
-122,
|
||||
-17,
|
||||
-90,
|
||||
-50,
|
||||
-85,
|
||||
-36,
|
||||
1,
|
||||
-60,
|
||||
98,
|
||||
23,
|
||||
122,
|
||||
117,
|
||||
-121,
|
||||
-30,
|
||||
85,
|
||||
120,
|
||||
53,
|
||||
83,
|
||||
-125,
|
||||
-57,
|
||||
-15,
|
||||
70,
|
||||
39,
|
||||
-114,
|
||||
64,
|
||||
123,
|
||||
39,
|
||||
-78,
|
||||
-76,
|
||||
-122,
|
||||
-50,
|
||||
-17
|
||||
],
|
||||
"encryptedDigest": [
|
||||
87,
|
||||
20,
|
||||
96,
|
||||
-119,
|
||||
-78,
|
||||
21,
|
||||
117,
|
||||
-35,
|
||||
91,
|
||||
41,
|
||||
86,
|
||||
-58,
|
||||
-21,
|
||||
72,
|
||||
-36,
|
||||
58,
|
||||
-79,
|
||||
-29,
|
||||
74,
|
||||
-103,
|
||||
-98,
|
||||
-46,
|
||||
-58,
|
||||
-84,
|
||||
110,
|
||||
29,
|
||||
-89,
|
||||
-15,
|
||||
127,
|
||||
121,
|
||||
92,
|
||||
125,
|
||||
106,
|
||||
81,
|
||||
-16,
|
||||
-96,
|
||||
-9,
|
||||
112,
|
||||
-33,
|
||||
-36,
|
||||
-52,
|
||||
-114,
|
||||
-14,
|
||||
-80,
|
||||
-61,
|
||||
-59,
|
||||
33,
|
||||
-104,
|
||||
120,
|
||||
-8,
|
||||
8,
|
||||
-29,
|
||||
-56,
|
||||
14,
|
||||
-79,
|
||||
-122,
|
||||
60,
|
||||
-23,
|
||||
-100,
|
||||
72,
|
||||
51,
|
||||
-31,
|
||||
-68,
|
||||
-70,
|
||||
37,
|
||||
18,
|
||||
-91,
|
||||
47,
|
||||
-19,
|
||||
-40,
|
||||
-4,
|
||||
-59,
|
||||
-66,
|
||||
88,
|
||||
103,
|
||||
32,
|
||||
-108,
|
||||
-77,
|
||||
-15,
|
||||
-44,
|
||||
-100,
|
||||
13,
|
||||
46,
|
||||
-45,
|
||||
-41,
|
||||
115,
|
||||
-18,
|
||||
110,
|
||||
-3,
|
||||
12,
|
||||
-17,
|
||||
85,
|
||||
111,
|
||||
-51,
|
||||
12,
|
||||
6,
|
||||
114,
|
||||
0,
|
||||
92,
|
||||
58,
|
||||
-26,
|
||||
-13,
|
||||
-40,
|
||||
34,
|
||||
43,
|
||||
11,
|
||||
87,
|
||||
-72,
|
||||
-1,
|
||||
-119,
|
||||
-86,
|
||||
13,
|
||||
79,
|
||||
-1,
|
||||
-72,
|
||||
16,
|
||||
-89,
|
||||
109,
|
||||
79,
|
||||
-99,
|
||||
-26,
|
||||
-110,
|
||||
-17,
|
||||
79,
|
||||
-2,
|
||||
-37,
|
||||
-59,
|
||||
-61,
|
||||
-3,
|
||||
-50,
|
||||
57,
|
||||
121,
|
||||
-10,
|
||||
-19,
|
||||
106,
|
||||
-76,
|
||||
-43,
|
||||
-33,
|
||||
-68,
|
||||
-1,
|
||||
5,
|
||||
22,
|
||||
-5,
|
||||
-39,
|
||||
-13,
|
||||
-10,
|
||||
73,
|
||||
33,
|
||||
28,
|
||||
-48,
|
||||
-24,
|
||||
-119,
|
||||
-49,
|
||||
127,
|
||||
-115,
|
||||
-99,
|
||||
59,
|
||||
10,
|
||||
-62,
|
||||
-47,
|
||||
-33,
|
||||
99,
|
||||
54,
|
||||
112,
|
||||
116,
|
||||
62,
|
||||
99,
|
||||
68,
|
||||
-87,
|
||||
-78,
|
||||
104,
|
||||
-84,
|
||||
-105,
|
||||
61,
|
||||
104,
|
||||
-56,
|
||||
-11,
|
||||
-56,
|
||||
-102,
|
||||
-39,
|
||||
-70,
|
||||
81,
|
||||
-58,
|
||||
-7,
|
||||
98,
|
||||
30,
|
||||
29,
|
||||
-116,
|
||||
6,
|
||||
-127,
|
||||
-103,
|
||||
-5,
|
||||
98,
|
||||
-64,
|
||||
-83,
|
||||
84,
|
||||
-4,
|
||||
100,
|
||||
70,
|
||||
112,
|
||||
29,
|
||||
114,
|
||||
109,
|
||||
-3,
|
||||
-72,
|
||||
-13,
|
||||
-4,
|
||||
-10,
|
||||
-14,
|
||||
-82,
|
||||
14,
|
||||
-38,
|
||||
112,
|
||||
-112,
|
||||
15,
|
||||
-10,
|
||||
-101,
|
||||
87,
|
||||
23,
|
||||
77,
|
||||
-31,
|
||||
101,
|
||||
121,
|
||||
-6,
|
||||
-125,
|
||||
117,
|
||||
126,
|
||||
103,
|
||||
100,
|
||||
10,
|
||||
95,
|
||||
-90,
|
||||
-103,
|
||||
-92,
|
||||
-118,
|
||||
32,
|
||||
124,
|
||||
-115,
|
||||
-116,
|
||||
4,
|
||||
73,
|
||||
-15,
|
||||
60,
|
||||
-16,
|
||||
-23,
|
||||
110,
|
||||
30,
|
||||
-122,
|
||||
42,
|
||||
-28,
|
||||
57,
|
||||
-59,
|
||||
-60,
|
||||
118,
|
||||
53,
|
||||
122
|
||||
],
|
||||
"photoBase64": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABjElEQVR42mL8//8/AyUYiBQYmIw3..."
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
import { readFileSync, writeFileSync } from "fs";
|
||||
import { PassportData } from "../../../common/src/utils/types";
|
||||
import { hash, assembleEContent, formatAndConcatenateDataHashes, formatMrz, hexToDecimal, arraysAreEqual, findSubarrayIndex } from "../../../common/src/utils/utils";
|
||||
import { PassportData } from "../../src/utils/types";
|
||||
import { hash, assembleEContent, formatAndConcatenateDataHashes, formatMrz, hexToDecimal, arraysAreEqual, findSubarrayIndex } from "../../src/utils/utils";
|
||||
import * as forge from 'node-forge';
|
||||
import { assert } from "console";
|
||||
const dsc_key = readFileSync('../common/src/mock_certificates/sha1_rsa_4096/mock_dsc.key', 'utf8');
|
||||
import { mock_dsc_key_sha1_rsa_4096 } from "../../src/constants/mockCertificates";
|
||||
|
||||
const sampleMRZ = "P<FRADUPONT<<ALPHONSE<HUGUES<ALBERT<<<<<<<<<24HB818324FRA0402111M3111115<<<<<<<<<<<<<<02"
|
||||
const sampleDataHashes = [
|
||||
@@ -33,7 +33,7 @@ export function genMockPassportData_sha1WithRSAEncryption_65537(): PassportData
|
||||
|
||||
const eContent = assembleEContent(hash(signatureAlgorithm, concatenatedDataHashes));
|
||||
|
||||
const privKey = forge.pki.privateKeyFromPem(dsc_key);
|
||||
const privKey = forge.pki.privateKeyFromPem(mock_dsc_key_sha1_rsa_4096);
|
||||
const modulus = privKey.n.toString(16);
|
||||
|
||||
const md = forge.md.sha1.create();
|
||||
@@ -1,10 +1,10 @@
|
||||
import assert from "assert";
|
||||
import { PassportData } from "../../../common/src/utils/types";
|
||||
import { hash, assembleEContent, formatAndConcatenateDataHashes, formatMrz, hexToDecimal, arraysAreEqual, findSubarrayIndex } from "../../../common/src/utils/utils";
|
||||
import { PassportData } from "../../src/utils/types";
|
||||
import { hash, assembleEContent, formatAndConcatenateDataHashes, formatMrz, hexToDecimal, arraysAreEqual, findSubarrayIndex } from "../../src/utils/utils";
|
||||
import * as forge from 'node-forge';
|
||||
import { writeFileSync, readFileSync } from "fs";
|
||||
import { mock_dsc_key_sha256_rsa_4096 } from "../../src/constants/mockCertificates";
|
||||
|
||||
const dsc_key = readFileSync('../common/src/mock_certificates/sha256_rsa_4096/mock_dsc.key', 'utf8');
|
||||
|
||||
const sampleMRZ = "P<FRADUPONT<<ALPHONSE<HUGUES<ALBERT<<<<<<<<<24HB818324FRA0402111M3111115<<<<<<<<<<<<<<02"
|
||||
const sampleDataHashes = [
|
||||
@@ -46,9 +46,7 @@ export function genMockPassportData_sha256WithRSAEncryption_65537(): PassportDat
|
||||
|
||||
const eContent = assembleEContent(hash(signatureAlgorithm, concatenatedDataHashes));
|
||||
|
||||
//const rsa = forge.pki.rsa;
|
||||
//const privKey = rsa.generateKeyPair({ bits: 2048 }).privateKey;
|
||||
const privKey = forge.pki.privateKeyFromPem(dsc_key);
|
||||
const privKey = forge.pki.privateKeyFromPem(mock_dsc_key_sha256_rsa_4096);
|
||||
const modulus = privKey.n.toString(16);
|
||||
|
||||
const md = forge.md.sha256.create();
|
||||
@@ -1,11 +1,11 @@
|
||||
import assert from "assert";
|
||||
import { PassportData } from "../../../common/src/utils/types";
|
||||
import { hash, assembleEContent, formatAndConcatenateDataHashes, formatMrz, arraysAreEqual, findSubarrayIndex } from "../../../common/src/utils/utils";
|
||||
import { PassportData } from "../../src/utils/types";
|
||||
import { hash, assembleEContent, formatAndConcatenateDataHashes, formatMrz, arraysAreEqual, findSubarrayIndex } from "../../src/utils/utils";
|
||||
import * as forge from 'node-forge';
|
||||
import crypto from 'crypto';
|
||||
import { readFileSync, writeFileSync } from "fs";
|
||||
const dsc_key = readFileSync('../common/src/mock_certificates/sha256_rsa_4096/mock_dsc.key', 'utf8');
|
||||
const dsc_crt = readFileSync('../common/src/mock_certificates/sha256_rsa_4096/mock_dsc.crt', 'utf8');
|
||||
import { mock_dsc_key_sha256_rsapss_2048 } from "../../src/constants/mockCertificates";
|
||||
import { mock_dsc_sha256_rsapss_2048 } from "../../src/constants/mockCertificates";
|
||||
const sampleMRZ = "P<FRADUPONT<<ALPHONSE<HUGUES<ALBERT<<<<<<<<<24HB818324FRA0402111M3111115<<<<<<<<<<<<<<02"
|
||||
const sampleDataHashes = [
|
||||
[
|
||||
@@ -37,9 +37,9 @@ const signatureAlgorithm = 'sha256WithRSASSAPSS'
|
||||
const hashLen = 32
|
||||
|
||||
export function genMockPassportData_sha256WithRSASSAPSS_65537(): PassportData {
|
||||
const privateKeyPem = forge.pki.privateKeyFromPem(dsc_key);
|
||||
const privateKeyPem = forge.pki.privateKeyFromPem(mock_dsc_key_sha256_rsapss_2048);
|
||||
const privateKeyPemString = forge.pki.privateKeyToPem(privateKeyPem);
|
||||
const certificate = forge.pki.certificateFromPem(dsc_crt);
|
||||
const certificate = forge.pki.certificateFromPem(mock_dsc_sha256_rsapss_2048);
|
||||
|
||||
const publicKey = certificate.publicKey as forge.pki.rsa.PublicKey;
|
||||
|
||||
@@ -56,17 +56,16 @@ export function genMockPassportData_sha256WithRSASSAPSS_65537(): PassportData {
|
||||
|
||||
const eContent = assembleEContent(hash(signatureAlgorithm, concatenatedDataHashes));
|
||||
|
||||
|
||||
const my_message = Buffer.from(eContent);
|
||||
const hash_algorithm = 'sha256';
|
||||
|
||||
const private_key = {
|
||||
key: privateKeyPem,
|
||||
key: privateKeyPemString,
|
||||
padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
|
||||
saltLength: salt.length,
|
||||
};
|
||||
|
||||
const signature = crypto.sign(hash_algorithm, my_message, privateKeyPemString);
|
||||
const signature = crypto.sign(hash_algorithm, my_message, private_key);
|
||||
const signatureArray = Array.from(signature, byte => byte < 128 ? byte : byte - 256);
|
||||
|
||||
return {
|
||||
@@ -3,8 +3,8 @@
|
||||
// It is currently broken so the line that errors is commented
|
||||
|
||||
import assert from "assert";
|
||||
import { PassportData } from "../../../common/src/utils/types";
|
||||
import { hash, assembleEContent, formatAndConcatenateDataHashes, formatMrz, arraysAreEqual, findSubarrayIndex } from "../../../common/src/utils/utils";
|
||||
import { PassportData } from "../../src/utils/types";
|
||||
import { hash, assembleEContent, formatAndConcatenateDataHashes, formatMrz, arraysAreEqual, findSubarrayIndex } from "../../src/utils/utils";
|
||||
import * as forge from 'node-forge';
|
||||
import crypto from 'crypto';
|
||||
import { writeFileSync } from "fs";
|
||||
@@ -62,7 +62,7 @@ export function genMockPassportData_sha256WithRSASSAPSS_65537(): PassportData {
|
||||
const keylen = 2048;
|
||||
const hash_algorithm = 'sha256';
|
||||
const emBits = keylen - 1;
|
||||
const emLen = Math.ceil(emBits/8);
|
||||
const emLen = Math.ceil(emBits / 8);
|
||||
const hLen = 32;
|
||||
|
||||
console.log('my_message:', my_message);
|
||||
@@ -1,6 +1,6 @@
|
||||
import assert from "assert";
|
||||
import { PassportData } from "../../../common/src/utils/types";
|
||||
import { hash, assembleEContent, formatAndConcatenateDataHashes, formatMrz, arraysAreEqual, findSubarrayIndex } from "../../../common/src/utils/utils";
|
||||
import { PassportData } from "../../src/utils/types";
|
||||
import { hash, assembleEContent, formatAndConcatenateDataHashes, formatMrz, arraysAreEqual, findSubarrayIndex } from "../../src/utils/utils";
|
||||
import * as forge from 'node-forge';
|
||||
import { writeFileSync } from "fs";
|
||||
import elliptic from 'elliptic';
|
||||
@@ -45,19 +45,19 @@ export function genMockPassportData_SHA384withECDSA(): PassportData {
|
||||
33
|
||||
);
|
||||
const eContent = assembleEContent(hash(signatureAlgorithm, concatenatedDataHashes));
|
||||
|
||||
|
||||
const ec = new elliptic.ec('p384');
|
||||
const keyPair = ec.genKeyPair();
|
||||
const pubKey = keyPair.getPublic();
|
||||
|
||||
|
||||
const md = forge.md.sha384.create();
|
||||
md.update(forge.util.binary.raw.encode(new Uint8Array(eContent)));
|
||||
const signature = keyPair.sign(md.digest().toHex(), 'hex');
|
||||
const signatureBytes = Array.from(Buffer.from(signature.toDER(), 'hex'));
|
||||
|
||||
|
||||
const Qx = pubKey.getX().toString(16);
|
||||
const Qy = pubKey.getY().toString(16);
|
||||
|
||||
|
||||
return {
|
||||
mrz: sampleMRZ,
|
||||
signatureAlgorithm: signatureAlgorithm,
|
||||
@@ -1,31 +1,201 @@
|
||||
export const mock_dsc_sha256_rsa_4096 = `-----BEGIN CERTIFICATE-----
|
||||
MIIEkDCCAnigAwIBAgIUVWuy5jJJ5sj+QZfD5gWs3rESlFswDQYJKoZIhvcNAQEL
|
||||
BQAwYzELMAkGA1UEBhMCWFgxEjAQBgNVBAgMCU1vY2tTdGF0ZTERMA8GA1UEBwwI
|
||||
TW9ja0NpdHkxGTAXBgNVBAoMEE1vY2tPcmdhbml6YXRpb24xEjAQBgNVBAMMCW1v
|
||||
Y2tfY3NjYTAeFw0yNDA2MTgxOTA4NTRaFw0yNTA2MTgxOTA4NTRaMF0xCzAJBgNV
|
||||
BAYTAlhYMRIwEAYDVQQIDAlNb2NrU3RhdGUxETAPBgNVBAcMCE1vY2tDaXR5MRkw
|
||||
FwYDVQQKDBBNb2NrT3JnYW5pemF0aW9uMQwwCgYDVQQDDANkc2MwggEiMA0GCSqG
|
||||
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDbmfvDt6mQHKcWF2mkPjF1BPS0Tggh6Gdt
|
||||
/A6DCsxrb60ktxMlFm1EOkMwwf7GO2vJ/VThYqHKP+1jf8l327PNSawsZrM86dai
|
||||
d8yMpim+5YMtWQfCrSzpdszusD3SSPpkUzRnYSUa5M1nywktnosYCFBQmFoS47Ya
|
||||
0j6xnPp0tXEldGXqUMUF4RJRxF17u46yy4UIEk2KfJQP3aHfKaB6PRkseRw9g5Pu
|
||||
RPDYTdz9KKpLeTC8YCibwKULn5oAmyz38Li099FrofAD5fbg+3b18v5l4k95bIIq
|
||||
DmpeyA1Pzgr+XsdzCjL0vYMmE0xaZ4b/HWiL2Ogoy1NBH4JGmPovAgMBAAGjQjBA
|
||||
MB0GA1UdDgQWBBQvTV8qsxZT6yjcGTfPp/G1g+eQkDAfBgNVHSMEGDAWgBRUaGBM
|
||||
XQcIm9LEq0TQG9W1A0y3RzANBgkqhkiG9w0BAQsFAAOCAgEADYR3J1O45bTBx73a
|
||||
o45qJJQAJhHAe3VhajphGPm3hpBeM2VewEZU0NIMon0Ov1dHvYudFniYiFdZMefe
|
||||
CuqE9Deb39egDO1lCd2dGjybRbhg4Zr8vLqRwsG3bjdYGl6PXwyg0OsB0QbdKpm4
|
||||
tVRT970BF2LefC5vdlQpeCuLas7gkxL469+LJicXotYlO3Le+CknMYEdALjvEapc
|
||||
1u7jlJFlD2xx3l8+Exkon3EzgRokp3fu9ztU4Y2j3KGdieSDJ4rYfPoyDR7HCcEd
|
||||
HDYCsjBAYi6Zrjz5M0Nm99/O+4vCma7MnGkBtA63ABTDjjxIv6eeu5JxhrI8PXwE
|
||||
VQ9CAmM6Wh52QebRMx1adxUqTe/rwCAwuA4v1jXSlb1BTfL+7ra1k7PYYczmnskc
|
||||
jVscaxnKBVq12Pg1D03LkeMPQiqWTQ7pOPz1AKQ3TIlhsuf/jXner4cYQbeIpGwf
|
||||
WatGH8+eROdlpTfF/xaAUbCJ2UYjRUupGkrpU5KkS9FxrJSVS44PO3xuJwQJN1fC
|
||||
x2clYiqOEhyESrTp6c5XAGK78S0dwBP2R9o7GqY5xNI+kXBJakqyVpwIPRDq4HVo
|
||||
y9QRS1jM1G/2Y1XAE9pMdMjdhfYCCp/lO48swOQDty137gzfffo0Bn0039VKzhgi
|
||||
nUCb8Z7CclWppvFAVjnJruJbGp4=
|
||||
-----END CERTIFICATE-----
|
||||
`
|
||||
export const mock_csca_sha1_rsa_2048 = `-----BEGIN CERTIFICATE-----
|
||||
MIIC1zCCAb+gAwIBAgIUZipRXztCv63+iMkCt+ivpxwkAOAwDQYJKoZIhvcNAQEF
|
||||
BQAwFDESMBAGA1UEAwwJTW9jayBDU0NBMB4XDTI0MDcxMjE3NDIxNVoXDTM0MDcx
|
||||
MDE3NDIxNVowFDESMBAGA1UEAwwJTW9jayBDU0NBMIIBIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAQ8AMIIBCgKCAQEAvFuQiNhHOcXS8LMz8Tp76BIo6+ZZtythhcDaEVsroBWG
|
||||
K63OqD89PTgg4d90To6TcMGXZXJZe+JifWsB5Fo+sUfwdOoWQ3hNKfWadKrkZs4x
|
||||
dh/V05hJ4VAuaj9e2m937GQEsK9obG9MQnYZSlcODCYtIynM/IVmNr27I+s5fspP
|
||||
0mZM+8X3mgjpQSwUob5zMkl8ZzskJau2oY6ImhI6fLNxAisS3wu/akpEVtKI3K8i
|
||||
we99oPDO6xuHeuOQh0L6DbBdpYpF7jPOkah8zBQNfuENaCcjTxI2twrSN0YLuIsQ
|
||||
fiEKbUq8DO5aRng9sws1DTNlf9AyvSPYfkizNtNHWwIDAQABoyEwHzAdBgNVHQ4E
|
||||
FgQU16zJPs8xurwLQAoHiDOuUr+OmnQwDQYJKoZIhvcNAQEFBQADggEBAA6sMfoQ
|
||||
1y42gg4/XNh6SOxHhT2z3u0lHq5+BxVORx5QcIi3rh1sgTocRBkl+4tzXFxDOzGt
|
||||
RpVEOnM4VqbxgvuTLYPbZ3jnoS9S62w2if7xaOWexLO+3hsOtMIUrBfrfBax03/S
|
||||
Tg9gkA98zvV1jbokPL23UXRWufv7L44HIFr3bLeikdOmpf6Lvp1ORiUXjbMi9o+c
|
||||
ty+gWrxsV+825W3LGD/71DFSD4yS8wK9M9KLZb/21bt6tq4D/E3njnYbXID+1dTL
|
||||
WC/4nCtzhd5n6cq1wKl6VnZ6bcyYb8MSQ6Kd6vbew1UnRae8KmFsjr2tJ50ESTj4
|
||||
jQwzIZELkOP+EAE=
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_dsc_sha1_rsa_2048 = `-----BEGIN CERTIFICATE-----
|
||||
MIIC9zCCAd+gAwIBAgIUTwHaCSG0zF1Qc7zH9crP0SpqSIMwDQYJKoZIhvcNAQEF
|
||||
BQAwFDESMBAGA1UEAwwJTW9jayBDU0NBMB4XDTI0MDcxMjE3NDIyM1oXDTI5MDcx
|
||||
MTE3NDIyM1owEzERMA8GA1UEAwwITW9jayBEU0MwggEiMA0GCSqGSIb3DQEBAQUA
|
||||
A4IBDwAwggEKAoIBAQDNAbRAvBrCOUcQpP7wrJ5faC7qxNq14sBfP6K2G7Tpj4Bg
|
||||
eTkCgMAcOl4Ue1M+zhtYRo3pTnidLOvcy07lX1QMV1jwo/RLZYCVQoyqW/Lqm8Kv
|
||||
VXOOJrAzkdowcyOaOLxFyWIoaWj9ZSuPuzVntWA5n7u5MT1mYVO1sq27pXpp1Cwg
|
||||
DYifSLIcn3uKXGPy1CxlxUj/B3/3T0IrOEQkXqXJe7BMg1ijbjbJYoPK2Zoc10vP
|
||||
bgdOXY/MwE6YxhpVo8Lzzq9E31kIq7Ovjrb6xT+kktSbXINX/3Htu8ELe6OuxAw+
|
||||
27CwaS/aCK/MJnHtRFzLyKvhsBf6BEq6ZgUSUfTVAgMBAAGjQjBAMB0GA1UdDgQW
|
||||
BBQ5+4AMcFOfsD0ucPu3LnUceyEJhjAfBgNVHSMEGDAWgBTXrMk+zzG6vAtACgeI
|
||||
M65Sv46adDANBgkqhkiG9w0BAQUFAAOCAQEAMh6doVDMhOZObgKi9bgJibZuOks7
|
||||
fYWu1Zi4zOc2e5Q593Yq/+NSPB65qRixOaFSS/G1ZO6VxAu0n6redn7Ia0NLpohd
|
||||
ZOL+iNt1vNugU2Ur8FbdpbaMrNDkabWSnOiXVKJ6exXYTvdghaF3P4LkZoiutMXz
|
||||
/VJ+tmeWZzhVhTQnrN0FBxvh0wfdbbdbosVaJsyB0xTD6C3aBlUTVtxdLdf3B2CA
|
||||
N0/RDh6kwOOv9mcyF9u/z/YxiZB23csSJyLMmUl9WV2xPCgSZi3A1sZqOU5IIqO3
|
||||
U4o97Nxcwj51Bm6x5Km/6/CbnXXRo+x+nHgAgYwMn42r4BrLFoDLUn9YRw==
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_dsc_key_sha1_rsa_2048 = `-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDNAbRAvBrCOUcQ
|
||||
pP7wrJ5faC7qxNq14sBfP6K2G7Tpj4BgeTkCgMAcOl4Ue1M+zhtYRo3pTnidLOvc
|
||||
y07lX1QMV1jwo/RLZYCVQoyqW/Lqm8KvVXOOJrAzkdowcyOaOLxFyWIoaWj9ZSuP
|
||||
uzVntWA5n7u5MT1mYVO1sq27pXpp1CwgDYifSLIcn3uKXGPy1CxlxUj/B3/3T0Ir
|
||||
OEQkXqXJe7BMg1ijbjbJYoPK2Zoc10vPbgdOXY/MwE6YxhpVo8Lzzq9E31kIq7Ov
|
||||
jrb6xT+kktSbXINX/3Htu8ELe6OuxAw+27CwaS/aCK/MJnHtRFzLyKvhsBf6BEq6
|
||||
ZgUSUfTVAgMBAAECggEAGlxMvEIzwqOw0qAUtAfOOYBhAAkeAmNMzzKUjowTgDDW
|
||||
lhEgVoUNrtOGg2W0N5AzDe/MkaJoefVrwrFVzMKsQQX+RrseT4+WsBqlkcZO/wHW
|
||||
T8tSF4Y8A/WOM8qqWktPUj3p5D5hpKucpVeyL0qwO9ihP9foCEEdjXCTTFyj1/WY
|
||||
O7IdsKNDY+srTK73xWIEnyH+ffEKIaSu9wrntYASudllLO/PrxpxJ4M+/4/I5Cep
|
||||
PzklQhEdv/5ler0uzHGc/RtVfibjpdEDVgsere9Nq+cXf0k4JrZZ8ySy3WHgAPWG
|
||||
zWj3sduFW37Dsb/XvzuQ7oRg4v6lofaJSlaLxA2ExQKBgQD3eE75vjVQdTkKpFMQ
|
||||
c//0nLRne09VbOqPHhpkyZC9FJJ+UkIRvlNbkBtHhhNTj/u6FnkaJGS3RONeDe0o
|
||||
Q0fe16zY38q70HlulNo6h069ckhWrIA8qbrKntqxc2bVL5LDUoA/VmY5nk76L5Tu
|
||||
7b22+ipcdij2ibU+r10T5X5/0wKBgQDUErJVj/dm52QI039VPyl1wMjGDeUvWZxs
|
||||
8iT9FT58Kp/E/+fiZ8JbFqJyWSpEm5rZyK5P40USN1r/B2EdxHSyete52sko8Huh
|
||||
Jku4DVStyIzq63d3gEpIqfb2rmMUlc707bNqdgOX4IZ8RYxFgnp2AB5X8e/LyHZR
|
||||
nSFdADD3twKBgHw8PMGqGM/UmZdbGYxH//ZIeVT+FbzYGgVRYoS4oF4cJtMd7qdD
|
||||
uktcVCWbDLbFsOUiBRf3r0xGXDLKoQW2iS05bz/NUdTp+xxlxAzgAsqexewlW5eY
|
||||
yfqQt0+glL5vzKkcEOA7OsSwUgvNuWIdnkFu47dZZoUmawQWO48ShmgbAoGBAKlz
|
||||
3wc7J8YTsfzTcfUdqPUr+8E1LSGuiq0Ktr96kBkKverdR93CZqv95ANWd82mQA8w
|
||||
qQewY2pwzMbmkJUGevB585HP3dhWf5J+VRZVoInTq7WyPB1CZxi0pl7pbMXwBhPz
|
||||
Mt8oOSrL/umhcLnBzjQnWBeRe7frD4+a7COxmW71AoGBAO0yhYXOeHpGTnHzDzTs
|
||||
qu3rNhvQKy/8f25wvqn/xR5NfbcQv/Z63PgmDoq9VLrmeektwY4zTE9wO+n7WPQU
|
||||
D2BiW2DQjX4OJsOPNs63+wCE71xj08ZxipFuxFWhbjtO/A82h6QMXYwfj9do1WGD
|
||||
oouEG7wJwn8++cuiivyeTWf1
|
||||
-----END PRIVATE KEY-----`
|
||||
|
||||
export const mock_csca_sha1_rsa_4096 = `-----BEGIN CERTIFICATE-----
|
||||
MIIFCTCCAvGgAwIBAgIUPfIaBL/H++x5cwbWjRnVae1VV3owDQYJKoZIhvcNAQEF
|
||||
BQAwFDESMBAGA1UEAwwJbW9ja19jc2NhMB4XDTI0MDYyNzA4NDgyN1oXDTI1MDYy
|
||||
NzA4NDgyN1owFDESMBAGA1UEAwwJbW9ja19jc2NhMIICIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAg8AMIICCgKCAgEAt/py0nO8yiepfYAslsLv5zF9/YXSsrdQ9qdhb4rL0GAO
|
||||
eM/vp6yBCp8ie/qP8/y8xidtjCZmyRTa+QWxCpwW+5s+QA36hJvDW0b7v0t1diA1
|
||||
LJNwr1SwmmAxteZ81ZPA/D+3uwgRbBcolwQNzqT0s0gLQn8uwpLNsJro/Da3APkl
|
||||
Ovuz76uc7LIojeWBQUHcUXO/jAcKnV0GBhmo6W+RlNUMGpcO1n6m3qAR6psekyJ9
|
||||
WrsDZVUAFH7uZTI5HY5bJxu0UexHpXnNHkgjWdws9Drk6MF7UDGR5TegnvaWgII8
|
||||
+pgwx8kweRMarNm8rM0uIIM/6woWo8rggz8ivHOHwH0unzd4MEeSx7huILZcW2Td
|
||||
wv5TD2RUxtU4AbrFgAlnKkfq18MIlQCU8Yx+dWRvyUGPJ2BhziS1tlC3Ei6AMrSw
|
||||
nqxpZz8EhaYDU6tx1jw/SnjbXHgsdQpnD7epuwSUOG91Yqq8fRS2C1imkMrgu1a5
|
||||
KQ3w9azXWVONQ1wdl16fV9Z9qd0zWUmeOwLapwu7RVO0t3ashzM33eDrmXkl0Z5a
|
||||
Oh3yPM2KC45iYP/5kEjdqbhXFnThEHcdR8Zu2a7svKRQFefqbq6mRuuPYNBN+hnK
|
||||
d0jUbwpjdl+FAPney5ev7nAqk6OoP/8645Uqo41UMWRGOwZQcNmEJ0L8/WFqTVUC
|
||||
AwEAAaNTMFEwHQYDVR0OBBYEFNI6y5wUKPRc1FiuuzeWOpWCf3fDMB8GA1UdIwQY
|
||||
MBaAFNI6y5wUKPRc1FiuuzeWOpWCf3fDMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
|
||||
hvcNAQEFBQADggIBAGFjqs5dSQkjCHEOkd1lbXeQvG2MMLhwMS29jOyu2pk97IS2
|
||||
ah2cZepC3ww48STjQ+uXYZI5Ob2vKUs0KbvQm1ZkrfF41TSkyBG/13aZLiPsPMcb
|
||||
7Eu9L+xN5vjO2gUEifjuu5oU1FQIZqVGaO7mttgLDSWwj+mVp+nk1u1rnf8ttFDJ
|
||||
EVVIppJ7k/uoM/5V+cV2a9vbCqd1a0nxGN8JAppHS0Mc2NX3nN6rpmdaTTcPmidm
|
||||
0JPAJPsyNi1KtLDiR1N2WKakXTjmF97oyxM2uIkVJSGDUYmzRW5Qg5eTy3Adbzpk
|
||||
9ErTcrQvKw5znDeDntaupx6f/0Izzbsla9J16c4ATNPsdU6DRysv+HTmHQmlirH/
|
||||
tPqB4TaD+joV6LdxyGcMv/FOkgeyllxKUzdFoh8QyJZAPxOiJJhYud8/cNBhCGWg
|
||||
uMGxRcwP+pPD0lApldU1uEq317cE1gtnZVjNRiZRuVTzaOA0PH98ExjZrmNgbf5o
|
||||
iIUrC81FHCcvGJmzJdHosAOLRkFZMZS+7ZQ6+dTE4sQwrmSdSVWxNQTRMDjlHgXR
|
||||
Nqlr+Uj3X+gds1fa0UO6QvCQUmEnRZxXv57HPKobdPJxGtHBUS+2s/3CdFy0KSHB
|
||||
DeNeFcCggkhoeQqG9D3EXjGz4gre+XjGaH1wPVW0oQoV5BvKsBsMBz2oaZEX
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_dsc_sha1_rsa_4096 = `-----BEGIN CERTIFICATE-----
|
||||
MIID9zCCAd+gAwIBAgIUOUB6xleW+ZGTlubYVAXbnjcaBWkwDQYJKoZIhvcNAQEF
|
||||
BQAwFDESMBAGA1UEAwwJbW9ja19jc2NhMB4XDTI0MDYyNzA4NDgzMVoXDTI1MDYy
|
||||
NzA4NDgzMVowEzERMA8GA1UEAwwIbW9ja19kc2MwggEiMA0GCSqGSIb3DQEBAQUA
|
||||
A4IBDwAwggEKAoIBAQCyFWWOPc09c5/tOYYR78hx6VPGFYoap/3g3WTrPInzQyNC
|
||||
KccAjM9Rwl8oXUzu+ZleKlgX4Z5Q7S3XcTdO5dhuQ5Fd0AKK3dF3HskFe+jkexYP
|
||||
ISdVMvKHJI8r7d9GicFkrGi2robKWTCdwcaRuGnqJrTS+TuNdAAcHpB7egUm2QEO
|
||||
dDJVQB8l5Z8kLen8bUteTFoK5eB2Bp8O3TPjX2jS8p79Ii6xJR4D6eUWrkH1rcbe
|
||||
AIZAVRKLvKWFE4D08OyCp/rQJo/JjNxhknRbsNoSzFpTkXcNsma8VMDrYaLne0eZ
|
||||
NN7ya2m2e2Fl+ShgMB6KDDDy6K72l0pCrNMph23DAgMBAAGjQjBAMB0GA1UdDgQW
|
||||
BBQJ+GbaGRiD0cFB9hbhgEkCS77bCDAfBgNVHSMEGDAWgBTSOsucFCj0XNRYrrs3
|
||||
ljqVgn93wzANBgkqhkiG9w0BAQUFAAOCAgEAipAXJXh2zCrUSRccb6ZspCAQWIYX
|
||||
3UZ3tIBV7htcSHxlsiPYR5Z89Rj0iS2iMzqYcWJbRAOLG9B2oJPnEvcf2oggZoGf
|
||||
hxD0NS1lmDbVDkjWsxcED5y4AYd5r0CiM2/JRxqn9+jiWUrJpyCs2idoMzo6wID1
|
||||
+bTn+/h0Fnyru2aEaTA19ZbD58alkSSQ6ow00W20Kl6ZVVmAggPR3KLXs9vtwq3U
|
||||
v1MCQQhbUeB76Ju+69K77+yxeTMTpevWSgeOmmc3T+NkKoLi0EcJ/4aTGhdiEcZF
|
||||
bjgyc2vO2LsBPzNiXpcb/cNm+BOx8STD03xqtQA3sL8Ipgpx9bdOvj+uZtirM6Bm
|
||||
1VR6W4WaYD0rh6pRgeQCs3Sudd4ZI+ErfP+hhC/CmLk+a+jHuxkMMtZeX+NOQuvc
|
||||
nOjVlbxXDSOlBK3D6RuVswHGWmq9NDumopGg2WWuizq+BphQQWC0rKdF21um9OaC
|
||||
hi2vmJ/bxS/Ka3mTbaM/3N3T1pLJnSn3vX4IrRH+wb6iQXzGu0Kc7zdYhWBJsv1e
|
||||
vK/Cc6gkv9LGCBE4m3qfuK0FTuTUTjq2cZgJObDii3oK36Is9MdOPlGhWU1mamlI
|
||||
wneTF59va2XHfVHmfEv9nPCDBD7YIOxYiQADJ+CJlbq/oe/l0vXvNq+5ikbUus2E
|
||||
VeMUAwXpTAUekrk=
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_dsc_key_sha1_rsa_4096 = `-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyFWWOPc09c5/t
|
||||
OYYR78hx6VPGFYoap/3g3WTrPInzQyNCKccAjM9Rwl8oXUzu+ZleKlgX4Z5Q7S3X
|
||||
cTdO5dhuQ5Fd0AKK3dF3HskFe+jkexYPISdVMvKHJI8r7d9GicFkrGi2robKWTCd
|
||||
wcaRuGnqJrTS+TuNdAAcHpB7egUm2QEOdDJVQB8l5Z8kLen8bUteTFoK5eB2Bp8O
|
||||
3TPjX2jS8p79Ii6xJR4D6eUWrkH1rcbeAIZAVRKLvKWFE4D08OyCp/rQJo/JjNxh
|
||||
knRbsNoSzFpTkXcNsma8VMDrYaLne0eZNN7ya2m2e2Fl+ShgMB6KDDDy6K72l0pC
|
||||
rNMph23DAgMBAAECggEAHQazyN116IBCHu5zVdUZfMelKfI00mdzUAWF/3mcmpPk
|
||||
2VHp58MLv63IyNF8Sq9QOjL4rNvPbC1cfXMsqqV4A3Dr7riK0YuaKqpP5Z7utN8D
|
||||
F3A18wMc2L4yv9xDukGVzgzz/GKyAaVL8Uq2TOYcDVhFvOV2uXWg1vR8ZEPdNxl9
|
||||
j/9RfLYuJiQHlJ+6xT60/JFLN9AVNRD5vukZXLSIdy3El0mEsevLlZcUmzz+dJ+F
|
||||
WaVKOKRir6coAn+gNBbp7haQ6ecnucQyIADDMO05R36IzD64H9aifuvZJ4z6/lbd
|
||||
DlezZ4zPL7N7CVogn+nBDjioD+iFVpqUa+CINwbacQKBgQDypn9Qetp3G+4pwWze
|
||||
ivWuhPjA/UYw0jabizqi0yTqPmRkNhuf/AL5xgPMNmH0pq+4XuzdJEtLtHjv7vpT
|
||||
l26Djxwb/B2CqQUTNdjFWq2aAWGBt0L7zl/5z3R/ogj0KVrfz1RqPmE7zgpERY/8
|
||||
Iiz7fIjg9ceBpFVyfDuhuicjBQKBgQC74YlimGdowx7Eyruw4MaY++DO2nM6wZ8O
|
||||
fj8aZAO6pRYSZOh1B6iyLjWcMyHwMAeMMRPbAea1Drl77vipwNgDsmVn2h729fgv
|
||||
1Z6rdunLPiQ8k3+ypHA7CidVxHppvPrLQ79Xb3H6/i/EGT2/cAsR/Wo82cpYDIT4
|
||||
QvG9+sg4JwKBgQCKrj31cUGK8Zucob/nMORZagYBxr9nB73OCDTq+mIOvroBzCrd
|
||||
tNq+hj2FaU9y1BF5/kbB3QxrqCm2d476V4ICDriyBdWX56HO6OeLY9f0PPXNfT/7
|
||||
SmfwDnE2wRT89uXJJGXKkvxfgdK8UkWIhL/Qu8w/RjlQDuwHEpnCRPI5QQKBgGom
|
||||
E7vbxVkAHIssy3w0kp/uduYHr+C7cgT7OOXNKfoyuVStJFSyfhIlX26fyQXt7OW8
|
||||
+K3c1h7ncc5ehqlJ5gG4sehJ6QK4l39XHu1bIt4MfuamoxgoJayFoRGpD0xcVAmx
|
||||
fhKFSY14PT560FMvl2GTnolAtzyl3h5xnCks3iAzAoGBAO432byCx+qpdPST9/Vc
|
||||
T6d6bpNA4Ozcs0nFSfuBbHyUXP2M7j26QrEVOlPqdnp7oHRUIqJTNEiQK2avSSgl
|
||||
kA4pOhZnWoSso9huxc2ookVVvuWWSZeOhqheOVL4cxTwTjLXQzUa+cjVuVaE1+iD
|
||||
hxoG8r16SNNAZudx/NDpx1hO
|
||||
-----END PRIVATE KEY-----`
|
||||
|
||||
export const mock_csca_sha256_rsa_2048 = `-----BEGIN CERTIFICATE-----
|
||||
MIID2TCCAsGgAwIBAgIUZJXTESdl0B2qGCUUzv50dNl4VwEwDQYJKoZIhvcNAQEL
|
||||
BQAwfDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTRjEaMBgG
|
||||
A1UECgwRUHJvb2Ygb2YgUGFzc3BvcnQxGTAXBgNVBAsMEG1vZHVsdXMgZGl2aXNp
|
||||
b24xHDAaBgNVBAMME3R1cm5vZmZ0aGlzY29tcHV0ZXIwHhcNMjQwNjE1MTkwNzM5
|
||||
WhcNMjUwNjE1MTkwNzM5WjB8MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExCzAJ
|
||||
BgNVBAcMAlNGMRowGAYDVQQKDBFQcm9vZiBvZiBQYXNzcG9ydDEZMBcGA1UECwwQ
|
||||
bW9kdWx1cyBkaXZpc2lvbjEcMBoGA1UEAwwTdHVybm9mZnRoaXNjb21wdXRlcjCC
|
||||
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKtZGeGlIfA++frmdS4u4YtP
|
||||
hgY44in+fg23OL8OvTGzBZlGLYTfMHoOswCu2n25qQKXOMyGflLLaNcsSp2pFxta
|
||||
WEem4iigvxKLpzLSj9K724yN9Zx7BT+3PCIDdi9YpD7h3PA0thVrJVw6N9kPfq1D
|
||||
n1MqL6SVkcTgjYtT2zTsjmCJhMmNZhogepuUHfAsvexkedCgXts9xZeyvwlC4/r2
|
||||
WzHqJtorV9yHDwfAYktQXCpXyR7K1rzaVyqzOpmqN772CkaZ05ryIhIVTHHNYx1C
|
||||
cHXWlj3Y5XDEu6dkCRr4aYowUOyKW9/4KY6ubdTTsjY+9ZuXlaGMDG+Fi/i3a48C
|
||||
AwEAAaNTMFEwHQYDVR0OBBYEFBJbmiiOdIiv7SWL8DYQ41D+qbkyMB8GA1UdIwQY
|
||||
MBaAFBJbmiiOdIiv7SWL8DYQ41D+qbkyMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
|
||||
hvcNAQELBQADggEBAIoHhFao/9ubVRk5Uw/oW9rOTWSG+6yVXD4dYsrzxGGP+gXb
|
||||
ftgfk4IvkTi1zGZMgN6e3eDIg6/xpoKDGNgKX9Bqa3vdeKgIyyWYlSqRJhsRnmMP
|
||||
em+yZOTcNKaebx7h6Zokw7+dFKcDV5TjbkB7WYNoejp1bbCo0kNcd6C5N+WmTJkI
|
||||
0rcRlUErjhIhL3DweERauQnkIltElAwV7Hiwei2cpVl6tLiWO4GydliwxxFod8AW
|
||||
h88UCDvQ5BjuDnIEW1pER9MbEa5TcQa97D1ads0Unt16E86QIelLxAgdBFvd+4ip
|
||||
BgA3N9B0gIhmwTvjrGT3WSG+GpQmmokIx+1bRNI=
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_dsc_sha256_rsa_2048 = `-----BEGIN CERTIFICATE-----
|
||||
MIIDzzCCAregAwIBAgIURN604AIW+1RhbYMsyVJsuzSSrqkwDQYJKoZIhvcNAQEL
|
||||
BQAwfDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTRjEaMBgG
|
||||
A1UECgwRUHJvb2Ygb2YgUGFzc3BvcnQxGTAXBgNVBAsMEG1vZHVsdXMgZGl2aXNp
|
||||
b24xHDAaBgNVBAMME3R1cm5vZmZ0aGlzY29tcHV0ZXIwHhcNMjQwNjE1MTkyMDIz
|
||||
WhcNMjUwNjE1MTkyMDIzWjCBgjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw
|
||||
CQYDVQQHDAJTRjEaMBgGA1UECgwRUHJvb2Ygb2YgUGFzc3BvcnQxHzAdBgNVBAsM
|
||||
Fm1vZHVsdXMgZGl2aXNpb24gLSBkc2MxHDAaBgNVBAMME3R1cm5vZmZ0aGlzY29t
|
||||
cHV0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVhMyL99jHB5Q3
|
||||
qqo3UR2e1aI/CarEYmafllEh3qVQ1aNJ2FKixrm8wvLgenDlpsjpnEwElpHJwFvl
|
||||
pWBKf3a1KXB7uV0SBlXep7sFNbjnzfl9Zr0CbrokjWjHPAzQ0xb14HPZ1TEydHge
|
||||
B0k/ZlAjUWiGV/ecOm7IFZEA6dYca5gj4D5AP/oCS2dt24rjqvnL0xF868V/Jxui
|
||||
lLQR92jg1NimYIkB3huqqb8tn5wa/was8EnUYyvb1lTWEvarBkFHXpeUB1/iB3tB
|
||||
aoNHm/blH3PpFjsx5eZKRvhT7I03EnvZ7HEMHvWSPHG3CY70kGjfJ6jqP1gg2nwT
|
||||
ZJOwsszNAgMBAAGjQjBAMB0GA1UdDgQWBBTsFOiOCA5VDLRUCHKX5kXXFLWsODAf
|
||||
BgNVHSMEGDAWgBQSW5oojnSIr+0li/A2EONQ/qm5MjANBgkqhkiG9w0BAQsFAAOC
|
||||
AQEAaP7Xvj2gC4/mL7FvroObicJU2ziFs1VCtUvJSqkqFR592QpWWGsyjZ6PJz3o
|
||||
ghU2sSEFk2toI3s8Gv0q1NbkafOqPjk0dwuWWQ8dguDmjp7T+Sltu4f9VQJizVBF
|
||||
LkYTkJCu1UhFWM08NS/JCyjoNEN7JUHD46MzV1Q8yf8UB55jlvRpfqXM+0wUkWtO
|
||||
Fv00AEvS6Tdui1MbZ/HJAkFsV83ZkYb+wOZAqmh0+Ea46dzMlwuYweKl596fwozo
|
||||
ZFFNG/h2wwkcakWW1fW980jyvj+Gm6k45YworZ+bT8uoWZTloo1MUFMjdsVRI8FL
|
||||
M68d6u5tbDtdO8mMPeMIRMq/ug==
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_csca_sha256_rsa_4096 = `-----BEGIN CERTIFICATE-----
|
||||
MIIFpzCCA4+gAwIBAgIUVGoAk38qsh7YYIE2eANMIeZkr+IwDQYJKoZIhvcNAQEL
|
||||
@@ -59,5 +229,224 @@ v9tNSlP4Tyzr2b1VoQcgmpQ987afINJG39lq2OsSrlK87p9bB4yoFSZwOfqok0nM
|
||||
IICRxBuTUHLqP3Nhvo+tAl+iK848LDJVf87ZVQHl72JX4lkVvOo5LCXnOQPyowaP
|
||||
D++J2c6tUj6gs9HAKVX7fH06m/2T5fJHae/OYx36O242yBXPQdHx6qloF/DNvGyM
|
||||
EHC3NCCjLG5m6G0=
|
||||
-----END CERTIFICATE-----
|
||||
`
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_dsc_sha256_rsa_4096 = `-----BEGIN CERTIFICATE-----
|
||||
MIIEkDCCAnigAwIBAgIUVWuy5jJJ5sj+QZfD5gWs3rESlFswDQYJKoZIhvcNAQEL
|
||||
BQAwYzELMAkGA1UEBhMCWFgxEjAQBgNVBAgMCU1vY2tTdGF0ZTERMA8GA1UEBwwI
|
||||
TW9ja0NpdHkxGTAXBgNVBAoMEE1vY2tPcmdhbml6YXRpb24xEjAQBgNVBAMMCW1v
|
||||
Y2tfY3NjYTAeFw0yNDA2MTgxOTA4NTRaFw0yNTA2MTgxOTA4NTRaMF0xCzAJBgNV
|
||||
BAYTAlhYMRIwEAYDVQQIDAlNb2NrU3RhdGUxETAPBgNVBAcMCE1vY2tDaXR5MRkw
|
||||
FwYDVQQKDBBNb2NrT3JnYW5pemF0aW9uMQwwCgYDVQQDDANkc2MwggEiMA0GCSqG
|
||||
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDbmfvDt6mQHKcWF2mkPjF1BPS0Tggh6Gdt
|
||||
/A6DCsxrb60ktxMlFm1EOkMwwf7GO2vJ/VThYqHKP+1jf8l327PNSawsZrM86dai
|
||||
d8yMpim+5YMtWQfCrSzpdszusD3SSPpkUzRnYSUa5M1nywktnosYCFBQmFoS47Ya
|
||||
0j6xnPp0tXEldGXqUMUF4RJRxF17u46yy4UIEk2KfJQP3aHfKaB6PRkseRw9g5Pu
|
||||
RPDYTdz9KKpLeTC8YCibwKULn5oAmyz38Li099FrofAD5fbg+3b18v5l4k95bIIq
|
||||
DmpeyA1Pzgr+XsdzCjL0vYMmE0xaZ4b/HWiL2Ogoy1NBH4JGmPovAgMBAAGjQjBA
|
||||
MB0GA1UdDgQWBBQvTV8qsxZT6yjcGTfPp/G1g+eQkDAfBgNVHSMEGDAWgBRUaGBM
|
||||
XQcIm9LEq0TQG9W1A0y3RzANBgkqhkiG9w0BAQsFAAOCAgEADYR3J1O45bTBx73a
|
||||
o45qJJQAJhHAe3VhajphGPm3hpBeM2VewEZU0NIMon0Ov1dHvYudFniYiFdZMefe
|
||||
CuqE9Deb39egDO1lCd2dGjybRbhg4Zr8vLqRwsG3bjdYGl6PXwyg0OsB0QbdKpm4
|
||||
tVRT970BF2LefC5vdlQpeCuLas7gkxL469+LJicXotYlO3Le+CknMYEdALjvEapc
|
||||
1u7jlJFlD2xx3l8+Exkon3EzgRokp3fu9ztU4Y2j3KGdieSDJ4rYfPoyDR7HCcEd
|
||||
HDYCsjBAYi6Zrjz5M0Nm99/O+4vCma7MnGkBtA63ABTDjjxIv6eeu5JxhrI8PXwE
|
||||
VQ9CAmM6Wh52QebRMx1adxUqTe/rwCAwuA4v1jXSlb1BTfL+7ra1k7PYYczmnskc
|
||||
jVscaxnKBVq12Pg1D03LkeMPQiqWTQ7pOPz1AKQ3TIlhsuf/jXner4cYQbeIpGwf
|
||||
WatGH8+eROdlpTfF/xaAUbCJ2UYjRUupGkrpU5KkS9FxrJSVS44PO3xuJwQJN1fC
|
||||
x2clYiqOEhyESrTp6c5XAGK78S0dwBP2R9o7GqY5xNI+kXBJakqyVpwIPRDq4HVo
|
||||
y9QRS1jM1G/2Y1XAE9pMdMjdhfYCCp/lO48swOQDty137gzfffo0Bn0039VKzhgi
|
||||
nUCb8Z7CclWppvFAVjnJruJbGp4=
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_dsc_key_sha256_rsa_4096 = `-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDbmfvDt6mQHKcW
|
||||
F2mkPjF1BPS0Tggh6Gdt/A6DCsxrb60ktxMlFm1EOkMwwf7GO2vJ/VThYqHKP+1j
|
||||
f8l327PNSawsZrM86daid8yMpim+5YMtWQfCrSzpdszusD3SSPpkUzRnYSUa5M1n
|
||||
ywktnosYCFBQmFoS47Ya0j6xnPp0tXEldGXqUMUF4RJRxF17u46yy4UIEk2KfJQP
|
||||
3aHfKaB6PRkseRw9g5PuRPDYTdz9KKpLeTC8YCibwKULn5oAmyz38Li099FrofAD
|
||||
5fbg+3b18v5l4k95bIIqDmpeyA1Pzgr+XsdzCjL0vYMmE0xaZ4b/HWiL2Ogoy1NB
|
||||
H4JGmPovAgMBAAECggEAEBJ2gy4DenkmX28KO8uTehGJSVL2tGiafUm31C5rpKdR
|
||||
QEEn5Qx9pcMv3LcuCtsZefiRCEfcOH2yRZh6KcwKHkm4kK1Zi+k/XLew4FBe+Mo6
|
||||
bgy4jS54fYPE3ulGNQhDTylpyfEpsoyxXdnVy6FxY6pkGmn0GbLRxqfBj+VBzV3B
|
||||
euHX+XYgRlBnbEye3I89dvITK5gk/rYwy3N3ja8B9lb4pAkdp7RGnood/5KqbV3h
|
||||
DhhFWsXnYF36DGx6Q45P20XxQvQpxiagu4NZQ6ooMZaCU0w271tdmXTdhkYYdIvV
|
||||
elR6D9djY6aO9Ec/fvAjCsXJAhkIkDFuXI+tayUqCQKBgQDwiOnhrpUGbaEv6OpF
|
||||
ukfAhnGKJv8vhEU5fKsHNx7NzbeUSy4dqkFZQRu46dfWyyY6moz8OeWBeQ8Sdqgp
|
||||
Inh34UV6X8pPWDmB22fVxuy4/qLNaZayhKUr756mLppfpHxw1kz92UtX8LcxPFir
|
||||
eeaCGJ1dDVDEDIO39dv6EOg3hwKBgQDpuIR+PUabQ/cZQ/FT7Fu03Wls0eZwoCHD
|
||||
rx/Dc5L3v8QLsq9uSv8R1G4sZJd9FI7xYxaqWm+mdDNuiMUFUiLYcXBs59JxYVYu
|
||||
54+e326vrQjxq28sXRQkTtp1YGuodTXmk6ucspD4QvrkiQjN3B7QtQiHiaGJo5r4
|
||||
naRMCr+CGQKBgQC2uLs61r2ckYFl/MCi0XyaU0dDFJa8CPXxUrQ1mfjLjF/NxkK1
|
||||
BFX6MIyXrwRoxhA3app5LJ4c+dKqSvs5rFbpcnauHMB5/+JHtF2vtxqy+bTA6Foz
|
||||
KLK0qqXRRgu9Zh2mNhVsrTogBtuTCm2tbb/eykYYnvngxET3ZUyDLX7KVwKBgQCC
|
||||
vfJ3/+Ugc/ulSYmVTdHbMkSIWD7VX+6jXbKiDmP3bXHIrXNPemqHWdMryDWqBbcU
|
||||
tz51m1N7xOMEgUPdfx35ADRI58GkJTQl1ulTkV+ErIIlVqZBJexfhzDTmlV/DdpS
|
||||
GudUJ9vK1QUulK21It6mF68mysnvifLmAqFm3FhW+QKBgQDVSCw1x3QAtkSswJRX
|
||||
NFGvIdBSeGBqPpyn4XVU8eQav/uZcjcrB77AemaCG/BwGDQA/nU0eUam0cJn3MP2
|
||||
NDxMDWR56waCH8Ug/iC0ickLaev1lwj9FvwRpmDLxbmJM4aQgbQw/I1KkSP4ZOAO
|
||||
2+/QeO6/dvQ2u8OvYn6l0Ls41g==
|
||||
-----END PRIVATE KEY-----`
|
||||
|
||||
export const mock_csca_sha256_rsapss_2048 = `-----BEGIN CERTIFICATE-----
|
||||
MIIDbzCCAiOgAwIBAgIUOXPStXBBfo+yy5ooXC8RB8EeoXMwQQYJKoZIhvcNAQEK
|
||||
MDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEF
|
||||
AKIDAgEgMBQxEjAQBgNVBAMMCU1vY2sgQ1NDQTAeFw0yNDA2MjkxNTI1MjJaFw0z
|
||||
NDA2MjcxNTI1MjJaMBQxEjAQBgNVBAMMCU1vY2sgQ1NDQTCCASAwCwYJKoZIhvcN
|
||||
AQEKA4IBDwAwggEKAoIBAQCrA2pH2+JptsgXVKIwjLSFD2YeNMjKxhzpPPRmDxI+
|
||||
wI7CoHE2OrpC8egastg7zn8YSjmq0WG+bSbokGATZ3v6klmK/IUsIEsFBNdT3Srm
|
||||
knqSsOq+dUNbFj4LZqvb1UIU0m6/LFSTVNmF/tXps84AZNr10t8CyQ4/DWPMdGhR
|
||||
56J36eTg46ZNuf+wdI8o9qMuFs0MBhH1tjGUD3jcNa9y8I+A8r7KkwuIntytNkU+
|
||||
3jPVgzH5OT5WUyloXf6ixRmE+wNEGKRnM8VVIQTimXHeLzvTkoJ0ZutkG5Xty3eB
|
||||
pFrZKrtIpomUKYQceTacCRoMBaYx7psBFIm0BFRnealBAgMBAAGjUzBRMB0GA1Ud
|
||||
DgQWBBQYPvmGrUQIKMOQCtgR0WPfr8zuVzAfBgNVHSMEGDAWgBQYPvmGrUQIKMOQ
|
||||
CtgR0WPfr8zuVzAPBgNVHRMBAf8EBTADAQH/MEEGCSqGSIb3DQEBCjA0oA8wDQYJ
|
||||
YIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOC
|
||||
AQEAjqa/umDzAFrm9RoQnv9/RwEo5u92Mx8PDU18/tbRM9ZhGHRCnqn0kftFBAXb
|
||||
40kyFxThOVv5gyMd0hcJYlZhzLRqymN11Qry4cEWp9YSGXB7rfst+YvoFYa+W/kD
|
||||
Mh6+zaJVfiWJoaW/G43j6b4Iarzhiu+hl4WXiQJFQ6Ya3o/MwEQmBV/RnmKHcEq4
|
||||
tmmZDfBnFxY3RfSPliR81niP0EWD0pxIDI6CzuuqmI+vXnRRob3MAa8mfefof34T
|
||||
rA0kQqEcklmJFh95bOODC7UjOZlDDTEt7Mxg8CGKwrBxaEN79XCfpDH6kPnNqnfl
|
||||
W3IkvjmEJJY6dZOOrjyYZ+2ReA==
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_dsc_sha256_rsapss_2048 = `-----BEGIN CERTIFICATE-----
|
||||
MIIDXTCCAhGgAwIBAgIUbOJrpiPFgnwWkNUmues/B8JMbf8wQQYJKoZIhvcNAQEK
|
||||
MDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEF
|
||||
AKIDAgEgMBQxEjAQBgNVBAMMCU1vY2sgQ1NDQTAeFw0yNDA2MjkxNTI1MjJaFw0y
|
||||
OTA2MjgxNTI1MjJaMBMxETAPBgNVBAMMCE1vY2sgRFNDMIIBIDALBgkqhkiG9w0B
|
||||
AQoDggEPADCCAQoCggEBAMHHISQWwp1DwHjEriD/xxOUZXkvsEiLRFV+brQSzFhX
|
||||
dAo4BvVo8FeDR+YNFxxC9aO2IZDKGiMIzNvECvL+sPnzaF21tr1I6gleWqlAW+VT
|
||||
oivtpUDR9iBmg1zj2+a2R/09YSS8EN/j1X3zq9brEXCv9Mt2iOUis3oAanRr43Jr
|
||||
pRSViaeVt8TpDf5V/Wj7kOnYtCgzfAQErP7zOARPSC2+zI1v0Uma7EVoGgzwbG+D
|
||||
jYQITwBDrNL8bQWXDJvKkdY7s2uRRSdTbhOCvQyAZM1xXxiTxMkO8E/IUXTfPA67
|
||||
dR3D/fgc8W7DrzF+cKnrtPeIjhfmM0sDFAKUZCi09RECAwEAAaNCMEAwHQYDVR0O
|
||||
BBYEFNMfaLhjl1+bostxDIB2HKAT53DVMB8GA1UdIwQYMBaAFBg++YatRAgow5AK
|
||||
2BHRY9+vzO5XMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkq
|
||||
hkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOCAQEApZ8ZoneEw8gYQ+gsGjxi
|
||||
xE2om6hf9dfFt5Ui86HPIfRd3y2CMvoAnmpFd8ZLjTugbetYq9S5TlLlTK/gD7bR
|
||||
FdkU88m8mVwJISyWappsH6HuEaZiMjThAtcPfBP4iE+RT74uNAp70UJubvsap7FW
|
||||
CgJQjLO9n2Ek7IWj1yy0BBTl5UWCsCBdv8CSDorBI+UlOyzbFMvl2wxp8MMOw8oZ
|
||||
Z3WWH5U/MDtSFDQFTJLRTIlPHl5wtoqCLgZC+fqqmnY1oHPj7KCv2lIFHuTdCbrD
|
||||
QVmOLpEmz/j8CpSgXpMqBp9A5KTjfZaW5FvBw4O3I7JapyZold9gt50G33ky35S0
|
||||
gQ==
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_dsc_key_sha256_rsapss_2048 = `-----BEGIN PRIVATE KEY-----
|
||||
MIIEvAIBADALBgkqhkiG9w0BAQoEggSoMIIEpAIBAAKCAQEAwcchJBbCnUPAeMSu
|
||||
IP/HE5RleS+wSItEVX5utBLMWFd0CjgG9WjwV4NH5g0XHEL1o7YhkMoaIwjM28QK
|
||||
8v6w+fNoXbW2vUjqCV5aqUBb5VOiK+2lQNH2IGaDXOPb5rZH/T1hJLwQ3+PVffOr
|
||||
1usRcK/0y3aI5SKzegBqdGvjcmulFJWJp5W3xOkN/lX9aPuQ6di0KDN8BASs/vM4
|
||||
BE9ILb7MjW/RSZrsRWgaDPBsb4ONhAhPAEOs0vxtBZcMm8qR1juza5FFJ1NuE4K9
|
||||
DIBkzXFfGJPEyQ7wT8hRdN88Drt1HcP9+BzxbsOvMX5wqeu094iOF+YzSwMUApRk
|
||||
KLT1EQIDAQABAoIBACv85RQJKqKCh8WieBi7l1hlfmd1IOJG4vs5WS39em+vYoMT
|
||||
VtkMukpTXdXmMNHUjWhdZt80UZyUWdSlewrQMCJ9U7q6DkKHs8Dur0vudS3ov06T
|
||||
gsjlIKcYPkeu3fNQe6UL8upg2r/IO2V9FAwUjn/zIXGydb72EqHmSEQnXZlSWp1y
|
||||
UyRVLRpvgP9q+wuUbI1eJowPM5UwOpJo/8GiyWQ6B9TWn6FBTX2VpeTl2GTm7t4m
|
||||
yXsuHExwXbElSmdxiSWWoCIpV36f++1F1zgRGBpf+DJrgbbDfidyQklImP5dYc8w
|
||||
/TnWJQwNqMh/0bRpGPE4cnC50F0FS/f++ZLyZbECgYEA9uz7ACbzuemApzXmXPe1
|
||||
NTKaMZPRqHL38amSd05KUG0NTOTqJVXrvmwXMi0TLRRJZ+xExfdqNhyL/kMJ25iT
|
||||
1ryjz1y3P2p6d9w8BkFsi6A471Odn2dNg3XVMU4FjHOZ70mDgS5zZZEY+dgeifYc
|
||||
2Aozfbv+NJKkh8L9UF/XwCUCgYEAyOYldmhhrb6OoTRl4RCyXoHNTTb3KWACxcjr
|
||||
FUsh8fh9qvj17VfwG7+NuhwPv0zr/jy5MyJKIcho7YVTmtPkucXY1newvzQfn+W3
|
||||
JCIOs0bteD8BDa6efq3+c/G7YNi+2bUF9OamqE6ScsCX+lC2P/PLszpCuuPXjZXn
|
||||
wTS0p30CgYEAhcAp2ZQ/0sU7jdcxV8xJWG53fUFPgIn96eXrUzqSIGxhlvQsLFsV
|
||||
HglYqzIlP/bMKEGfowf4fSULY4eWkF9ePSPjK1BSZkRb4A7oaI8Jp7v6+w/0wkJn
|
||||
hzzNZS6Y7NI1YJsWY2Pw1+Q3fiXlrN8mEpO7/nBVKs7/1hX1tpKjwA0CgYA6Lo0C
|
||||
8c/4JYvhG++1csR1oln21shV7zxeU4XhsNSv4yth7KAskJ81KhC9qYrV+E0QYD2y
|
||||
lWeqyQO6ZjaETIGdW7MkyZ0igtH12O1lRYfEW/JCNNz1PXEhdvqOUZ/WuG7tVgPX
|
||||
nUT+0WKQYT6ie+WMN+ryiRjyTzIKCzQHPGBlcQKBgQDFP00AGgLW8yQYj5rxNdif
|
||||
ok4FOnU5hQHaDwDGqc51Xpl1SqTUc8sNYDqauMIupoq9c37lCzljUakLpFra1DK1
|
||||
i4UYRl1inWp3BqGVE5V0GN/NYAtQiKUNM5iXf+10UUNrlsJujD6DQL0tttnAFsWl
|
||||
gR8ctVfp/DLstUdwl54qiQ==
|
||||
-----END PRIVATE KEY-----`
|
||||
|
||||
export const mock_csca_sha256_rsapss_4096 = `-----BEGIN CERTIFICATE-----
|
||||
MIIFbzCCAyOgAwIBAgIUcPyz9NNu9cv8bmvhreKdo5w6JhcwQQYJKoZIhvcNAQEK
|
||||
MDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEF
|
||||
AKIDAgEgMBQxEjAQBgNVBAMMCU1vY2sgQ1NDQTAeFw0yNDA2MjkxNTQzNTBaFw0z
|
||||
NDA2MjcxNTQzNTBaMBQxEjAQBgNVBAMMCU1vY2sgQ1NDQTCCAiAwCwYJKoZIhvcN
|
||||
AQEKA4ICDwAwggIKAoICAQDHnCloSc6AwW4YfCOBdKp0PbsGy3bykmWYHakCjGPb
|
||||
GeaKIrHIuJBjJb0QF0wmGgtkgTKLQtRwClDxKg9y9vru90gZzZ/o729McC7xGLq7
|
||||
S137By1hRPMqtJjYQTDrC33Wq0IwI+c3U11+TcS3fosJ9mLBmGkT69eO9nZ4wAHo
|
||||
0oyK0x/OxpEsVimJFyWiYBFmHK/rxwFP0cybpg1U0If8TGf5R0fBTpGzUxbtqf1F
|
||||
RDMPSOYwF+hvCyyqC7uIe9mB/0HAAHx6DxcXoxiOQFFvFJ855aTIB+lNngLjA+AV
|
||||
8qiA7TIBbSJNYQIrNxoKO570t8UkvQ1gMJKbzuZZqCxxYHYs88/l27BQ4Et8yVis
|
||||
zMLVLljtIIK1falI96iXavoIJwzu26skb0B4koTzhISQNiqrcq3ZGmR8Q4YBOOjt
|
||||
gHsmZnvFiTq6XmbUVsGECLNvQj9Afflt/KY200bLpumVVtMshW30tT4lUPOCyKEM
|
||||
bGPR2znowm8qlS7heQ0MK//mpz2CcYn/OsXiWti/6pLmfgCy/k48NCUX5jOVpuoQ
|
||||
Cm6dLp5Rxe+cHSw/btcI3yu4FxuunSh9OQF6dYd+dZAvEahrD23O/+g68B92Y/Gd
|
||||
d3H/6/nYZdL2VbT5CAA4F/GMBlqSXaIp/I8zMjkbrMgIBbFXAwmSS++rEu03ldtS
|
||||
IQIDAQABo1MwUTAdBgNVHQ4EFgQUPKXfRIsfGKkfqmZMJiHriBUBfbswHwYDVR0j
|
||||
BBgwFoAUPKXfRIsfGKkfqmZMJiHriBUBfbswDwYDVR0TAQH/BAUwAwEB/zBBBgkq
|
||||
hkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCG
|
||||
SAFlAwQCAQUAogMCASADggIBABZ/KiLl6XqJugAXXFrsOQ0DKsa/Hc1oQO2thZWl
|
||||
k5zr7/i8OH1Jh+uPdOFAYEx0Oa/w0xVYfn7j/QR+VDdlycAQ5tdStP8nUp5QZwG9
|
||||
x90SUZ7jl2Cab+qGHNH+cZFQve+ArH3l+vc2aMYgzYEmk5GokRWXVcIb/2m2vD4Z
|
||||
2S86RRhyfpb1M7Oo1OrdySdLJdTa9DVlOwfwlnHBfI1/Vqx/Jt8EZ+GMVHXj41IZ
|
||||
TedFFKiSpe37mWBEEHG+h/fFgi2Txh8OIEZoUDJWynatFJbRwsVdwZnXlbhnLB4g
|
||||
68L9fIrwpTdDjV+y02pgyKkGojxvhduV279Det9G+vH+i+qicIbJAbj7hJ6LmYdt
|
||||
xPnlMfH3dcSxAvUoreNC4xhCKArhySgjHNI5gJ6Yk5XNxLrj7N4+N2wx4z35NkAR
|
||||
nY63+meescNm8peF6pNYsJjFAbKuAyIuw8rAUC8hr75xGdnBgBgjD71m5AMnogbf
|
||||
JrurbPjiZ+f+ie/WAI730Mo3OOKnv6z+6qIPr4KqM9MOpECp9u8J0VcWhIDCrYhe
|
||||
ZOhjTvvbwLrq4Smh8iH6C20IZFK5Je//SOkolBvsRh6ToQoJerR1lWGVlX4ljN8o
|
||||
9g5hp1KC7Fe25/7Ga14YFAjrXIeRp59zpNCkX4swvUQiSYM4BQTsaNmBEvQQnlT+
|
||||
9OCw
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_dsc_sha256_rsapss_4096 = `-----BEGIN CERTIFICATE-----
|
||||
MIIEXTCCAhGgAwIBAgIUdS5K/Y5Ty0C8hDFibjmvBeQr4SgwQQYJKoZIhvcNAQEK
|
||||
MDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEF
|
||||
AKIDAgEgMBQxEjAQBgNVBAMMCU1vY2sgQ1NDQTAeFw0yNDA2MjkxNTQzNTBaFw0y
|
||||
OTA2MjgxNTQzNTBaMBMxETAPBgNVBAMMCE1vY2sgRFNDMIIBIDALBgkqhkiG9w0B
|
||||
AQoDggEPADCCAQoCggEBAPA3vVaGvzo4jKssVHzb/Ocel+K2TRnwUTtWMedwPj6c
|
||||
xaiAdx/QpBPDV7lDIAVwWGERCJkrKF6mzDcGR+c+ANbmMY9sW+lSrSSK0VycRKmq
|
||||
iSiOAYLGf70Owq+lqxEu3oFeXLLJ7C6oXWaYyDUEB8lqs8s8cNxb/uUcqYkuGayu
|
||||
/pu5f2LxXM2/ieaYdfULQPlkWAhkbs4gERVWNfnUFRK4gYFLEWaT6fAHIaHnnRSO
|
||||
Jt7xQl94FpuFCLzB7agg/jwuOmfVQS8ISda2O8uDaIDdA2536Hf89vDZXZ0EboPq
|
||||
JoDYT3BGjoOYROariywgJc1B3JHxDdX4w5FKgY03PIcCAwEAAaNCMEAwHQYDVR0O
|
||||
BBYEFKFL3WvKxngqdWX909QLsr4d/JDVMB8GA1UdIwQYMBaAFDyl30SLHxipH6pm
|
||||
TCYh64gVAX27MEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkq
|
||||
hkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOCAgEACyyjRAoe1d8hzMtNS+wv
|
||||
Tu0oKQ2TbI1dpYKMqEdTxN+BIxKxblieCDTkx2c3VmlBQFjpf4c6RqpG0SqihtPa
|
||||
6XP9ZUiYjrHgTGebeQ/aXS824vCAosCt45sEqTSIV5uBvBqKDNdwL1NP8lxinuNG
|
||||
Lr+7m0wZ1soLQh53tP/G7SU8q1Z/ZIhuYMBX90LsDlR4h8diPAvYJhFkb6//rx3n
|
||||
gLGmSiQdbtY9EhkNhsPx2tOj8eCKcgWh1TEYllwXCcfW+fs9wLD0l87eRUW5bzuB
|
||||
H9jozpEbd2HCn7xLsLn8sjmO4P8Qczx00X+eY4FkjMk4w+HDwokPXPTVyBX5ZX4p
|
||||
qsHHRz+6uLSSY/q6HTcdHFCacs1VETI4i9UG0YjY4A3EPAUNvgz/GIn7Lja/JxSH
|
||||
wvJoPVJzopzyZsUUeD1GpUE6yVgA31/E1+diJ5S/ZKHHmyl8nf/H1hzUl9o/Sz/7
|
||||
pCrZG4WfUY8ifggReHLoLWSFF8S4JqBKykRu67fbkXLe52VgnYSv6GVxvf1N7mhD
|
||||
O50iFYNDXId0SgL+adTylqIsr5l5BQw84vf2m+PO8xX2PPFTO6kUsivr9d5cUgVh
|
||||
duDfJWPas4d3FKdmuSqnUUh7tGWZctzXnA0kBVXa1j5OtU5w+1qp9pbtv/kci2OH
|
||||
FnvLWs1nzkj58FcjpVG0+ZM=
|
||||
-----END CERTIFICATE-----`
|
||||
|
||||
export const mock_dsc_key_sha256_rsapss_4096 = `-----BEGIN PRIVATE KEY-----
|
||||
MIIEvAIBADALBgkqhkiG9w0BAQoEggSoMIIEpAIBAAKCAQEA8De9Voa/OjiMqyxU
|
||||
fNv85x6X4rZNGfBRO1Yx53A+PpzFqIB3H9CkE8NXuUMgBXBYYREImSsoXqbMNwZH
|
||||
5z4A1uYxj2xb6VKtJIrRXJxEqaqJKI4BgsZ/vQ7Cr6WrES7egV5cssnsLqhdZpjI
|
||||
NQQHyWqzyzxw3Fv+5RypiS4ZrK7+m7l/YvFczb+J5ph19QtA+WRYCGRuziARFVY1
|
||||
+dQVEriBgUsRZpPp8AchoeedFI4m3vFCX3gWm4UIvMHtqCD+PC46Z9VBLwhJ1rY7
|
||||
y4NogN0Dbnfod/z28NldnQRug+omgNhPcEaOg5hE5quLLCAlzUHckfEN1fjDkUqB
|
||||
jTc8hwIDAQABAoIBAHEoULCp2Pr8GIep4kLO/luBNds+NSO66QkimW+EmE22XAX8
|
||||
PiFmj2Qf6PsEe9kUCw3ukDZW9jVgLWLeOpDbzFlvJnmBeep3X8iO/AC8PDwQcXwB
|
||||
KQUJrLLKeTt0txjpEzet080FAZUZCqaB4g3XUDO5Z+idGC01yOT0k4hjhwSooPQh
|
||||
Bh6Ufi5ENMORLyyDD9MVlVZVHFIeGD7zmoo+HobeSdhBTHoe0L/ppwN8UABpRH5n
|
||||
mFzVixE7xqJoPFY5zpkV/gecYgPFVFfG+1ALyp2s6moWyExxOl30zF5WjerTGfRl
|
||||
Tbo0irz/fb8CPFmvO28FF9y4qby/wC4VUxfAa4ECgYEA+V6BWaI6sWLro5i8/Gpo
|
||||
kZy+sVowqjhhc0DSaIXJTHL5Z8EjwE7C7rbMTcHAZUDuq7zC0t3lqdljaiCg8EQz
|
||||
douLsjbbkypfILyUjEWE5PuDPWV0LrIIwJuXz37o8hDl/1fC2JPB8Z9SKzlZlswQ
|
||||
4ur3ksOudtOaAj9Xu4zXI58CgYEA9prwar9/b8GUH45a9Fpjj6rhrxKvRJ/f1R1S
|
||||
kStlZUYmUTi7FF1xwwuip/u470eScB/CYWfZm1aKPIKqDi/NHewrMk2MEz/XENig
|
||||
w7LHsjYDiGpBu3ioMsHs41YjnEfBT3+YZhT0BTqxvqxTQOWzq/p/1SruOF2jtMzT
|
||||
6pQD/hkCgYEAp9m99WhmW1o7RD4eD0VMp567GMOdeCZFKf/a4PIUofnN+NGfT+Vz
|
||||
/pxafohJCZ6gSEbhWHB2E1K5QQk/axptDYE2gbm9KJzftThaQOTWZA8Lsrrkbj31
|
||||
+DeDAu7ou282cR5Qj9k9NXdJJsEOlZs8TpFcHZTLjT43LwYV9q8BbP8CgYATzceG
|
||||
2xAR2nrZueXl/6hFLlTnaVm36hrgk3VBATooUuTa2vJzJTnwjuumD9n/JUFGTdaf
|
||||
Weaoyd9aEqgzcXVIdOHXLVEVbqgHy03FyYKt9hZ8iwPyWTMwuFAcxZsgfsawaq/D
|
||||
auVZ0ifaBx68dHXkVr6TUNpGnoZ6C4TtLqvPaQKBgQDm66dlLxat1KDfEMXmpOMq
|
||||
MNaFmxLFgtNngCKgGxHcjOtaMYonPGXVO1uBn+aM4Bcj3Kx21zm8DJBLQmUyIzjc
|
||||
bUTICRnwWI2dWQz/K5VQuMdEDhxpzDw4uhBun97HlwEZnQnMxrf4whDby1yEnMrk
|
||||
jXtnkq7Exo0bOsVwH7VNkw==
|
||||
-----END PRIVATE KEY-----`
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,19 +1,18 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDCTCCAfGgAwIBAgIUVgXmIg3ZjJoGkQE2mwtKlcPI3bIwDQYJKoZIhvcNAQEF
|
||||
BQAwFDESMBAGA1UEAwwJbW9ja19jc2NhMB4XDTI0MDYyODEzNDUzMFoXDTI1MDYy
|
||||
ODEzNDUzMFowFDESMBAGA1UEAwwJbW9ja19jc2NhMIIBIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAQ8AMIIBCgKCAQEAmTkg9LzPdTsFgOL6uXHCGMylvo43XD5BpdION5nBFfx+
|
||||
tKxC30AH41JAbJBb8kDY1FXQPfmE63ROfU0W9oMh8vu/n+yCJ22F4xqgOA012cXw
|
||||
mEwa6A8dxeOqxv92dBdtN5XpcEne5FI1qzCCCRooQ5lMGikiGJiPVfXbIFPgVEv0
|
||||
uW/bbmbNwmm3FZbWFKtotWIbfvLi14/9isk9Bgb1yYaiRhhr1AIyz6Whpsgxc+WE
|
||||
GF8aOdmMzZWXouIyeaSr41R/PuXvOmkizg/YoJij4CDch42ofT/gtShP5k3uFa+G
|
||||
NnmObx492pE7oEmtbJYi3ixuzx4tmnej+On40QBoSQIDAQABo1MwUTAdBgNVHQ4E
|
||||
FgQUdTWxPLHwrq0uuqFF8jzGc1QPLOgwHwYDVR0jBBgwFoAUdTWxPLHwrq0uuqFF
|
||||
8jzGc1QPLOgwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAlxot
|
||||
U0kau1ukBqaaY8CrnxDYyW2WvxNLRSsT9M3I8V/XrDaok44qVl4yXg9p8dd7Pn8j
|
||||
2ddnYk+tRBTm1I3sjdq/nVJ4soEqGdoxCQIKhKio8cJ26AOjuDv2j9mCZS6a4ptF
|
||||
ZDpjuFA3Tuwaoxo5oygdk/0y1LX2ZLONn3moS/A/4mHwGID9jVBnwLsvYJNjHqBP
|
||||
Dw7AiAaGUWC4IzBYE05PEz1VhcfFx9Gk0GhGqjB31da4J4QFq7uTz/WTuqQM7yoh
|
||||
gy3qwxe+RisZnvsWHjrhmSyhVZJdUhqjvSnWF3LgJKux49VfRICsGbbWy8HXZzu0
|
||||
ogX7sybD35QELYoB7A==
|
||||
MIIC1zCCAb+gAwIBAgIUZipRXztCv63+iMkCt+ivpxwkAOAwDQYJKoZIhvcNAQEF
|
||||
BQAwFDESMBAGA1UEAwwJTW9jayBDU0NBMB4XDTI0MDcxMjE3NDIxNVoXDTM0MDcx
|
||||
MDE3NDIxNVowFDESMBAGA1UEAwwJTW9jayBDU0NBMIIBIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAQ8AMIIBCgKCAQEAvFuQiNhHOcXS8LMz8Tp76BIo6+ZZtythhcDaEVsroBWG
|
||||
K63OqD89PTgg4d90To6TcMGXZXJZe+JifWsB5Fo+sUfwdOoWQ3hNKfWadKrkZs4x
|
||||
dh/V05hJ4VAuaj9e2m937GQEsK9obG9MQnYZSlcODCYtIynM/IVmNr27I+s5fspP
|
||||
0mZM+8X3mgjpQSwUob5zMkl8ZzskJau2oY6ImhI6fLNxAisS3wu/akpEVtKI3K8i
|
||||
we99oPDO6xuHeuOQh0L6DbBdpYpF7jPOkah8zBQNfuENaCcjTxI2twrSN0YLuIsQ
|
||||
fiEKbUq8DO5aRng9sws1DTNlf9AyvSPYfkizNtNHWwIDAQABoyEwHzAdBgNVHQ4E
|
||||
FgQU16zJPs8xurwLQAoHiDOuUr+OmnQwDQYJKoZIhvcNAQEFBQADggEBAA6sMfoQ
|
||||
1y42gg4/XNh6SOxHhT2z3u0lHq5+BxVORx5QcIi3rh1sgTocRBkl+4tzXFxDOzGt
|
||||
RpVEOnM4VqbxgvuTLYPbZ3jnoS9S62w2if7xaOWexLO+3hsOtMIUrBfrfBax03/S
|
||||
Tg9gkA98zvV1jbokPL23UXRWufv7L44HIFr3bLeikdOmpf6Lvp1ORiUXjbMi9o+c
|
||||
ty+gWrxsV+825W3LGD/71DFSD4yS8wK9M9KLZb/21bt6tq4D/E3njnYbXID+1dTL
|
||||
WC/4nCtzhd5n6cq1wKl6VnZ6bcyYb8MSQ6Kd6vbew1UnRae8KmFsjr2tJ50ESTj4
|
||||
jQwzIZELkOP+EAE=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
15
common/src/mock_certificates/sha1_rsa_2048/mock_csca.csr
Normal file
15
common/src/mock_certificates/sha1_rsa_2048/mock_csca.csr
Normal file
@@ -0,0 +1,15 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICWTCCAUECAQAwFDESMBAGA1UEAwwJTW9jayBDU0NBMIIBIjANBgkqhkiG9w0B
|
||||
AQEFAAOCAQ8AMIIBCgKCAQEAvFuQiNhHOcXS8LMz8Tp76BIo6+ZZtythhcDaEVsr
|
||||
oBWGK63OqD89PTgg4d90To6TcMGXZXJZe+JifWsB5Fo+sUfwdOoWQ3hNKfWadKrk
|
||||
Zs4xdh/V05hJ4VAuaj9e2m937GQEsK9obG9MQnYZSlcODCYtIynM/IVmNr27I+s5
|
||||
fspP0mZM+8X3mgjpQSwUob5zMkl8ZzskJau2oY6ImhI6fLNxAisS3wu/akpEVtKI
|
||||
3K8iwe99oPDO6xuHeuOQh0L6DbBdpYpF7jPOkah8zBQNfuENaCcjTxI2twrSN0YL
|
||||
uIsQfiEKbUq8DO5aRng9sws1DTNlf9AyvSPYfkizNtNHWwIDAQABoAAwDQYJKoZI
|
||||
hvcNAQELBQADggEBAK09cR+mHmiK10DSkVlnrZIk6sXO2jksPBBh2LGwE4CQSaBz
|
||||
5C/XSQbXImkLWzkt2Kh2xYBCgjdoL8JNfsPYHWkjbN7OzOao0LM42a2o3mJZKixR
|
||||
jcsWQLerrgXqhzP61gm+UVcZ77o5bfMtt1/52bIkJaBWd8Ka59wnTM75JQMVzM0y
|
||||
R+dM7pSdvICzXvMc8NKZGOOROmAN3O317i5oFI89KgFQ0mhjjwdK7X8v9I7dhnHe
|
||||
lI7ESWn/WCnIiq1tlDW3VyKzKul9nBFV2lDM1pHdfez0c9rAzry3Lz0NkM+yAtta
|
||||
W4mf0Ybiz72mwkuY95Sk0+2GohR2BgYK3OjmVkw=
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
@@ -1,28 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCZOSD0vM91OwWA
|
||||
4vq5ccIYzKW+jjdcPkGl0g43mcEV/H60rELfQAfjUkBskFvyQNjUVdA9+YTrdE59
|
||||
TRb2gyHy+7+f7IInbYXjGqA4DTXZxfCYTBroDx3F46rG/3Z0F203lelwSd7kUjWr
|
||||
MIIJGihDmUwaKSIYmI9V9dsgU+BUS/S5b9tuZs3CabcVltYUq2i1Yht+8uLXj/2K
|
||||
yT0GBvXJhqJGGGvUAjLPpaGmyDFz5YQYXxo52YzNlZei4jJ5pKvjVH8+5e86aSLO
|
||||
D9igmKPgINyHjah9P+C1KE/mTe4Vr4Y2eY5vHj3akTugSa1sliLeLG7PHi2ad6P4
|
||||
6fjRAGhJAgMBAAECggEAA8T8pzIKb12Xz5wLPkWazcdMwronCUH0VZRMJSjHOpIz
|
||||
GqDcG80sgdaKZHQC47wIluUIue+XVNS64MOv32RqO5sJ07EVjMtZsP9nkT1yStS0
|
||||
bAYU9DV5U77GOv36VRXln1Q/hr5LKXDkJl12WNY6hvA2El+Fmdc4poJwBRTJ1upb
|
||||
h+cGW/TBZXPirzRI1gicx4Qv++4Tv+GADpUAciOL8qXPklux5A8+cWCdOXHsb4sQ
|
||||
rRILZ0INclZma1hmyMQYL5bfGqTpvNmoJbx4jiLuJTkIcIiCO0VR+A0Rd7l0bg/S
|
||||
gzPuCK0/iSCB9QtctjVjsGF9XZut2xS/op8i0rz7UQKBgQDQ47Mp+dsHFLM3g/hw
|
||||
s8loOcLDS0oRqTyg5NRWyAg6cuTTGs/RvEb77R2RTwok5l2+XcCR/WTc6f+cW3M/
|
||||
XcDFaeXiStur1tnLr5d10twfdZE4C6xBujGAAt4pFUaerc76jb0HfUJDaANYlZIh
|
||||
5p9nwuFGlYhFckBt4YuZek9omQKBgQC7x4R06PyIka7hrkUwLtDRMTgmi2OWP0Fv
|
||||
rPQYLRKqL40Io/lI5VEpfQdgTI0k0YO92QsnvFqJBL+7qW3iPrqKAIMILiu37MNE
|
||||
t65U4U7wzJRd7b2e33Fx6VWMOVbwvmEACoBTN+p8d/WJgg5FZ2wXo6GFWOQofOiI
|
||||
0QhBkvdbMQKBgQCwjCI7Ef96ZpZqD1IE/w701gy0PoflkWG6omyMxBegPscDXR/U
|
||||
JgrglbFtxJ3QPhtw74/4U2/R/ruZDPnEzppEv5IZxicPf1Eog8nBPWvp8tW/xq3a
|
||||
B2IazVGy61Z6em/695ySHd3JVrmtPwz5Ng/4BI+dtngsKbompH/2QZen0QKBgGWZ
|
||||
PuaOhMxTnn6G7vJx8hOtgMcCFgDd+sa0mmFWScoA7lrldWRmhrJe7pXA9YEdRx16
|
||||
CJoYRBfslNyxgD2wWPd/7WWIrajXFpPgmhdczHxnBEOJ9VW3accLS3kSMSMSrqL6
|
||||
C5J7J4ju0s/yqUwN+CMWKrdecBwj8SDNkJ0CKomRAoGAKUinXQmfvvJaSWe/dtBq
|
||||
4Y97Q0vqFEZBDlE5WMYgnAVfnntdLfyMFcjvzVQksKrQWBIBCMboyhPABBdq7i9Y
|
||||
X4g2czz9mQBgQdUoJ/Co2QBUaB3IqHnP7GbUuPjJ1kBv3xAh9MFBjdrD+sxfB0C7
|
||||
NxT13TVPl8DrpE219OeBT8w=
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8W5CI2Ec5xdLw
|
||||
szPxOnvoEijr5lm3K2GFwNoRWyugFYYrrc6oPz09OCDh33ROjpNwwZdlcll74mJ9
|
||||
awHkWj6xR/B06hZDeE0p9Zp0quRmzjF2H9XTmEnhUC5qP17ab3fsZASwr2hsb0xC
|
||||
dhlKVw4MJi0jKcz8hWY2vbsj6zl+yk/SZkz7xfeaCOlBLBShvnMySXxnOyQlq7ah
|
||||
joiaEjp8s3ECKxLfC79qSkRW0ojcryLB732g8M7rG4d645CHQvoNsF2likXuM86R
|
||||
qHzMFA1+4Q1oJyNPEja3CtI3Rgu4ixB+IQptSrwM7lpGeD2zCzUNM2V/0DK9I9h+
|
||||
SLM200dbAgMBAAECggEACUarHgokq9QxuLfikXkzW/D1AfUUqwAga+Fc++jVA6u7
|
||||
sU/8cu22Wtr2R5llFW9RFIb8KTtR69dwyUNpUvEc0Ec+MMvMb+MvTacyRZea6vMx
|
||||
nWMg+SwxSz7TIllflvtRWRtt3bOtvVVX2JgPU8lowDFrHKW02iTJrV13p2Owr606
|
||||
TUt0xq8xvnqWdmIl/xdGSgmb0PfdsWKLpwCVpJI6KZj2hQGffWhU/A3zNHNjGMfG
|
||||
lRv3LEcqlsL/5+sYp5bOigk9fPMdrQ9eDJFvT5mas2mJt/YOUgefhy7quyyjuWEC
|
||||
aT5QuYLEytCYrHKvdMowBznLjdcRtkDfYXOTtwtLfQKBgQDl+N7b28En4mD4Y9xE
|
||||
N7pwQH+tjchtb/nSHmgXdvghiozBrvpg5tTujIPBJeZJdra6E8tNhSvafnsSPQbn
|
||||
E3n2C3mqfUjR2/BVMYV9IQRhlxgvtMhLzsD2Oe7kbHl+aPiku3UZkWel+8CjeO4w
|
||||
/3bzfHQB4jCPX0DjzcfEUvKSRwKBgQDRrPipyXH1idzuIVuuhrUZaA9hvawWd32K
|
||||
IBAQCgILomL1IKcydoDJ71mCKvd3qVJd5u3zkbp+zQf+qs44Xofsvb1hZ5VIbqqA
|
||||
APS53YOwvhV6J/yBHeNFvTPjynPNhH+Zd6h+N9FLezxttR7RnHxvdTz3sT6/JGnn
|
||||
xkem8FR4TQKBgAbqlDFCi62aZlYyEqbOkkHb/rsGf5ei/X1vQqwp/M5tb0xH6enO
|
||||
J2tBOJkvfZyKAHbaL4wWTDpXAXaL9VAvysQ2liMlf3IoTjMRuTUJMCuLMsQEiN2W
|
||||
y0Dcfy3JgWHm4Et8A8qQD/DzAFkqQuegV0B9ZrPDzLgTIk13m+FwqTDzAoGBAKnU
|
||||
u7jyhM6H8x4igNs1GxzQD51wfyHXeSTW4YvMP2njBtpbr3GNULW/m7V2TelriV6r
|
||||
vNLLl847Dh21hcFcuCYGbY2m0+DOWmXB4Hdnt9IBtO2z069VYQ/Mt2nrQq8VgjDx
|
||||
HdXWKj1EPWbzDFplsNiqkk5iD1vNB8cG8GSERzcFAoGAZprGJIfgEDkDX4lFpkkp
|
||||
6NvUWxrZptebuVwm0hhPlXeb+p2myZtLUo/ID2S7iopb3eylSmZkOws0H54xsvc8
|
||||
PguW+Vfc/bPqiejOPj+n2gKVw+1dBEsdGVV997fpCTXwNpjH9B6FJ4K4pEu0llcG
|
||||
5q5M4KoybB6KWSeawgGrYZ4=
|
||||
-----END PRIVATE KEY-----
|
||||
|
||||
1
common/src/mock_certificates/sha1_rsa_2048/mock_csca.srl
Normal file
1
common/src/mock_certificates/sha1_rsa_2048/mock_csca.srl
Normal file
@@ -0,0 +1 @@
|
||||
4F01DA0921B4CC5D5073BCC7F5CACFD12A6A4883
|
||||
@@ -1,18 +1,18 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC9zCCAd+gAwIBAgIUNOzWgMvjFClqJXtzixwFryngrG8wDQYJKoZIhvcNAQEF
|
||||
BQAwFDESMBAGA1UEAwwJbW9ja19jc2NhMB4XDTI0MDYyODEzNDU1NloXDTI1MDYy
|
||||
ODEzNDU1NlowEzERMA8GA1UEAwwIbW9ja19kc2MwggEiMA0GCSqGSIb3DQEBAQUA
|
||||
A4IBDwAwggEKAoIBAQDMk6l4jst9VsRv1lLb8c88pqz6KJw932Tg11S2t9cB0r4b
|
||||
NPFjEiLZGfjWgIvGpO3Qj6lFjdDXUKZWNgshJFt9It3fNVyzPU73/TCqyFIJCRw5
|
||||
Olv/Rbn5lfKUuSY/sK+0v7WdAq9zVhflrccL2LcsZ6gw4Is4ZTzS2lDHVRrjLyXE
|
||||
GO9OhKdbumVZsods6Gh3fb9jiQ9p0HDYLphfgBWutl/CSEBxCMcnezebmwYU+/MQ
|
||||
0CCetSQQ6VOsM1s9y5S9ZJcA7mDPhUrCYU7yPZnL0r2ciecq6TKJGJIzFxBcoRLq
|
||||
xAfxMoh/Ahrekw8c+ZMptgstUDYDsFQZybt1QfebAgMBAAGjQjBAMB0GA1UdDgQW
|
||||
BBQOnxkKKSWjKiTmM6OdASuguBVXYTAfBgNVHSMEGDAWgBR1NbE8sfCurS66oUXy
|
||||
PMZzVA8s6DANBgkqhkiG9w0BAQUFAAOCAQEAj02C0TIH6UVrwbU7SKl3XcaEjxJc
|
||||
2FZ2oljdCaKkNKuBNKvfp9faf99WeGBdpcgFpdi01R5KuY5Nxla7mRX+Ui3nLr3o
|
||||
liedieUn11Vg2XM73aoF7FrhM/DnLrgrd8fOfp6IPxXCK935m5F2Yp2v2xf7xlKo
|
||||
rDIGzX44gmTYs3tlGdhf1+/zxXmY9KLNP/vdFze8SUYizlci/nRVOmxFkH20pWd5
|
||||
0p9dgtebMBDmT7WB5mzfCqg8AOHxLDrl5s6AYya/MfvfnqunpOaBgd4+U1Z6ukx2
|
||||
v7oH6bR2gKuuvX6Ceg6bqroNnT2kUwugyEafeZnLGPmLGUZrC7sJrBxerA==
|
||||
MIIC9zCCAd+gAwIBAgIUTwHaCSG0zF1Qc7zH9crP0SpqSIMwDQYJKoZIhvcNAQEF
|
||||
BQAwFDESMBAGA1UEAwwJTW9jayBDU0NBMB4XDTI0MDcxMjE3NDIyM1oXDTI5MDcx
|
||||
MTE3NDIyM1owEzERMA8GA1UEAwwITW9jayBEU0MwggEiMA0GCSqGSIb3DQEBAQUA
|
||||
A4IBDwAwggEKAoIBAQDNAbRAvBrCOUcQpP7wrJ5faC7qxNq14sBfP6K2G7Tpj4Bg
|
||||
eTkCgMAcOl4Ue1M+zhtYRo3pTnidLOvcy07lX1QMV1jwo/RLZYCVQoyqW/Lqm8Kv
|
||||
VXOOJrAzkdowcyOaOLxFyWIoaWj9ZSuPuzVntWA5n7u5MT1mYVO1sq27pXpp1Cwg
|
||||
DYifSLIcn3uKXGPy1CxlxUj/B3/3T0IrOEQkXqXJe7BMg1ijbjbJYoPK2Zoc10vP
|
||||
bgdOXY/MwE6YxhpVo8Lzzq9E31kIq7Ovjrb6xT+kktSbXINX/3Htu8ELe6OuxAw+
|
||||
27CwaS/aCK/MJnHtRFzLyKvhsBf6BEq6ZgUSUfTVAgMBAAGjQjBAMB0GA1UdDgQW
|
||||
BBQ5+4AMcFOfsD0ucPu3LnUceyEJhjAfBgNVHSMEGDAWgBTXrMk+zzG6vAtACgeI
|
||||
M65Sv46adDANBgkqhkiG9w0BAQUFAAOCAQEAMh6doVDMhOZObgKi9bgJibZuOks7
|
||||
fYWu1Zi4zOc2e5Q593Yq/+NSPB65qRixOaFSS/G1ZO6VxAu0n6redn7Ia0NLpohd
|
||||
ZOL+iNt1vNugU2Ur8FbdpbaMrNDkabWSnOiXVKJ6exXYTvdghaF3P4LkZoiutMXz
|
||||
/VJ+tmeWZzhVhTQnrN0FBxvh0wfdbbdbosVaJsyB0xTD6C3aBlUTVtxdLdf3B2CA
|
||||
N0/RDh6kwOOv9mcyF9u/z/YxiZB23csSJyLMmUl9WV2xPCgSZi3A1sZqOU5IIqO3
|
||||
U4o97Nxcwj51Bm6x5Km/6/CbnXXRo+x+nHgAgYwMn42r4BrLFoDLUn9YRw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
15
common/src/mock_certificates/sha1_rsa_2048/mock_dsc.csr
Normal file
15
common/src/mock_certificates/sha1_rsa_2048/mock_dsc.csr
Normal file
@@ -0,0 +1,15 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICWDCCAUACAQAwEzERMA8GA1UEAwwITW9jayBEU0MwggEiMA0GCSqGSIb3DQEB
|
||||
AQUAA4IBDwAwggEKAoIBAQDNAbRAvBrCOUcQpP7wrJ5faC7qxNq14sBfP6K2G7Tp
|
||||
j4BgeTkCgMAcOl4Ue1M+zhtYRo3pTnidLOvcy07lX1QMV1jwo/RLZYCVQoyqW/Lq
|
||||
m8KvVXOOJrAzkdowcyOaOLxFyWIoaWj9ZSuPuzVntWA5n7u5MT1mYVO1sq27pXpp
|
||||
1CwgDYifSLIcn3uKXGPy1CxlxUj/B3/3T0IrOEQkXqXJe7BMg1ijbjbJYoPK2Zoc
|
||||
10vPbgdOXY/MwE6YxhpVo8Lzzq9E31kIq7Ovjrb6xT+kktSbXINX/3Htu8ELe6Ou
|
||||
xAw+27CwaS/aCK/MJnHtRFzLyKvhsBf6BEq6ZgUSUfTVAgMBAAGgADANBgkqhkiG
|
||||
9w0BAQsFAAOCAQEAXrunn244+vrEniiMFJ7si14YfKtnsE3goLAewViTfQHYkf/3
|
||||
3v4rjYW0uWBjNVpgtLXAFcg2tl/xi0olngiITyj6f4CNWaoZdGTZ1HpeSAKKf/qR
|
||||
jx8l09BnLp90xNTZOxjQNDGsnNs6Qx0D/jHEVk2ZeLy84clalIp7Y9VEvULR6uGt
|
||||
PQrZSjNvzbseKA7UmFELak+6SotP9iG25UmaEB2V2XHZmMY5wiS9TjVqrSzpaTrt
|
||||
B4A5aslqcpaWtXchX+Udg90c6aqFosAxfURbYW8Eq6FtU/PMbxZmIhdSW6tmmcCp
|
||||
ee72V7kOyRp/GXAzlf2mjefkiOv0jbFlTpEBUg==
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
@@ -1,28 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDMk6l4jst9VsRv
|
||||
1lLb8c88pqz6KJw932Tg11S2t9cB0r4bNPFjEiLZGfjWgIvGpO3Qj6lFjdDXUKZW
|
||||
NgshJFt9It3fNVyzPU73/TCqyFIJCRw5Olv/Rbn5lfKUuSY/sK+0v7WdAq9zVhfl
|
||||
rccL2LcsZ6gw4Is4ZTzS2lDHVRrjLyXEGO9OhKdbumVZsods6Gh3fb9jiQ9p0HDY
|
||||
LphfgBWutl/CSEBxCMcnezebmwYU+/MQ0CCetSQQ6VOsM1s9y5S9ZJcA7mDPhUrC
|
||||
YU7yPZnL0r2ciecq6TKJGJIzFxBcoRLqxAfxMoh/Ahrekw8c+ZMptgstUDYDsFQZ
|
||||
ybt1QfebAgMBAAECggEAOj8ao+goOO4Q7PS9T8En65FbM7iHT7iArOGyTXnHXk4F
|
||||
8ZIf3kDGKkEST+R2p57C1TxqChMoMH3WdjpZ7dw/rj/Uox464A+nIcV1a1KwxMDS
|
||||
x9p9Yg+UtWLDmCOlJ8IjLNfemi8vDCwpjqvtPcq80IhM42mzSeHNMQ2WrUJmbuM1
|
||||
0H8bFCRA1orqSYJz4tBVhlwtcEZFDstWgXZQ26kXkXcTtJVjfaJTAg6qwErsCUr8
|
||||
hn6j3fzqOyhHqx2vHyvZns+ARchWHuMLQ5KLP16ijvDXuVHCMGv5FJT1CtUDG6n0
|
||||
SY4nooaSviJoNJB2gg36KqUUwoGxMoGnreIAOIfH4QKBgQDmMXYfFGcBbWYRKX1D
|
||||
ClaHfUlFR/7rZXhlVmKLgHMBR+OqCiqZbvorUbVAxpXw4IH+GNx695OqiQhLUOY7
|
||||
yICpCt6Pq8gkfLYFQiXebevxfF60OB/NrbXICYtWyzqPAclBHauS4J9tDIYHfSJo
|
||||
JD0MqJL37I0ctil0fNjmCVTJuwKBgQDjgwKxAvqvJX4En2+hrKG/aOmCXg5Wdn+3
|
||||
wHvxu/3QRQJehbq/Qcz3MDXPATqOoH86SzFfjREMpsL3+FZYlN5cWK3siNDRq+Uz
|
||||
O1JOPWB0ehMNCFX+UmaFdNfS1NB+oQ1QD+PVVRZUwDz5jdBKTXt4mtgUHbkYMFcs
|
||||
xzVOecM7oQKBgQDKtWO/msfaiewH0PFtx/zK85lCWVQzFvgexSOilUqxJg1l/+3j
|
||||
j8bdvuZOVJJVvF681EfUQZDX7DRRnrwgiUBDnD7BZhSpjOj9WHLgnQvZbBw5t/LJ
|
||||
vN8HeOArXmwC4x/HJ8mfXg8GiLC+h4N1EfRw4UIK8VSSpBd9bTPT3wO7YQKBgHvE
|
||||
FX6+JCmLt9ZD9bJ5+zPpmr409I/MvwXzTHngzt6x6+wHy+OnpB0EuQD3pidY4F2R
|
||||
8jYMw62iOoYzLqXZtm1+QH9gnlixrmoEZ23wrbwvfJWmZ0GHCgan3ZDv/MwmSNu5
|
||||
CTRQqWlJeuI3Z4xEQlsFwW6QDNU/1uyhIjqiuraBAoGACoHype8atLKYQsVMIqWE
|
||||
t8+PeLJs1OKoJFCvTPaZ4uc5hj9q/Zwm1d2lXQHEys2fNnX04szAR4CqdMA+6vpE
|
||||
pdoTmDwzpY1fjisWTZxuAKky1/MKoPx2vJefuC3P1EoLoIjOXxs8c1eIqmjtkvpr
|
||||
AG9WTDrJOYamVzCLQ9mME/g=
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDNAbRAvBrCOUcQ
|
||||
pP7wrJ5faC7qxNq14sBfP6K2G7Tpj4BgeTkCgMAcOl4Ue1M+zhtYRo3pTnidLOvc
|
||||
y07lX1QMV1jwo/RLZYCVQoyqW/Lqm8KvVXOOJrAzkdowcyOaOLxFyWIoaWj9ZSuP
|
||||
uzVntWA5n7u5MT1mYVO1sq27pXpp1CwgDYifSLIcn3uKXGPy1CxlxUj/B3/3T0Ir
|
||||
OEQkXqXJe7BMg1ijbjbJYoPK2Zoc10vPbgdOXY/MwE6YxhpVo8Lzzq9E31kIq7Ov
|
||||
jrb6xT+kktSbXINX/3Htu8ELe6OuxAw+27CwaS/aCK/MJnHtRFzLyKvhsBf6BEq6
|
||||
ZgUSUfTVAgMBAAECggEAGlxMvEIzwqOw0qAUtAfOOYBhAAkeAmNMzzKUjowTgDDW
|
||||
lhEgVoUNrtOGg2W0N5AzDe/MkaJoefVrwrFVzMKsQQX+RrseT4+WsBqlkcZO/wHW
|
||||
T8tSF4Y8A/WOM8qqWktPUj3p5D5hpKucpVeyL0qwO9ihP9foCEEdjXCTTFyj1/WY
|
||||
O7IdsKNDY+srTK73xWIEnyH+ffEKIaSu9wrntYASudllLO/PrxpxJ4M+/4/I5Cep
|
||||
PzklQhEdv/5ler0uzHGc/RtVfibjpdEDVgsere9Nq+cXf0k4JrZZ8ySy3WHgAPWG
|
||||
zWj3sduFW37Dsb/XvzuQ7oRg4v6lofaJSlaLxA2ExQKBgQD3eE75vjVQdTkKpFMQ
|
||||
c//0nLRne09VbOqPHhpkyZC9FJJ+UkIRvlNbkBtHhhNTj/u6FnkaJGS3RONeDe0o
|
||||
Q0fe16zY38q70HlulNo6h069ckhWrIA8qbrKntqxc2bVL5LDUoA/VmY5nk76L5Tu
|
||||
7b22+ipcdij2ibU+r10T5X5/0wKBgQDUErJVj/dm52QI039VPyl1wMjGDeUvWZxs
|
||||
8iT9FT58Kp/E/+fiZ8JbFqJyWSpEm5rZyK5P40USN1r/B2EdxHSyete52sko8Huh
|
||||
Jku4DVStyIzq63d3gEpIqfb2rmMUlc707bNqdgOX4IZ8RYxFgnp2AB5X8e/LyHZR
|
||||
nSFdADD3twKBgHw8PMGqGM/UmZdbGYxH//ZIeVT+FbzYGgVRYoS4oF4cJtMd7qdD
|
||||
uktcVCWbDLbFsOUiBRf3r0xGXDLKoQW2iS05bz/NUdTp+xxlxAzgAsqexewlW5eY
|
||||
yfqQt0+glL5vzKkcEOA7OsSwUgvNuWIdnkFu47dZZoUmawQWO48ShmgbAoGBAKlz
|
||||
3wc7J8YTsfzTcfUdqPUr+8E1LSGuiq0Ktr96kBkKverdR93CZqv95ANWd82mQA8w
|
||||
qQewY2pwzMbmkJUGevB585HP3dhWf5J+VRZVoInTq7WyPB1CZxi0pl7pbMXwBhPz
|
||||
Mt8oOSrL/umhcLnBzjQnWBeRe7frD4+a7COxmW71AoGBAO0yhYXOeHpGTnHzDzTs
|
||||
qu3rNhvQKy/8f25wvqn/xR5NfbcQv/Z63PgmDoq9VLrmeektwY4zTE9wO+n7WPQU
|
||||
D2BiW2DQjX4OJsOPNs63+wCE71xj08ZxipFuxFWhbjtO/A82h6QMXYwfj9do1WGD
|
||||
oouEG7wJwn8++cuiivyeTWf1
|
||||
-----END PRIVATE KEY-----
|
||||
|
||||
@@ -91,4 +91,26 @@ export function readCertificate(filePath: string): jsrsasign.X509 {
|
||||
const certificate = new jsrsasign.X509();
|
||||
certificate.readCertPEM(certPem);
|
||||
return certificate;
|
||||
}
|
||||
|
||||
export function getTBSCertificate(certificate: jsrsasign.X509): Buffer {
|
||||
// console.log("Certificate:", certificate);
|
||||
|
||||
const certASN1 = certificate.getParam();
|
||||
// console.log("certASN1:", certASN1);
|
||||
|
||||
if (!certASN1) {
|
||||
console.error("Failed to get certificate parameters");
|
||||
throw new Error("Invalid certificate structure");
|
||||
}
|
||||
|
||||
// Extract the TBS part directly from the certificate's hex representation
|
||||
const certHex = certificate.hex;
|
||||
const tbsStartIndex = certHex.indexOf('30') + 2; // Start after the first sequence tag
|
||||
const tbsLength = parseInt(certHex.substr(tbsStartIndex, 2), 16) * 2 + 2; // Length in bytes * 2 for hex + 2 for length field
|
||||
const tbsHex = certHex.substr(tbsStartIndex - 2, tbsLength); // Include the sequence tag
|
||||
|
||||
// console.log("TBS Hex:", tbsHex);
|
||||
|
||||
return Buffer.from(tbsHex, 'hex');
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import { CSCA_AKI_MODULUS, CSCA_TREE_DEPTH } from "../constants/constants";
|
||||
import { poseidon16, poseidon2, poseidon4 } from "poseidon-lite";
|
||||
import { IMT } from "@zk-kit/imt";
|
||||
import serialized_csca_tree from "../../pubkeys/serialized_csca_tree.json"
|
||||
import { createHash } from "crypto";
|
||||
|
||||
export function findStartIndex(modulus: string, messagePadded: Uint8Array): number {
|
||||
const modulusNumArray = [];
|
||||
@@ -44,11 +45,15 @@ export function getCSCAInputs(dscSecret: string, dscCertificate: any, cscaCertif
|
||||
if (devmod) {
|
||||
console.log('DEV MODE');
|
||||
//const csca_modulus_bigint = BigInt('0x' + csca_modulus);
|
||||
//console.log("certificate", cscaCertificate);
|
||||
//console.log('csca_modulus_hex', cscaCertificate.getPublicKeyHex());
|
||||
|
||||
const rsaPublicKey = cscaCertificate.publicKey as forge.pki.rsa.PublicKey;
|
||||
const csca_modulus = rsaPublicKey.n.toString(16).toLowerCase();
|
||||
//console.log('csca_modulus', csca_modulus);
|
||||
csca_modulus_bigint = BigInt(`0x${csca_modulus}`);
|
||||
csca_modulus_formatted = splitToWords(csca_modulus_bigint, BigInt(n_csca), BigInt(k_csca));
|
||||
console.log('csca_modulus_formatted', csca_modulus_formatted);
|
||||
//console.log('csca_modulus_formatted', csca_modulus_formatted);
|
||||
|
||||
|
||||
}
|
||||
@@ -71,7 +76,7 @@ export function getCSCAInputs(dscSecret: string, dscCertificate: any, cscaCertif
|
||||
csca_modulus_bigint = BigInt(`0x${csca_modulus_cleaned}`);
|
||||
csca_modulus_formatted = splitToWords(csca_modulus_bigint, BigInt(n_csca), BigInt(k_csca));
|
||||
//console.log('CSCA modulus as bigint:', csca_modulus_bigint);
|
||||
console.log('CSCA modulus extracted from json:', csca_modulus_formatted);
|
||||
//console.log('CSCA modulus extracted from json:', csca_modulus_formatted);
|
||||
}
|
||||
|
||||
const signatureAlgorithm = dscCertificate.signatureOid;;
|
||||
@@ -105,12 +110,17 @@ export function getCSCAInputs(dscSecret: string, dscCertificate: any, cscaCertif
|
||||
else if (signatureAlgorithm === '1.2.840.113549.1.1.11') { //sha256
|
||||
[dsc_message_padded, dsc_messagePaddedLen] = sha256Pad(dsc_tbsCertificateUint8Array, max_cert_bytes);
|
||||
}
|
||||
else {
|
||||
console.log("Signature algorithm not recognized", signatureAlgorithm);
|
||||
[dsc_message_padded, dsc_messagePaddedLen] = sha256Pad(dsc_tbsCertificateUint8Array, max_cert_bytes);
|
||||
|
||||
}
|
||||
const startIndex = findStartIndex(dsc_modulus, dsc_message_padded);
|
||||
const startIndex_formatted = startIndex.toString();
|
||||
const dsc_message_padded_formatted = Array.from(dsc_message_padded).map((x) => x.toString())
|
||||
console.log('dsc_message_padded_formatted', dsc_message_padded_formatted);
|
||||
// console.log('dsc_message_padded_formatted', dsc_message_padded_formatted);
|
||||
const dsc_messagePaddedLen_formatted = BigInt(dsc_messagePaddedLen).toString()
|
||||
console.log('dsc_messagePaddedLen_formatted', dsc_messagePaddedLen_formatted);
|
||||
// console.log('dsc_messagePaddedLen_formatted', dsc_messagePaddedLen_formatted);
|
||||
|
||||
// merkle tree saga
|
||||
const leaf = computeLeafFromModulusBigInt(csca_modulus_bigint);
|
||||
@@ -186,7 +196,7 @@ export function computeLeafFromModulusBigInt(modulus_bigint: bigint) {
|
||||
hashInputs[i] = poseidon16(hashInputs[i].map(input => input.toString()));
|
||||
}
|
||||
const finalHash = poseidon4(hashInputs.map(h => h));
|
||||
console.log(finalHash);
|
||||
//console.log(finalHash);
|
||||
return finalHash.toString();
|
||||
}
|
||||
else {
|
||||
@@ -206,5 +216,18 @@ export function getCSCAModulusProof(leaf, n, k) {
|
||||
return [tree.root, proof];
|
||||
}
|
||||
|
||||
export function getTBSHash(cert: forge.pki.Certificate, hashAlgorithm: 'sha1' | 'sha256'): string[] {
|
||||
const tbsCertAsn1 = forge.pki.certificateToAsn1(cert).value[0];
|
||||
const tbsCertDer = forge.asn1.toDer(tbsCertAsn1 as any).getBytes();
|
||||
const md = hashAlgorithm === 'sha256' ? forge.md.sha256.create() : forge.md.sha1.create();
|
||||
md.update(tbsCertDer);
|
||||
const tbsCertificateHash = md.digest();
|
||||
const tbsCertificateHashString = tbsCertificateHash.data;
|
||||
const tbsCertificateHashHex = Buffer.from(tbsCertificateHashString, 'binary').toString('hex');
|
||||
const tbsCertificateHashBigint = BigInt(`0x${tbsCertificateHashHex}`);
|
||||
console.log('tbsCertificateHashBigint', tbsCertificateHashBigint);
|
||||
return splitToWords(tbsCertificateHashBigint, BigInt(64), BigInt(32));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import { packBytes } from "../utils/utils";
|
||||
import { getCSCAModulusMerkleTree } from "./csca";
|
||||
import {
|
||||
mockPassportDatas,
|
||||
} from "./mockPassportData";
|
||||
} from "../constants/mockPassportData";
|
||||
|
||||
export function generateCircuitInputsRegister(
|
||||
secret: string,
|
||||
@@ -137,7 +137,7 @@ export function generateCircuitInputsDisclose(
|
||||
mrz_bytes[2]
|
||||
]);
|
||||
|
||||
console.log('commitment', commitment.toString());
|
||||
//console.log('commitment', commitment.toString());
|
||||
|
||||
const index = findIndexInTree(merkletree, commitment);
|
||||
|
||||
@@ -171,7 +171,7 @@ export function findIndexInTree(tree: LeanIMT, commitment: bigint): number {
|
||||
if (index === -1) {
|
||||
throw new Error("This commitment was not found in the tree");
|
||||
} else {
|
||||
console.log(`Index of commitment in the registry: ${index}`);
|
||||
// console.log(`Index of commitment in the registry: ${index}`);
|
||||
}
|
||||
return index;
|
||||
}
|
||||
792
common/yarn.lock
792
common/yarn.lock
@@ -41,6 +41,53 @@
|
||||
dependencies:
|
||||
buffer "^6.0.3"
|
||||
|
||||
array-buffer-byte-length@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
|
||||
integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
|
||||
dependencies:
|
||||
call-bind "^1.0.5"
|
||||
is-array-buffer "^3.0.4"
|
||||
|
||||
array-includes@^3.0.2:
|
||||
version "3.1.8"
|
||||
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d"
|
||||
integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-abstract "^1.23.2"
|
||||
es-object-atoms "^1.0.0"
|
||||
get-intrinsic "^1.2.4"
|
||||
is-string "^1.0.7"
|
||||
|
||||
array.prototype.reduce@^1.0.6:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz#6aadc2f995af29cb887eb866d981dc85ab6f7dc7"
|
||||
integrity sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-abstract "^1.23.2"
|
||||
es-array-method-boxes-properly "^1.0.0"
|
||||
es-errors "^1.3.0"
|
||||
es-object-atoms "^1.0.0"
|
||||
is-string "^1.0.7"
|
||||
|
||||
arraybuffer.prototype.slice@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6"
|
||||
integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==
|
||||
dependencies:
|
||||
array-buffer-byte-length "^1.0.1"
|
||||
call-bind "^1.0.5"
|
||||
define-properties "^1.2.1"
|
||||
es-abstract "^1.22.3"
|
||||
es-errors "^1.2.1"
|
||||
get-intrinsic "^1.2.3"
|
||||
is-array-buffer "^3.0.4"
|
||||
is-shared-array-buffer "^1.0.2"
|
||||
|
||||
asn1.js@^5.4.1:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
|
||||
@@ -51,16 +98,28 @@ asn1.js@^5.4.1:
|
||||
minimalistic-assert "^1.0.0"
|
||||
safer-buffer "^2.1.0"
|
||||
|
||||
available-typed-arrays@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
|
||||
integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
|
||||
dependencies:
|
||||
possible-typed-array-names "^1.0.0"
|
||||
|
||||
base64-js@^1.3.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
|
||||
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
|
||||
|
||||
bn.js@^4.0.0:
|
||||
bn.js@^4.0.0, bn.js@^4.11.9:
|
||||
version "4.12.0"
|
||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
|
||||
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
|
||||
|
||||
brorand@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
|
||||
integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
|
||||
|
||||
buffer@^6.0.3:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
|
||||
@@ -69,11 +128,304 @@ buffer@^6.0.3:
|
||||
base64-js "^1.3.1"
|
||||
ieee754 "^1.2.1"
|
||||
|
||||
call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
|
||||
integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
|
||||
dependencies:
|
||||
es-define-property "^1.0.0"
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
get-intrinsic "^1.2.4"
|
||||
set-function-length "^1.2.1"
|
||||
|
||||
data-view-buffer@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2"
|
||||
integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==
|
||||
dependencies:
|
||||
call-bind "^1.0.6"
|
||||
es-errors "^1.3.0"
|
||||
is-data-view "^1.0.1"
|
||||
|
||||
data-view-byte-length@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2"
|
||||
integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
es-errors "^1.3.0"
|
||||
is-data-view "^1.0.1"
|
||||
|
||||
data-view-byte-offset@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a"
|
||||
integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==
|
||||
dependencies:
|
||||
call-bind "^1.0.6"
|
||||
es-errors "^1.3.0"
|
||||
is-data-view "^1.0.1"
|
||||
|
||||
define-data-property@^1.0.1, define-data-property@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
|
||||
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
|
||||
dependencies:
|
||||
es-define-property "^1.0.0"
|
||||
es-errors "^1.3.0"
|
||||
gopd "^1.0.1"
|
||||
|
||||
define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
|
||||
integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
|
||||
dependencies:
|
||||
define-data-property "^1.0.1"
|
||||
has-property-descriptors "^1.0.0"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
elliptic@^6.5.5:
|
||||
version "6.5.5"
|
||||
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded"
|
||||
integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==
|
||||
dependencies:
|
||||
bn.js "^4.11.9"
|
||||
brorand "^1.1.0"
|
||||
hash.js "^1.0.0"
|
||||
hmac-drbg "^1.0.1"
|
||||
inherits "^2.0.4"
|
||||
minimalistic-assert "^1.0.1"
|
||||
minimalistic-crypto-utils "^1.0.1"
|
||||
|
||||
es-abstract@^1.17.0-next.1, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2:
|
||||
version "1.23.3"
|
||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0"
|
||||
integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
|
||||
dependencies:
|
||||
array-buffer-byte-length "^1.0.1"
|
||||
arraybuffer.prototype.slice "^1.0.3"
|
||||
available-typed-arrays "^1.0.7"
|
||||
call-bind "^1.0.7"
|
||||
data-view-buffer "^1.0.1"
|
||||
data-view-byte-length "^1.0.1"
|
||||
data-view-byte-offset "^1.0.0"
|
||||
es-define-property "^1.0.0"
|
||||
es-errors "^1.3.0"
|
||||
es-object-atoms "^1.0.0"
|
||||
es-set-tostringtag "^2.0.3"
|
||||
es-to-primitive "^1.2.1"
|
||||
function.prototype.name "^1.1.6"
|
||||
get-intrinsic "^1.2.4"
|
||||
get-symbol-description "^1.0.2"
|
||||
globalthis "^1.0.3"
|
||||
gopd "^1.0.1"
|
||||
has-property-descriptors "^1.0.2"
|
||||
has-proto "^1.0.3"
|
||||
has-symbols "^1.0.3"
|
||||
hasown "^2.0.2"
|
||||
internal-slot "^1.0.7"
|
||||
is-array-buffer "^3.0.4"
|
||||
is-callable "^1.2.7"
|
||||
is-data-view "^1.0.1"
|
||||
is-negative-zero "^2.0.3"
|
||||
is-regex "^1.1.4"
|
||||
is-shared-array-buffer "^1.0.3"
|
||||
is-string "^1.0.7"
|
||||
is-typed-array "^1.1.13"
|
||||
is-weakref "^1.0.2"
|
||||
object-inspect "^1.13.1"
|
||||
object-keys "^1.1.1"
|
||||
object.assign "^4.1.5"
|
||||
regexp.prototype.flags "^1.5.2"
|
||||
safe-array-concat "^1.1.2"
|
||||
safe-regex-test "^1.0.3"
|
||||
string.prototype.trim "^1.2.9"
|
||||
string.prototype.trimend "^1.0.8"
|
||||
string.prototype.trimstart "^1.0.8"
|
||||
typed-array-buffer "^1.0.2"
|
||||
typed-array-byte-length "^1.0.1"
|
||||
typed-array-byte-offset "^1.0.2"
|
||||
typed-array-length "^1.0.6"
|
||||
unbox-primitive "^1.0.2"
|
||||
which-typed-array "^1.1.15"
|
||||
|
||||
es-array-method-boxes-properly@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e"
|
||||
integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
|
||||
|
||||
es-define-property@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
|
||||
integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
|
||||
dependencies:
|
||||
get-intrinsic "^1.2.4"
|
||||
|
||||
es-errors@^1.2.1, es-errors@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
|
||||
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
|
||||
|
||||
es-object-atoms@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941"
|
||||
integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
|
||||
dependencies:
|
||||
es-errors "^1.3.0"
|
||||
|
||||
es-set-tostringtag@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777"
|
||||
integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==
|
||||
dependencies:
|
||||
get-intrinsic "^1.2.4"
|
||||
has-tostringtag "^1.0.2"
|
||||
hasown "^2.0.1"
|
||||
|
||||
es-to-primitive@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
|
||||
integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
|
||||
dependencies:
|
||||
is-callable "^1.1.4"
|
||||
is-date-object "^1.0.1"
|
||||
is-symbol "^1.0.2"
|
||||
|
||||
es7-shim@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/es7-shim/-/es7-shim-6.0.0.tgz#0c430b40b8505ad15570721a8d8dd4eb0c553155"
|
||||
integrity sha512-aiQ/QyJBVJbabtsSediM1S4qI+P3p8F5J5YR5o/bH003BCnnclzxK9pi5Qd2Hg01ktAtZCaQBdejHrkOBGwf5Q==
|
||||
dependencies:
|
||||
array-includes "^3.0.2"
|
||||
object.entries "^1.0.3"
|
||||
object.getownpropertydescriptors "^2.0.2"
|
||||
object.values "^1.0.3"
|
||||
string-at "^1.0.1"
|
||||
string.prototype.padend "^3.0.0"
|
||||
string.prototype.padstart "^3.0.0"
|
||||
string.prototype.trimleft "^2.0.0"
|
||||
string.prototype.trimright "^2.0.0"
|
||||
|
||||
for-each@^0.3.3:
|
||||
version "0.3.3"
|
||||
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
|
||||
integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
|
||||
dependencies:
|
||||
is-callable "^1.1.3"
|
||||
|
||||
fs@^0.0.1-security:
|
||||
version "0.0.1-security"
|
||||
resolved "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4"
|
||||
integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==
|
||||
|
||||
function-bind@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
||||
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
||||
|
||||
function.prototype.name@^1.1.6:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd"
|
||||
integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
define-properties "^1.2.0"
|
||||
es-abstract "^1.22.1"
|
||||
functions-have-names "^1.2.3"
|
||||
|
||||
functions-have-names@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
|
||||
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
|
||||
|
||||
get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
|
||||
integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
|
||||
dependencies:
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
has-proto "^1.0.1"
|
||||
has-symbols "^1.0.3"
|
||||
hasown "^2.0.0"
|
||||
|
||||
get-symbol-description@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5"
|
||||
integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==
|
||||
dependencies:
|
||||
call-bind "^1.0.5"
|
||||
es-errors "^1.3.0"
|
||||
get-intrinsic "^1.2.4"
|
||||
|
||||
globalthis@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
|
||||
integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
|
||||
dependencies:
|
||||
define-properties "^1.2.1"
|
||||
gopd "^1.0.1"
|
||||
|
||||
gopd@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
|
||||
integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
|
||||
dependencies:
|
||||
get-intrinsic "^1.1.3"
|
||||
|
||||
has-bigints@^1.0.1, has-bigints@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
|
||||
integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
|
||||
|
||||
has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
|
||||
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
|
||||
dependencies:
|
||||
es-define-property "^1.0.0"
|
||||
|
||||
has-proto@^1.0.1, has-proto@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
|
||||
integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
|
||||
|
||||
has-symbols@^1.0.2, has-symbols@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
|
||||
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
|
||||
|
||||
has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
|
||||
integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
|
||||
dependencies:
|
||||
has-symbols "^1.0.3"
|
||||
|
||||
hash.js@^1.0.0, hash.js@^1.0.3:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
|
||||
integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
|
||||
dependencies:
|
||||
inherits "^2.0.3"
|
||||
minimalistic-assert "^1.0.1"
|
||||
|
||||
hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
|
||||
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
|
||||
dependencies:
|
||||
function-bind "^1.1.2"
|
||||
|
||||
hmac-drbg@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
|
||||
integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==
|
||||
dependencies:
|
||||
hash.js "^1.0.3"
|
||||
minimalistic-assert "^1.0.0"
|
||||
minimalistic-crypto-utils "^1.0.1"
|
||||
|
||||
ieee754@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
|
||||
@@ -84,11 +436,122 @@ inherits@2.0.3:
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
|
||||
|
||||
inherits@^2.0.1:
|
||||
inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
internal-slot@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802"
|
||||
integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
|
||||
dependencies:
|
||||
es-errors "^1.3.0"
|
||||
hasown "^2.0.0"
|
||||
side-channel "^1.0.4"
|
||||
|
||||
is-array-buffer@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98"
|
||||
integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
get-intrinsic "^1.2.1"
|
||||
|
||||
is-bigint@^1.0.1:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
|
||||
integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
|
||||
dependencies:
|
||||
has-bigints "^1.0.1"
|
||||
|
||||
is-boolean-object@^1.1.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
|
||||
integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
|
||||
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
|
||||
|
||||
is-data-view@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f"
|
||||
integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==
|
||||
dependencies:
|
||||
is-typed-array "^1.1.13"
|
||||
|
||||
is-date-object@^1.0.1:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
|
||||
integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
|
||||
dependencies:
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-negative-zero@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747"
|
||||
integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
|
||||
|
||||
is-number-object@^1.0.4:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc"
|
||||
integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
|
||||
dependencies:
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-regex@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
|
||||
integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688"
|
||||
integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
|
||||
is-string@^1.0.5, is-string@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
|
||||
integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
|
||||
dependencies:
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-symbol@^1.0.2, is-symbol@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
|
||||
integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
|
||||
dependencies:
|
||||
has-symbols "^1.0.2"
|
||||
|
||||
is-typed-array@^1.1.13:
|
||||
version "1.1.13"
|
||||
resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229"
|
||||
integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==
|
||||
dependencies:
|
||||
which-typed-array "^1.1.14"
|
||||
|
||||
is-weakref@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
|
||||
integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
|
||||
isarray@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
|
||||
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
|
||||
|
||||
js-sha1@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/js-sha1/-/js-sha1-0.7.0.tgz#fecaf5f36bb09a51b01da46b43a207c8452c9c1e"
|
||||
@@ -104,20 +567,94 @@ js-sha512@^0.9.0:
|
||||
resolved "https://registry.yarnpkg.com/js-sha512/-/js-sha512-0.9.0.tgz#ed569aa1e4bdaf0b83363c29db1ab87b1192d9ae"
|
||||
integrity sha512-mirki9WS/SUahm+1TbAPkqvbCiCfOAAsyXeHxK1UkullnJVVqoJG2pL9ObvT05CN+tM7fxhfYm0NbXn+1hWoZg==
|
||||
|
||||
json-to-ts@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/json-to-ts/-/json-to-ts-2.1.0.tgz#c68c0b210a811e8dccbe2752e68efbc0ca62bfc5"
|
||||
integrity sha512-JeScjtIGYAxQVxEYgQUKROU0329eS+rsTSviGtuKiwKuXpcIU7DxhDYm2tey0vcBetwc9kD0+YHDI5KvEexMew==
|
||||
dependencies:
|
||||
es7-shim "^6.0.0"
|
||||
hash.js "^1.0.3"
|
||||
pluralize "^3.1.0"
|
||||
|
||||
jsrsasign@^11.1.0:
|
||||
version "11.1.0"
|
||||
resolved "https://registry.yarnpkg.com/jsrsasign/-/jsrsasign-11.1.0.tgz#195e788102731102fbf3e36b33fde28936f4bf57"
|
||||
integrity sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==
|
||||
|
||||
minimalistic-assert@^1.0.0:
|
||||
lodash-es@^4.17.10:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
|
||||
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
|
||||
|
||||
lodash@^4.17.10:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
||||
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
|
||||
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
|
||||
|
||||
node-forge@^1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz"
|
||||
integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
|
||||
minimalistic-crypto-utils@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
||||
integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
|
||||
|
||||
"node-forge@https://github.com/remicolin/forge":
|
||||
version "1.3.2-0"
|
||||
resolved "https://github.com/remicolin/forge#17a11a632dd0e50343b3b8393245a2696f78afbb"
|
||||
|
||||
object-inspect@^1.13.1:
|
||||
version "1.13.2"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
|
||||
integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
|
||||
|
||||
object-keys@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
|
||||
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
|
||||
|
||||
object.assign@^4.1.5:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0"
|
||||
integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.5"
|
||||
define-properties "^1.2.1"
|
||||
has-symbols "^1.0.3"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
object.entries@^1.0.3:
|
||||
version "1.1.8"
|
||||
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41"
|
||||
integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
object.getownpropertydescriptors@^2.0.2:
|
||||
version "2.1.8"
|
||||
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz#2f1fe0606ec1a7658154ccd4f728504f69667923"
|
||||
integrity sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==
|
||||
dependencies:
|
||||
array.prototype.reduce "^1.0.6"
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-abstract "^1.23.2"
|
||||
es-object-atoms "^1.0.0"
|
||||
gopd "^1.0.1"
|
||||
safe-array-concat "^1.1.2"
|
||||
|
||||
object.values@^1.0.3:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b"
|
||||
integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
path@^0.12.7:
|
||||
version "0.12.7"
|
||||
@@ -127,11 +664,21 @@ path@^0.12.7:
|
||||
process "^0.11.1"
|
||||
util "^0.10.3"
|
||||
|
||||
pluralize@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-3.1.0.tgz#84213d0a12356069daa84060c559242633161368"
|
||||
integrity sha512-2wcybwjwXOzGI1rlxWtlcs0/nSYK0OzNPqsg35TKxJFQlGhFu3cZ1x7EHS4r4bubQlhzyF4YxxlJqQnIhkUQCw==
|
||||
|
||||
poseidon-lite@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/poseidon-lite/-/poseidon-lite-0.2.0.tgz#dbc242ebd9c10c32d507a533fa497231d168fd72"
|
||||
integrity sha512-vivDZnGmz8W4G/GzVA72PXkfYStjilu83rjjUfpL4PueKcC8nfX6hCPh2XhoC5FBgC6y0TA3YuUeUo5YCcNoig==
|
||||
|
||||
possible-typed-array-names@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
|
||||
integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
|
||||
|
||||
process@^0.11.1:
|
||||
version "0.11.10"
|
||||
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
|
||||
@@ -142,11 +689,220 @@ regenerator-runtime@^0.14.0:
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
|
||||
integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
|
||||
|
||||
regexp.prototype.flags@^1.5.2:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334"
|
||||
integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
|
||||
dependencies:
|
||||
call-bind "^1.0.6"
|
||||
define-properties "^1.2.1"
|
||||
es-errors "^1.3.0"
|
||||
set-function-name "^2.0.1"
|
||||
|
||||
safe-array-concat@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb"
|
||||
integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
get-intrinsic "^1.2.4"
|
||||
has-symbols "^1.0.3"
|
||||
isarray "^2.0.5"
|
||||
|
||||
safe-regex-test@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377"
|
||||
integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==
|
||||
dependencies:
|
||||
call-bind "^1.0.6"
|
||||
es-errors "^1.3.0"
|
||||
is-regex "^1.1.4"
|
||||
|
||||
safer-buffer@^2.1.0:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
set-function-length@^1.2.1:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
|
||||
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
|
||||
dependencies:
|
||||
define-data-property "^1.1.4"
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
get-intrinsic "^1.2.4"
|
||||
gopd "^1.0.1"
|
||||
has-property-descriptors "^1.0.2"
|
||||
|
||||
set-function-name@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
|
||||
integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
|
||||
dependencies:
|
||||
define-data-property "^1.1.4"
|
||||
es-errors "^1.3.0"
|
||||
functions-have-names "^1.2.3"
|
||||
has-property-descriptors "^1.0.2"
|
||||
|
||||
side-channel@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
|
||||
integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
es-errors "^1.3.0"
|
||||
get-intrinsic "^1.2.4"
|
||||
object-inspect "^1.13.1"
|
||||
|
||||
string-at@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/string-at/-/string-at-1.1.0.tgz#332e090c5724418266a27a09394924b9fad41275"
|
||||
integrity sha512-jCpPowWKBn0NFdvtmK2qxK40Ol4jPcgCt8qYnKpPx6B5eDwHMDhRvq9MCsDEgsOTNtbXY6beAMHMRT2qPJXllA==
|
||||
dependencies:
|
||||
define-properties "^1.1.3"
|
||||
es-abstract "^1.17.0-next.1"
|
||||
|
||||
string.prototype.padend@^3.0.0:
|
||||
version "3.1.6"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz#ba79cf8992609a91c872daa47c6bb144ee7f62a5"
|
||||
integrity sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-abstract "^1.23.2"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
string.prototype.padstart@^3.0.0:
|
||||
version "3.1.6"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.1.6.tgz#bda3b28098270e1e285e08318e47ad53bc601ffd"
|
||||
integrity sha512-1y15lz7otgfRTAVK5qbp3eHIga+w8j7+jIH+7HpUrOfnLVl6n0hbspi4EXf4tR+PNOpBjPstltemkx0SvViOCg==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-abstract "^1.23.0"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
string.prototype.trim@^1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4"
|
||||
integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-abstract "^1.23.0"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
string.prototype.trimend@^1.0.3, string.prototype.trimend@^1.0.8:
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229"
|
||||
integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
string.prototype.trimleft@^2.0.0:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.3.tgz#dee305118117d0a1843c1fc0d38d5d0754d83c60"
|
||||
integrity sha512-699Ibssmj/awVzvdNk4g83/Iu8U9vDohzmA/ly2BrQWGhamuY4Tlvs5XKmKliDt3ky6SKbE1bzPhASKCFlx9Sg==
|
||||
dependencies:
|
||||
call-bind "^1.0.0"
|
||||
define-properties "^1.1.3"
|
||||
string.prototype.trimstart "^1.0.3"
|
||||
|
||||
string.prototype.trimright@^2.0.0:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.3.tgz#dc16a21d7456cbc8b2c54d47fe01f06d9efe94eb"
|
||||
integrity sha512-hoOq56oRFnnfDuXNy2lGHiwT77MehHv9d0zGfRZ8QdC+4zjrkFB9vd5i/zYTd/ymFBd4YxtbdgHt3U6ksGeuBw==
|
||||
dependencies:
|
||||
call-bind "^1.0.0"
|
||||
define-properties "^1.1.3"
|
||||
string.prototype.trimend "^1.0.3"
|
||||
|
||||
string.prototype.trimstart@^1.0.3, string.prototype.trimstart@^1.0.8:
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde"
|
||||
integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
define-properties "^1.2.1"
|
||||
es-object-atoms "^1.0.0"
|
||||
|
||||
tslib@^1.9.3:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
|
||||
typed-array-buffer@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3"
|
||||
integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
es-errors "^1.3.0"
|
||||
is-typed-array "^1.1.13"
|
||||
|
||||
typed-array-byte-length@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67"
|
||||
integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
for-each "^0.3.3"
|
||||
gopd "^1.0.1"
|
||||
has-proto "^1.0.3"
|
||||
is-typed-array "^1.1.13"
|
||||
|
||||
typed-array-byte-offset@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063"
|
||||
integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==
|
||||
dependencies:
|
||||
available-typed-arrays "^1.0.7"
|
||||
call-bind "^1.0.7"
|
||||
for-each "^0.3.3"
|
||||
gopd "^1.0.1"
|
||||
has-proto "^1.0.3"
|
||||
is-typed-array "^1.1.13"
|
||||
|
||||
typed-array-length@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3"
|
||||
integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
for-each "^0.3.3"
|
||||
gopd "^1.0.1"
|
||||
has-proto "^1.0.3"
|
||||
is-typed-array "^1.1.13"
|
||||
possible-typed-array-names "^1.0.0"
|
||||
|
||||
typescript-parser@^2.6.1:
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/typescript-parser/-/typescript-parser-2.6.1.tgz#b5f86e3f9d35ad46a346a32068cab61bbd96f803"
|
||||
integrity sha512-p4ZC10pu67KO8+WJALsJWhbAq4pRBIcP+ls8Bhl+V8KvzYQDwxw/P5hJhn3rBdLnfS5aGLflfh7WiZpN6yi+5g==
|
||||
dependencies:
|
||||
lodash "^4.17.10"
|
||||
lodash-es "^4.17.10"
|
||||
tslib "^1.9.3"
|
||||
typescript "^3.0.3"
|
||||
|
||||
typescript@^3.0.3:
|
||||
version "3.9.10"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8"
|
||||
integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==
|
||||
|
||||
unbox-primitive@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
|
||||
integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
has-bigints "^1.0.2"
|
||||
has-symbols "^1.0.3"
|
||||
which-boxed-primitive "^1.0.2"
|
||||
|
||||
undici-types@~5.26.4:
|
||||
version "5.26.5"
|
||||
resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz"
|
||||
@@ -158,3 +914,25 @@ util@^0.10.3:
|
||||
integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
|
||||
dependencies:
|
||||
inherits "2.0.3"
|
||||
|
||||
which-boxed-primitive@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
|
||||
integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
|
||||
dependencies:
|
||||
is-bigint "^1.0.1"
|
||||
is-boolean-object "^1.1.0"
|
||||
is-number-object "^1.0.4"
|
||||
is-string "^1.0.5"
|
||||
is-symbol "^1.0.3"
|
||||
|
||||
which-typed-array@^1.1.14, which-typed-array@^1.1.15:
|
||||
version "1.1.15"
|
||||
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d"
|
||||
integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==
|
||||
dependencies:
|
||||
available-typed-arrays "^1.0.7"
|
||||
call-bind "^1.0.7"
|
||||
for-each "^0.3.3"
|
||||
gopd "^1.0.1"
|
||||
has-tostringtag "^1.0.2"
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user