diff --git a/examples/arbitrary_batched.example.ts b/examples/generic_batched.example.ts similarity index 89% rename from examples/arbitrary_batched.example.ts rename to examples/generic_batched.example.ts index 48133a9..50f776b 100644 --- a/examples/arbitrary_batched.example.ts +++ b/examples/generic_batched.example.ts @@ -3,10 +3,10 @@ /* eslint-disable security/detect-object-injection */ -import { TokenRequest } from '../src/arbitrary_batched_token.js'; -import { type Token, type TokenChallenge, arbitraryBatched, publicVerif } from '../src/index.js'; +import { TokenRequest } from '../src/generic_batched_token.js'; +import { type Token, type TokenChallenge, genericBatched, publicVerif } from '../src/index.js'; type BlindRSAMode = publicVerif.BlindRSAMode; -const { Client, Issuer } = arbitraryBatched; +const { Client, Issuer } = genericBatched; async function setupPublicVerif(mode: BlindRSAMode) { // [ Issuer ] creates a key pair. @@ -82,8 +82,8 @@ async function rsaVariant(): Promise { if (res.tokenResponse === null) { continue; } - const r = publicVerif.TokenResponse.deserialize(res.tokenResponse); - tokens[i] = await clients[i].finalize(r); + const r = res.tokenResponse; + tokens[i] = await clients[i].finalize(r as publicVerif.TokenResponse); i += 1; } @@ -95,11 +95,11 @@ async function rsaVariant(): Promise { isValid &&= token !== undefined && (await origins[i].verify(token, issuers[i].publicKey)); } - console.log('Arbitrary batched tokens'); + console.log('Generic batched tokens'); console.log(` Valid token: ${isValid}`); return isValid; } -export function arbitraryBatchedTokens(): Promise { +export function genericBatchedTokens(): Promise { return rsaVariant(); } diff --git a/examples/index.ts b/examples/index.ts index f40edc0..016dfe5 100644 --- a/examples/index.ts +++ b/examples/index.ts @@ -3,7 +3,7 @@ import { webcrypto } from 'node:crypto'; -import { arbitraryBatchedTokens } from './arbitrary_batched.example.js'; +import { genericBatchedTokens } from './generic_batched.example.js'; import { publicVerifiableTokensPSS, publicVerifiableTokensPSSZero } from './pub_verif.example.js'; import { publicVerifiableWithMetadataTokensPSS, @@ -23,7 +23,7 @@ async function isOk(fn: () => Promise) { } async function examples() { - await isOk(arbitraryBatchedTokens); + await isOk(genericBatchedTokens); await isOk(privateVerifiableTokens); await isOk(publicVerifiableTokensPSS); await isOk(publicVerifiableTokensPSSZero); diff --git a/package-lock.json b/package-lock.json index dbf11ce..3bb1e00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "devDependencies": { "@eslint/js": "9.9.1", "@types/benchmark": "2.1.5", + "@types/node": "^25.2.3", "@vitest/coverage-v8": "3.0.7", "benchmark": "2.1.4", "eslint": "8.57.1", @@ -1141,44 +1142,19 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/@types/node": { - "version": "22.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.1.tgz", - "integrity": "sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~7.16.0" } }, "node_modules/@typescript-eslint/eslint-plugin": { @@ -3987,13 +3963,10 @@ } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true }, "node_modules/uri-js": { "version": "4.4.1", diff --git a/package.json b/package.json index 27db672..4e6bf4d 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "devDependencies": { "@eslint/js": "9.9.1", "@types/benchmark": "2.1.5", + "@types/node": "^25.2.3", "@vitest/coverage-v8": "3.0.7", "benchmark": "2.1.4", "eslint": "8.57.1", diff --git a/src/arbitrary_batched_token.ts b/src/generic_batched_token.ts similarity index 65% rename from src/arbitrary_batched_token.ts rename to src/generic_batched_token.ts index 697dcb7..a69f963 100644 --- a/src/arbitrary_batched_token.ts +++ b/src/generic_batched_token.ts @@ -3,16 +3,32 @@ import * as varint from 'quicvarint'; +import type { privateVerif, publicVerif } from './index.js'; import { type Token, TOKEN_TYPES, tokenEntryToSerializedLength, tokenRequestToTokenTypeEntry, } from './index.js'; -import { Issuer as Type1Issuer, TokenRequest as Type1TokenRequest } from './priv_verif_token.js'; -import { Issuer as Type2Issuer, TokenRequest as Type2TokenRequest } from './pub_verif_token.js'; +import { + Issuer as Type1Issuer, + TokenRequest as Type1TokenRequest, + TokenResponse as Type1TokenResponse, +} from './priv_verif_token.js'; +import { + TokenResponse as Type2TokenResponse, + Issuer as Type2Issuer, + TokenRequest as Type2TokenRequest, +} from './pub_verif_token.js'; import { joinAll } from './util.js'; +const TokenStatus = { + ABSENT: 0x00, + PRESENT: 0x01, +} as const; + +type TokenStatus = (typeof TokenStatus)[keyof typeof TokenStatus]; + export class TokenRequest { // struct { // uint16_t token_type; @@ -121,35 +137,85 @@ export class BatchedTokenRequest { export class OptionalTokenResponse { // struct { - // TokenResponse token_response<0..2^16-1>; /* Defined by token_type */ + // uint8 present; + // select (present) { + // case 0: ; /* empty */ + // case 1: + // uint16 token_type; + // GenericTokenResponse generic_token_response; /* Defined by token_type */ + // } // } OptionalTokenResponse; - constructor(public readonly tokenResponse: null | Uint8Array) {} + constructor( + public readonly tokenType: 1 | 2, + public readonly tokenResponse: + | null + | publicVerif.TokenResponse + | privateVerif.TokenResponse, + ) {} static deserialize(bytes: Uint8Array): OptionalTokenResponse { if (bytes.length === 0) { - return new OptionalTokenResponse(null); + throw new Error('OptionalTokenResponse MUST be of length strictly greater than 0'); + } + switch (bytes[0]) { + case TokenStatus.ABSENT: + // For absent responses, we still need a token type but it doesn't matter + // We use 1 as a placeholder since the response is null + return new OptionalTokenResponse(1, null); + case TokenStatus.PRESENT: { + if (bytes.length < 3) { + throw new Error('OptionalTokenResponse PRESENT requires at least 3 bytes'); + } + // Parse token_type from bytes[1:3] big-endian + const tokenType = (bytes[1] << 8) | bytes[2]; + if ( + tokenType !== TOKEN_TYPES.VOPRF.value && + tokenType !== TOKEN_TYPES.BLIND_RSA.value + ) { + throw new Error(`unsupported token type: ${tokenType}`); + } + const responseBytes = bytes.slice(3); + const response = + tokenType === TOKEN_TYPES.VOPRF.value + ? Type1TokenResponse.deserialize(responseBytes) + : Type2TokenResponse.deserialize(responseBytes); + return new OptionalTokenResponse(tokenType as 1 | 2, response); + } + default: + throw new Error('OptionalTokenResponse MUST start with either 0x00 or 0x01'); } - return new OptionalTokenResponse(bytes); } serialize(): Uint8Array { if (this.tokenResponse === null) { - return new Uint8Array(); + return new Uint8Array([TokenStatus.ABSENT]); } - return this.tokenResponse; + const serialized = this.tokenResponse.serialize(); + // Format: [present:1][token_type:2 big-endian][response_data] + const result = new Uint8Array(1 + 2 + serialized.length); + result[0] = TokenStatus.PRESENT; + result[1] = (this.tokenType >> 8) & 0xff; + result[2] = this.tokenType & 0xff; + result.set(serialized, 3); + return result; + } + + /** Returns the serialized length of this response */ + length(): number { + if (this.tokenResponse === null) { + return 1; // just the ABSENT byte + } + return 1 + 2 + this.tokenResponse.length(); // present + token_type + response } } -// struct { -// OptionalTokenResponse token_responses<0..2^16-1>; -// } BatchTokenResponse -export class BatchedTokenResponse { +export class GenericBatchTokenResponse { // struct { - // TokenRequest token_requests; - // } BatchTokenRequest + // OptionalTokenResponse optional_token_responses; + // } GenericBatchTokenResponse constructor(public readonly tokenResponses: OptionalTokenResponse[]) {} - static deserialize(bytes: Uint8Array): BatchedTokenResponse { + static deserialize(bytes: Uint8Array): GenericBatchTokenResponse { let offset = 0; const input = new DataView(bytes.buffer); @@ -163,15 +229,12 @@ export class BatchedTokenResponse { const batchedTokenResponses: OptionalTokenResponse[] = []; while (offset < bytes.length) { - const len = input.getUint16(offset); - offset += 2; - const b = new Uint8Array(input.buffer.slice(offset, offset + len)); - offset += len; - - batchedTokenResponses.push(OptionalTokenResponse.deserialize(b)); + const otr = OptionalTokenResponse.deserialize(bytes.slice(offset)); + offset += otr.length(); + batchedTokenResponses.push(otr); } - return new BatchedTokenResponse(batchedTokenResponses); + return new GenericBatchTokenResponse(batchedTokenResponses); } serialize(): Uint8Array { @@ -181,11 +244,6 @@ export class BatchedTokenResponse { for (const tokenResponse of this.tokenResponses) { const tokenResponseSerialized = tokenResponse.serialize(); - const b = new ArrayBuffer(2); - new DataView(b).setUint16(0, tokenResponseSerialized.length); - output.push(b); - length += 2; - output.push(tokenResponseSerialized); length += tokenResponseSerialized.length; } @@ -246,23 +304,22 @@ export class Issuer { throw new Error('no issuer found provided the truncated token key id'); } - async issue(tokenRequests: BatchedTokenRequest): Promise { + async issue(tokenRequests: BatchedTokenRequest): Promise { const tokenResponses: OptionalTokenResponse[] = []; for (const tokenRequest of tokenRequests) { + const tokenType = tokenRequest.tokenType as 1 | 2; try { - const issuer = await this.issuer( - tokenRequest.tokenType, - tokenRequest.truncatedTokenKeyId, - ); - const response = (await issuer.issue(tokenRequest.tokenRequest)).serialize(); - tokenResponses.push(new OptionalTokenResponse(response)); + const issuer = await this.issuer(tokenType, tokenRequest.truncatedTokenKeyId); + const response = await issuer.issue(tokenRequest.tokenRequest); + tokenResponses.push(new OptionalTokenResponse(tokenType, response)); // eslint-disable-next-line @typescript-eslint/no-unused-vars - } catch (_) { - tokenResponses.push(new OptionalTokenResponse(null)); + } catch (e) { + console.log(e); + tokenResponses.push(new OptionalTokenResponse(tokenType, null)); } } - return new BatchedTokenResponse(tokenResponses); + return new GenericBatchTokenResponse(tokenResponses); } tokenKeyIDs(tokenType: 1 | 2): Promise { @@ -298,7 +355,7 @@ export class Client { return new BatchedTokenRequest(tokenRequests); } - deserializeTokenResponse(bytes: Uint8Array): BatchedTokenResponse { - return BatchedTokenResponse.deserialize(bytes); + deserializeTokenResponse(bytes: Uint8Array): GenericBatchTokenResponse { + return GenericBatchTokenResponse.deserialize(bytes); } } diff --git a/src/index.ts b/src/index.ts index 58fd4c2..acf5636 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,7 +16,7 @@ import { convertEncToRSASSAPSS, convertRSASSAPSSToEnc } from './util.js'; export const util = { convertEncToRSASSAPSS, convertRSASSAPSSToEnc }; export * from './auth_scheme/private_token.js'; export * from './issuance.js'; -export * as arbitraryBatched from './arbitrary_batched_token.js'; +export * as genericBatched from './generic_batched_token.js'; export * as privateVerif from './priv_verif_token.js'; export * as publicVerif from './pub_verif_token.js'; diff --git a/src/issuance.ts b/src/issuance.ts index d58d47e..2052615 100644 --- a/src/issuance.ts +++ b/src/issuance.ts @@ -13,8 +13,8 @@ export enum MediaType { PRIVATE_TOKEN_ISSUER_DIRECTORY = 'application/private-token-issuer-directory', PRIVATE_TOKEN_REQUEST = 'application/private-token-request', PRIVATE_TOKEN_RESPONSE = 'application/private-token-response', - ARBITRARY_BATCHED_TOKEN_REQUEST = 'application/private-token-arbitrary-batch-request', - ARBITRARY_BATCHED_TOKEN_RESPONSE = 'application/private-token-arbitrary-batch-response', + ARBITRARY_BATCHED_TOKEN_REQUEST = 'application/private-token-generic-batch-request', + ARBITRARY_BATCHED_TOKEN_RESPONSE = 'application/private-token-generic-batch-response', } // Issuer 'token-keys' object description' diff --git a/src/priv_verif_token.ts b/src/priv_verif_token.ts index a75853d..2e7a374 100644 --- a/src/priv_verif_token.ts +++ b/src/priv_verif_token.ts @@ -163,6 +163,10 @@ export class TokenResponse { serialize(): Uint8Array { return new Uint8Array(joinAll([this.evaluateMsg, this.evaluateProof])); } + + length(): number { + return this.evaluateMsg.length + this.evaluateProof.length; + } } export function verifyToken(token: Token, privateKeyIssuer: Uint8Array): Promise { diff --git a/src/pub_verif_token.ts b/src/pub_verif_token.ts index c9c2ad0..c89d704 100644 --- a/src/pub_verif_token.ts +++ b/src/pub_verif_token.ts @@ -200,7 +200,7 @@ export class TokenResponse { constructor(public readonly blindSig: Uint8Array) { if (blindSig.length !== BLIND_RSA.Nk) { - throw new Error('blind signature has invalid size'); + throw new Error(`blind signature has invalid size: ${blindSig.length}`); } } @@ -211,6 +211,10 @@ export class TokenResponse { serialize(): Uint8Array { return new Uint8Array(this.blindSig); } + + length(): number { + return this.blindSig.length; + } } abstract class PubliclyVerifiableIssuer { diff --git a/test/arbitrary_batched_token.test.ts b/test/generic_batched_token.test.ts similarity index 70% rename from test/arbitrary_batched_token.test.ts rename to test/generic_batched_token.test.ts index 8ad4ca7..beeda62 100644 --- a/test/arbitrary_batched_token.test.ts +++ b/test/generic_batched_token.test.ts @@ -8,10 +8,10 @@ import { describe, expect, test, vi } from 'vitest'; import { BatchedTokenRequest, - BatchedTokenResponse, + GenericBatchTokenResponse, Issuer, TokenRequest, -} from '../src/arbitrary_batched_token'; +} from '../src/generic_batched_token'; import { type Token, TokenChallenge, @@ -19,39 +19,49 @@ import { privateVerif, publicVerif, } from '../src/index.js'; -const { Client: Type1Client } = privateVerif; -const { BlindRSAMode, Client: Type2Client } = publicVerif; import { keysFromVector as type2KeysFromVector } from './pub_verif_token.js'; -import { hexToUint8, testSerialize, uint8ToHex } from './util.js'; +import { hexToUint8, uint8ToHex } from './util.js'; // https://github.com/cloudflare/pat-go/blob/main/tokens/batched/batched-issuance-test-vectors.json -import vectorsGo from './test_data/arbitrary_batched_tokens_v5_go.json'; -// https://raw.githubusercontent.com/raphaelrobert/privacypass/0600835c039c4b89f2137be3f5b1ecbeffe05417/tests/kat_vectors/arbitrary_rs.json -import vectorsRust from './test_data/arbitrary_batched_tokens_v5_rs.json'; +import vectorsGo from './test_data/generic_batched_tokens_v6_go.json'; +// https://raw.githubusercontent.com/raphaelrobert/privacypass/0600835c039c4b89f2137be3f5b1ecbeffe05417/tests/kat_vectors/generic_rs.json +import vectorsRust from './test_data/generic_batched_tokens_v6_rs.json'; const vectors = [...vectorsGo, ...vectorsRust]; +console.log('NUMBEROFVECTORS', vectors.length); type Vectors = (typeof vectors)[number]; const SUPPORTED_TYPES = [TOKEN_TYPES.VOPRF.value, TOKEN_TYPES.BLIND_RSA.value].map((t) => t.toString().padStart(4, '0'), ); -describe.each(vectors)('ArbitraryBatched-Vector-%#', (v: Vectors) => { +const token_type = (i: unknown): string => { + if (typeof i !== 'object' || i === null) { + throw new Error('unsupported'); + } + if ('type' in i && typeof i.type === 'string') { + return i.type; + } else if ('token_type' in i && typeof i.token_type === 'string') { + return i.token_type; + } else { + throw new Error('unsupported'); + } +}; + +describe.each(vectors)('GenericBatched-Vector-%#', (v: Vectors) => { const params = [[], [{ supportsRSARAW: true }]]; - test.each(params)('ArbitraryBatched-Vector-%#-Issuer-Params-%#', async (...params) => { + test.each(params)('GenericBatched-Vector-%#-Issuer-Params-%#', async (...params) => { // if the test vector contains an unsupported type, skip the test - if (v.issuance.find((i) => !SUPPORTED_TYPES.includes(i.type)) !== undefined) { - expect(true).toBe(true); - return; - } + console.log(v.issuance.map(token_type)); + expect(v.issuance.every((i) => SUPPORTED_TYPES.includes(token_type(i)))).toBe(true); const tokenRequests = new Array(v.issuance.length); const issuers = new Array(v.issuance.length); const clients = new Array(v.issuance.length); for (let i = 0; i < v.issuance.length; i += 1) { const issuance = v.issuance[i]; - const type = Number.parseInt(issuance.type); + const type = Number.parseInt(token_type(issuance)); const nonce = hexToUint8(issuance.nonce); const blind = hexToUint8(issuance.blind); @@ -68,7 +78,7 @@ describe.each(vectors)('ArbitraryBatched-Vector-%#', (v: Vectors) => { Promise.resolve(TOKEN_TYPES.VOPRF.group.desScalar(blind)), ); - const client = new Type1Client(); + const client = new privateVerif.Client(); clients[i] = client; const tokReq = await client.createTokenRequest(tokChl, publicKey); tokenRequests[i] = new TokenRequest(tokReq); @@ -82,21 +92,21 @@ describe.each(vectors)('ArbitraryBatched-Vector-%#', (v: Vectors) => { break; } case TOKEN_TYPES.BLIND_RSA.value: { - if (issuance.salt === undefined) { + if (issuance.salt === undefined || issuance.salt === null) { throw new Error('invalid test vector'); } const salt = hexToUint8(issuance.salt); const mode = - salt.length == (BlindRSAMode.PSS as number) - ? BlindRSAMode.PSS - : BlindRSAMode.PSSZero; + salt.length == (publicVerif.BlindRSAMode.PSS as number) + ? publicVerif.BlindRSAMode.PSS + : publicVerif.BlindRSAMode.PSSZero; vi.spyOn(crypto, 'getRandomValues') .mockReturnValueOnce(nonce) .mockReturnValueOnce(salt) .mockReturnValueOnce(blind); - const client = new Type2Client(mode); + const client = new publicVerif.Client(mode); clients[i] = client; const [{ privateKey, publicKey }, publicKeyEnc] = await type2KeysFromVector(issuance); @@ -125,33 +135,34 @@ describe.each(vectors)('ArbitraryBatched-Vector-%#', (v: Vectors) => { const issuer = new Issuer(...issuers); const tokRes = await issuer.issue(tokReq); - testSerialize(BatchedTokenResponse, tokRes); + const bytes = tokRes.serialize(); + const got = GenericBatchTokenResponse.deserialize(bytes); + expect(got).toStrictEqual(tokRes); for (let i = 0; i < v.issuance.length; i += 1) { const issuance = v.issuance[i]; const res = tokRes.tokenResponses[i]; - const type = Number.parseInt(issuance.type); + const type = Number.parseInt(token_type(issuance)); let token: Token; switch (type) { case TOKEN_TYPES.VOPRF.value: { const client = clients[i] as privateVerif.Client; - const rawTokenResponse = res.tokenResponse; - if (rawTokenResponse === null) { + const tokenResponse = res.tokenResponse as privateVerif.TokenResponse | null; + if (tokenResponse === null) { throw new Error('should not be null'); } - const tokenResponse = privateVerif.TokenResponse.deserialize(rawTokenResponse); token = await client.finalize(tokenResponse); break; } case TOKEN_TYPES.BLIND_RSA.value: { const client = clients[i] as publicVerif.Client; - const rawTokenResponse = res.tokenResponse; - if (rawTokenResponse === null) { + const tokenResponse = res.tokenResponse; + if (tokenResponse === null) { throw new Error('should not be null'); } - const tokenResponse = publicVerif.TokenResponse.deserialize(rawTokenResponse); - token = await client.finalize(tokenResponse); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + token = await client.finalize(tokenResponse as publicVerif.TokenResponse); break; } default: @@ -163,7 +174,7 @@ describe.each(vectors)('ArbitraryBatched-Vector-%#', (v: Vectors) => { }); }); -describe('arbitrary batched unit tests', () => { +describe('generic batched unit tests', () => { test('client should support initialisation with zero TokenRequest', () => { const newClient = () => new BatchedTokenRequest([]); expect(newClient).not.toThrow(); diff --git a/test/test_data/arbitrary_batched_tokens_v5_go.json b/test/test_data/arbitrary_batched_tokens_v5_go.json deleted file mode 100644 index 14eced7..0000000 --- a/test/test_data/arbitrary_batched_tokens_v5_go.json +++ /dev/null @@ -1,108 +0,0 @@ -[ - { - "issuance": [ - { - "type": "0001", - "skS": "39b0d04d3732459288fc5edb89bb02c2aa42e06709f201d6c518871d518114910bee3c919bed1bbffe3fc1b87d53240a", - "pkS": "02d45bf522425cdd2227d3f27d245d9d563008829252172d34e48469290c21da1a46d42ca38f7beabdf05c074aee1455bf", - "token_challenge": "0001000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", - "nonce": "332897fa11779e9594b096e5cfc5e43b1405338717bf27b49e9956c1f212fcbf", - "blind": "6572ac688f2a37a1e6b9ba7a84a6034d9cb82673723e2a2d1413de60ea296a7ce0ea351b6dfa6e63a1b390460567f903", - "token": "0001332897fa11779e9594b096e5cfc5e43b1405338717bf27b49e9956c1f212fcbf501370b494089dc462802af545e63809581ee6ef57890a12105c28368169514bf260d0792bf7f46c9866a6d37c3032d8714415f87f5f6903d7fb071e253be2f41077848f52b6bdd765ec802dadae854edff52d1677c444fe222146fe425e751c826b4eccf4c4983b840af2f73a07027d" - } - ], - "token_request": "340001f4036e7830ee395c3e0f9d63ea6791db427062f773872ef64bc4a0935e4c95803558c4743f2b8626fbd655b0e2fac742e217", - "token_response": "409401000103ea1ec6b484c65905806dd80e159bee70451ebf99e4e74059da8cb4efc1129292ebaf28a690df8f7f73dc8afe6628c48ead526d157aeb36848554fa0559afa23378163844098eceed1b30d73a6681a387fed082a933bd3597bc1f76a0a77ccf7cb65d20dc14499fb4cb97d883f7b6f5e49ef6e016861fff4a294a620f83d3ce26dd52f6d62cb974d0aa76c23752dc5c24" - }, - { - "issuance": [ - { - "type": "0002", - "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945765149424144414e42676b71686b6947397730424151454641415343424b63776767536a41674541416f49424151444c4775317261705831736334420a4f6b7a38717957355379356b6f6a41303543554b66717444774e38366a424b5a4f76457245526b49314c527876734d6453327961326333616b4745714c756b440a556a35743561496b3172417643655844644e44503442325055707851436e6969396e6b492b6d67725769744444494871386139793137586e6c5079596f784f530a646f6558563835464f314a752b62397336356d586d34516a7551394559614971383371724450567a50335758712b524e4d636379323269686763624c766d42390a6a41355334475666325a6c74785954736f4c364872377a58696a4e39463748627165676f753967654b524d584645352f2b4a3956595a634a734a624c756570480a544f72535a4d4948502b5358514d4166414f454a4547426d6d4430683566672f43473475676a79486e4e51383733414e4b6a55716d3676574574413872514c620a4530742b496c706641674d4241414543676745414c7a4362647a69316a506435384d6b562b434c6679665351322b7266486e7266724665502f566344787275690a3270316153584a596962653645532b4d622f4d4655646c485067414c773178513457657266366336444373686c6c784c57535638477342737663386f364750320a6359366f777042447763626168474b556b5030456b62395330584c4a57634753473561556e484a585237696e7834635a6c666f4c6e7245516536685578734d710a6230644878644844424d644766565777674b6f6a4f6a70532f39386d4555793756422f3661326c7265676c766a632f326e4b434b7459373744376454716c47460a787a414261577538364d435a342f5131334c762b426566627174493973715a5a776a7264556851483856437872793251564d515751696e57684174364d7154340a53425354726f6c5a7a7772716a65384d504a393175614e4d6458474c63484c49323673587a76374b53514b42675144766377735055557641395a325a583958350a6d49784d54424e6445467a56625550754b4b413179576e31554d444e63556a71682b7a652f376b337946786b68305146333162713630654c393047495369414f0a354b4f574d39454b6f2b7841513262614b314d664f5931472b386a7a42585570427339346b353353383879586d4b366e796467763730424a385a6835666b55710a5732306f5362686b686a5264537a48326b52476972672b5553774b426751445a4a4d6e7279324578612f3345713750626f737841504d69596e6b354a415053470a79327a305a375455622b7548514f2f2b78504d376e433075794c494d44396c61544d48776e3673372f4c62476f455031575267706f59482f4231346b2f526e360a667577524e3632496f397463392b41434c745542377674476179332b675277597453433262356564386c4969656774546b6561306830754453527841745673330a6e356b796132513976514b4267464a75467a4f5a742b7467596e576e51554567573850304f494a45484d45345554644f637743784b7248527239334a6a7546320a453377644b6f546969375072774f59496f614a5468706a50634a62626462664b792b6e735170315947763977644a724d6156774a6376497077563676315570660a56744c61646d316c6b6c7670717336474e4d386a6e4d30587833616a6d6d6e66655739794758453570684d727a4c4a6c394630396349324c416f4742414e58760a75675658727032627354316f6b6436755361427367704a6a5065774e526433635a4b397a306153503144544131504e6b7065517748672f2b36665361564f487a0a79417844733968355272627852614e6673542b7241554837783153594456565159564d68555262546f5a6536472f6a716e544333664e6648563178745a666f740a306c6f4d4867776570362b53494d436f6565325a6374755a5633326c63496166397262484f633764416f47416551386b3853494c4e4736444f413331544535500a6d3031414a49597737416c5233756f2f524e61432b78596450553354736b75414c78786944522f57734c455142436a6b46576d6d4a41576e51554474626e594e0a536377523847324a36466e72454374627479733733574156476f6f465a6e636d504c50386c784c79626c534244454c79615a762f624173506c4d4f39624435630a4a2b4e534261612b6f694c6c31776d4361354d43666c633d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", - "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100cb1aed6b6a95f5b1ce013a4cfcab25b94b2e64a23034e4250a7eab43c0df3a8c12993af12b111908d4b471bec31d4b6c9ad9cdda90612a2ee903523e6de5a224d6b02f09e5c374d0cfe01d8f529c500a78a2f67908fa682b5a2b430c81eaf1af72d7b5e794fc98a3139276879757ce453b526ef9bf6ceb99979b8423b90f4461a22af37aab0cf5733f7597abe44d31c732db68a181c6cbbe607d8c0e52e0655fd9996dc584eca0be87afbcd78a337d17b1dba9e828bbd81e291317144e7ff89f55619709b096cbb9ea474cead264c2073fe49740c01f00e109106066983d21e5f83f086e2e823c879cd43cef700d2a352a9babd612d03cad02db134b7e225a5f0203010001", - "token_challenge": "0002000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", - "nonce": "215c56ebf1bce65aff6f99833be25082a9f308f4d39a4cf9b0fd4418a9ca1882", - "blind": "8e023c5f212462a34c03cc59b7316c2f5901bf56695d6e6f05c3f608ec588da686dfd48d200c6953c75b69cda3e19ff48556c23c32dbebc39f72b5fd8cfd8230af807c0dec3eb86b7bbe490767ef6056aeb828b2316fd4b670d087ddde5ace55f6ef2e78b76bb83a79ed462ae150a923d19772a6c8de47e376626c25732e7a66de5ca92a63f93b4dcd7ecd680bb3fec230951df7908c253556af29409dd3c037d5cb16b0861b723d1839090e882463ac10e7cf3a78c12e7664c68aec7a33fde219ab7a0068d32265bfc211476a462c0342092b08f96804e0b83a3ebe93b516db9ddde3d97344a52f3d90302c2e136a39b660f035db44543c15348fd91da04d01", - "salt": "3a0d3ad52a28b49028588d985f491f019217178016c86b45c9a891f68bb82ec6cff8fc68f85fa88f6c16db7c70880f1a", - "token": "0002215c56ebf1bce65aff6f99833be25082a9f308f4d39a4cf9b0fd4418a9ca1882820fc64e2630a0d5166c36696b663ff34518338263383ec92b3347ea30bddae4ca572f8982a9ca248a3056186322d93ca147266121ddeb5632c07f1f71cd27082bbead86719e39ee60b224ba39aed396e7b28cfb9cbbd8b654887fc04921f76dc92ef72cb47650cd95bebd277162ab0ea03e60ddf9cced0d8e076ad065e29a04ef8c69fd880a5cf58db7b3f9153ee5a7382685d1b4d1712ee944a92fae4fba32ff4d9288a37f6db1eb29ea7cfc9ea2ccb4aa1c729c0b4b95c5a40e66d9b9f8fee7d87ff8e8513b7ac1e934b74d68b8551e102fbd1fb0404bc1904ada8684aa0afca6275877b33224cd15ad1b771ba9af7821385017ca34e2eb9644a88c204675cbb1bf3b7cd7cdf9055b3b377057faec7a36e81652e6d0654280c017723e878f0c9d993bace51a51685c62ff22f0ea37c244a6478077e914539e65f95372e4cf" - } - ], - "token_request": "4103000208a84566ca40ac42d01bc0e0ad10d2d8f9bf45bb30326ce3a3ad0f2b56589c1e9260679876a1271c83fbb5dfa9433c72a0a6362dbee06f96f3e3591c3ca8dad240e1c9696fa7a41b79306a868cd1cfe66432129ab20902be6a8214d11f8863a74b2ece62de4fc75b4968b87216471e6b719cf6c91c99abb83bc98fabae802aa09868b1bdae58a73023bdb83c54d6bebfabbef837c9d4ef88a7a0e742e32a860e05cb798b4d09d8eb1336da49d8d83fb619ae556617246b624b5a0fd55f16e27150c96b6b4d645d897d04443bfb5f519eabada7b8b4d9013e8f6f954356231dfea1e8e7121eb52a5157fe10381689b7f343cd4380e77727ac96a126f097b5f79758", - "token_response": "410301000212093795bb6bde21df488d56d18ac4efc280d6a493528fb180ff6204ad2c2e6396ad19c348103c7adee2c254bb4ee4f0c0015ac070bf41d23a78856880f1b506ba28ca3d370e262216e68ffdc6be57bcb0e03d7c3e112b63a5695dbbfb220ccdd68a601d829821ffa19b5ddb2da6da3f71e308d70253f43b7b52d2739f2380ad5150be14db16ef39ca9c475255b0879ddee0f1147e9230e12e20b5ca7e2069e9ed87db7507f3eb78d9fbf2a957f8410cc80114e9006d1d6c61d3712b04935d62356b0e7540b10189394eed8206e65631e77e7f75ba0768bdbace3ffae1bc70ca86303c3e0d3268bf4dbe3225a618926cf3f2f4ca2c80a9a2f95bf638699792b8" - }, - { - "issuance": [ - { - "type": "0001", - "skS": "39b0d04d3732459288fc5edb89bb02c2aa42e06709f201d6c518871d518114910bee3c919bed1bbffe3fc1b87d53240a", - "pkS": "02d45bf522425cdd2227d3f27d245d9d563008829252172d34e48469290c21da1a46d42ca38f7beabdf05c074aee1455bf", - "token_challenge": "0001000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", - "nonce": "79f68dbc610a490d940367f0de8a008c5f429c535dd758afa59965d7be6d8753", - "blind": "4581461cfd525cd59babb8abbcacafd69c8a6da3fdeffc209be42323d2884c09c15beef67287112bec9f674f6e3ef523", - "token": "000179f68dbc610a490d940367f0de8a008c5f429c535dd758afa59965d7be6d8753501370b494089dc462802af545e63809581ee6ef57890a12105c28368169514bf260d0792bf7f46c9866a6d37c3032d8714415f87f5f6903d7fb071e253be2f4a18606ab08b9d569d144f8944655cda17c6ec74d24a11ebd7622a56d551e223a776fa9650dc2a4a00e083444160e27e5" - }, - { - "type": "0001", - "skS": "39efed331527cc4ddff9722ab5cd35aeafe7c27520b0cfa2eedbdc298dc3b12bc8298afcc46558af1e2eeacc5307d865", - "pkS": "038017e005904c6146b37109d6c2a72b95a183aaa9ed951b8d8fb1ed9033f68033284d175e7df89849475cd67a86bfbf4e", - "token_challenge": "0001000e6973737565722e6578616d706c6500000e6f726967696e2e6578616d706c65", - "nonce": "5d0d763f6e9da102fdb9e1a7f95a1b096391f02ac87f65888233e9415df05c56", - "blind": "fdef8385c0ea23299a8b52b59b23ffa9f1a0f25c3a4c93d95792372910091cd47ec89b14321b3e00a8d3eb0949e7bbd6", - "token": "00015d0d763f6e9da102fdb9e1a7f95a1b096391f02ac87f65888233e9415df05c56c994f7d5cdc2fb970b13d4e8eb6e6d8f9dcdaa65851fb091025dfe134bd5a62a116477bc9e1a205cca95d0c92335ca7a3e71063b2ac020bdd231c66097f12333a13b1c96dbe522e6e94e0ecba8c3abad7fac579bddae7233e8f0ad13192b3c895fc7f4229e9156314a71c338ff74baba" - } - ], - "token_request": "40680001f403f509ce89b5e1012f47b34af3a33a120556a5f9771764c33c8bf330076cfd668fc09d0bd7a740f74852d258cbb1a8b49a000133027cd2c1b2552ae7bf9282c4eed9aaf03a7e99969ad4af29e615be378f9d9440062bdf296f39ec999ab9c7a94f62f9df7a", - "token_response": "41280100010229c3174c22f284bf32ea4f5c2e76b4b969be9e5d8e163861e77eb673ce0c7af96c2745064749fd59edbe9b4b4e7e80e522d72d28882d9b60434ab5c7ed142d8da3465291a04dcb1c3ea1a8444dcb09206a4f3ee92ac498753ec042da0fd72602c679bf7a994f9fbca0fae57740fd47772e237569fdcfa587874f0e1a538abc3333f8ee486809347eef1e49a83381317201000103b027ff354e5b1728d6dae0de169816ad92912d96a057e80363b697e253a0a74aad1513efbeff7356e75c6989863191af7be62c4c0251b441088a2221e96f227322233e1b4e3785ddc98bd3f310f69a51e8268478bc080fac60032c63da2332f230e3f04497959469593e2fac77cd6d58dd3e59081d1279f87ea9cd81c87e38d218093590d6ec8f8caaf4581a9fece56b" - }, - { - "issuance": [ - { - "type": "0002", - "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945765149424144414e42676b71686b6947397730424151454641415343424b63776767536a41674541416f49424151444c4775317261705831736334420a4f6b7a38717957355379356b6f6a41303543554b66717444774e38366a424b5a4f76457245526b49314c527876734d6453327961326333616b4745714c756b440a556a35743561496b3172417643655844644e44503442325055707851436e6969396e6b492b6d67725769744444494871386139793137586e6c5079596f784f530a646f6558563835464f314a752b62397336356d586d34516a7551394559614971383371724450567a50335758712b524e4d636379323269686763624c766d42390a6a41355334475666325a6c74785954736f4c364872377a58696a4e39463748627165676f753967654b524d584645352f2b4a3956595a634a734a624c756570480a544f72535a4d4948502b5358514d4166414f454a4547426d6d4430683566672f43473475676a79486e4e51383733414e4b6a55716d3676574574413872514c620a4530742b496c706641674d4241414543676745414c7a4362647a69316a506435384d6b562b434c6679665351322b7266486e7266724665502f566344787275690a3270316153584a596962653645532b4d622f4d4655646c485067414c773178513457657266366336444373686c6c784c57535638477342737663386f364750320a6359366f777042447763626168474b556b5030456b62395330584c4a57634753473561556e484a585237696e7834635a6c666f4c6e7245516536685578734d710a6230644878644844424d644766565777674b6f6a4f6a70532f39386d4555793756422f3661326c7265676c766a632f326e4b434b7459373744376454716c47460a787a414261577538364d435a342f5131334c762b426566627174493973715a5a776a7264556851483856437872793251564d515751696e57684174364d7154340a53425354726f6c5a7a7772716a65384d504a393175614e4d6458474c63484c49323673587a76374b53514b42675144766377735055557641395a325a583958350a6d49784d54424e6445467a56625550754b4b413179576e31554d444e63556a71682b7a652f376b337946786b68305146333162713630654c393047495369414f0a354b4f574d39454b6f2b7841513262614b314d664f5931472b386a7a42585570427339346b353353383879586d4b366e796467763730424a385a6835666b55710a5732306f5362686b686a5264537a48326b52476972672b5553774b426751445a4a4d6e7279324578612f3345713750626f737841504d69596e6b354a415053470a79327a305a375455622b7548514f2f2b78504d376e433075794c494d44396c61544d48776e3673372f4c62476f455031575267706f59482f4231346b2f526e360a667577524e3632496f397463392b41434c745542377674476179332b675277597453433262356564386c4969656774546b6561306830754453527841745673330a6e356b796132513976514b4267464a75467a4f5a742b7467596e576e51554567573850304f494a45484d45345554644f637743784b7248527239334a6a7546320a453377644b6f546969375072774f59496f614a5468706a50634a62626462664b792b6e735170315947763977644a724d6156774a6376497077563676315570660a56744c61646d316c6b6c7670717336474e4d386a6e4d30587833616a6d6d6e66655739794758453570684d727a4c4a6c394630396349324c416f4742414e58760a75675658727032627354316f6b6436755361427367704a6a5065774e526433635a4b397a306153503144544131504e6b7065517748672f2b36665361564f487a0a79417844733968355272627852614e6673542b7241554837783153594456565159564d68555262546f5a6536472f6a716e544333664e6648563178745a666f740a306c6f4d4867776570362b53494d436f6565325a6374755a5633326c63496166397262484f633764416f47416551386b3853494c4e4736444f413331544535500a6d3031414a49597737416c5233756f2f524e61432b78596450553354736b75414c78786944522f57734c455142436a6b46576d6d4a41576e51554474626e594e0a536377523847324a36466e72454374627479733733574156476f6f465a6e636d504c50386c784c79626c534244454c79615a762f624173506c4d4f39624435630a4a2b4e534261612b6f694c6c31776d4361354d43666c633d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", - "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100cb1aed6b6a95f5b1ce013a4cfcab25b94b2e64a23034e4250a7eab43c0df3a8c12993af12b111908d4b471bec31d4b6c9ad9cdda90612a2ee903523e6de5a224d6b02f09e5c374d0cfe01d8f529c500a78a2f67908fa682b5a2b430c81eaf1af72d7b5e794fc98a3139276879757ce453b526ef9bf6ceb99979b8423b90f4461a22af37aab0cf5733f7597abe44d31c732db68a181c6cbbe607d8c0e52e0655fd9996dc584eca0be87afbcd78a337d17b1dba9e828bbd81e291317144e7ff89f55619709b096cbb9ea474cead264c2073fe49740c01f00e109106066983d21e5f83f086e2e823c879cd43cef700d2a352a9babd612d03cad02db134b7e225a5f0203010001", - "token_challenge": "0002000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", - "nonce": "e7615e63a25a89c13ad49ce0249c8d75ec481dc95e005454563ede8c6b0f1f46", - "blind": "30465e67d38960c99589a56a8b965191aa709b91fd2a56c101120b4453e9a561f2bd041d49ec895684018fa6aba34ab3dd2137777f9e9829a0a0d0a678a06e16a3aed47a7e9652ff99fafb5e86a6807f8ddf5b50fcde11b4bf7dac7ee5e4f200776eba2c33d6eb187ccb109999e8c9c67595b5464f1ed2948b19c04689fe9c29c6863208a2e15b70b0e456ab4f8369569bdb14a903bacde57b6ce0bfa21ada35d52c4fea231b40c26254d5130b41f71a21eadffdc60e41ab3c072236cb2d1926cb21eb873bb66365a72d619a58cfdfa963d38cdf4cb54db1fc2b42731ba207ad9a897092e8bfc9be2a1f4551da3452a22926cc98971da1e2d6287e2c8c013006", - "salt": "625baf9d50c502dbd03c949fe5ff0eda7dd6c23ea76111c0f791b471df045001d557ed76eee8eed94909a4723a683fd3", - "token": "0002e7615e63a25a89c13ad49ce0249c8d75ec481dc95e005454563ede8c6b0f1f46820fc64e2630a0d5166c36696b663ff34518338263383ec92b3347ea30bddae4ca572f8982a9ca248a3056186322d93ca147266121ddeb5632c07f1f71cd2708baa04e4e9511d5e1b49ad181913b67498a06d54eed0bb7ad9a8caa4a1c46dfabc6dc456b1be1fa49d8a630925cb124b3dcf38e4a7fef67bc1cb8b25c4d1f78e341fe7c5f03d7e8ef193602a79d9c11cdb9c758e86d6a2ce5d6bbc6ebab3c1ac426202300a752f9adaf8f0ce3ff60fc7ace0d5a2fdcc29f0161495d8953aa7fd6c27c94ca3609b4981cf07f9e2d00674b5e7ee0701925b7845a7702d9193178594a659eccebfcd12a505bd28c58efdee3dc6b971339dfa24b83f0a24e3197d51218175bf5dcdf7ae6d03a8d274734b40af38680a2bdfd375febd2fb436f00f66c709f89996ad4bd8b28f92b8110036f4df03f3cbf7b8673c37db31f925ea69c15" - }, - { - "type": "0002", - "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945765149424144414e42676b71686b6947397730424151454641415343424b63776767536a41674541416f49424151444c4775317261705831736334420a4f6b7a38717957355379356b6f6a41303543554b66717444774e38366a424b5a4f76457245526b49314c527876734d6453327961326333616b4745714c756b440a556a35743561496b3172417643655844644e44503442325055707851436e6969396e6b492b6d67725769744444494871386139793137586e6c5079596f784f530a646f6558563835464f314a752b62397336356d586d34516a7551394559614971383371724450567a50335758712b524e4d636379323269686763624c766d42390a6a41355334475666325a6c74785954736f4c364872377a58696a4e39463748627165676f753967654b524d584645352f2b4a3956595a634a734a624c756570480a544f72535a4d4948502b5358514d4166414f454a4547426d6d4430683566672f43473475676a79486e4e51383733414e4b6a55716d3676574574413872514c620a4530742b496c706641674d4241414543676745414c7a4362647a69316a506435384d6b562b434c6679665351322b7266486e7266724665502f566344787275690a3270316153584a596962653645532b4d622f4d4655646c485067414c773178513457657266366336444373686c6c784c57535638477342737663386f364750320a6359366f777042447763626168474b556b5030456b62395330584c4a57634753473561556e484a585237696e7834635a6c666f4c6e7245516536685578734d710a6230644878644844424d644766565777674b6f6a4f6a70532f39386d4555793756422f3661326c7265676c766a632f326e4b434b7459373744376454716c47460a787a414261577538364d435a342f5131334c762b426566627174493973715a5a776a7264556851483856437872793251564d515751696e57684174364d7154340a53425354726f6c5a7a7772716a65384d504a393175614e4d6458474c63484c49323673587a76374b53514b42675144766377735055557641395a325a583958350a6d49784d54424e6445467a56625550754b4b413179576e31554d444e63556a71682b7a652f376b337946786b68305146333162713630654c393047495369414f0a354b4f574d39454b6f2b7841513262614b314d664f5931472b386a7a42585570427339346b353353383879586d4b366e796467763730424a385a6835666b55710a5732306f5362686b686a5264537a48326b52476972672b5553774b426751445a4a4d6e7279324578612f3345713750626f737841504d69596e6b354a415053470a79327a305a375455622b7548514f2f2b78504d376e433075794c494d44396c61544d48776e3673372f4c62476f455031575267706f59482f4231346b2f526e360a667577524e3632496f397463392b41434c745542377674476179332b675277597453433262356564386c4969656774546b6561306830754453527841745673330a6e356b796132513976514b4267464a75467a4f5a742b7467596e576e51554567573850304f494a45484d45345554644f637743784b7248527239334a6a7546320a453377644b6f546969375072774f59496f614a5468706a50634a62626462664b792b6e735170315947763977644a724d6156774a6376497077563676315570660a56744c61646d316c6b6c7670717336474e4d386a6e4d30587833616a6d6d6e66655739794758453570684d727a4c4a6c394630396349324c416f4742414e58760a75675658727032627354316f6b6436755361427367704a6a5065774e526433635a4b397a306153503144544131504e6b7065517748672f2b36665361564f487a0a79417844733968355272627852614e6673542b7241554837783153594456565159564d68555262546f5a6536472f6a716e544333664e6648563178745a666f740a306c6f4d4867776570362b53494d436f6565325a6374755a5633326c63496166397262484f633764416f47416551386b3853494c4e4736444f413331544535500a6d3031414a49597737416c5233756f2f524e61432b78596450553354736b75414c78786944522f57734c455142436a6b46576d6d4a41576e51554474626e594e0a536377523847324a36466e72454374627479733733574156476f6f465a6e636d504c50386c784c79626c534244454c79615a762f624173506c4d4f39624435630a4a2b4e534261612b6f694c6c31776d4361354d43666c633d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", - "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100cb1aed6b6a95f5b1ce013a4cfcab25b94b2e64a23034e4250a7eab43c0df3a8c12993af12b111908d4b471bec31d4b6c9ad9cdda90612a2ee903523e6de5a224d6b02f09e5c374d0cfe01d8f529c500a78a2f67908fa682b5a2b430c81eaf1af72d7b5e794fc98a3139276879757ce453b526ef9bf6ceb99979b8423b90f4461a22af37aab0cf5733f7597abe44d31c732db68a181c6cbbe607d8c0e52e0655fd9996dc584eca0be87afbcd78a337d17b1dba9e828bbd81e291317144e7ff89f55619709b096cbb9ea474cead264c2073fe49740c01f00e109106066983d21e5f83f086e2e823c879cd43cef700d2a352a9babd612d03cad02db134b7e225a5f0203010001", - "token_challenge": "0002000e6973737565722e6578616d706c6500000e6f726967696e2e6578616d706c65", - "nonce": "d17d88fb4f63d0b3b38d1159bef67ac6d60f649aba512b8e382d497530727577", - "blind": "4e192daf9edea831f3c82a274c5648d758f6930991334d820a2a24e96101023a86de1d18836222c42dcb0eb39a9153ada0b4eea7d3395d55114d8ec972655b47bebb3e66f72f6bfadb5cb976c98907fea985eb13bd5675c9c39144381d0b0038c12f6ff9fd598ab8eaef47a878da4fa10d3bd3e4c7e86a60ce15e07f5de0501c65d653d20f6dd83763f152ec7beecba6ca51914ddf00f79f5143d6854bdefd3032ced824066b8586f6e5d3ecafcb268c99c103cd4fab99eeb3afbe550690172ebe09edb533fec7095c357180439c2c32f8af85ba77b85cba091f3eae542d01a3de3cdabf57439fe6f41fb2d3c15c23a5bc23b3be8fe0140944a76760a7b38301", - "salt": "7e0dec0ad99e373d2fc990821a62962e180bdb72e110bc988f9d633fbca8aa5838fe9582013ca63ca8ba9ef41553d086", - "token": "0002d17d88fb4f63d0b3b38d1159bef67ac6d60f649aba512b8e382d49753072757711e15c91a7c2ad02abd66645802373db1d823bea80f08d452541fb2b62b5898bca572f8982a9ca248a3056186322d93ca147266121ddeb5632c07f1f71cd2708bb7df188c0ed5642312cb5152735825a75d982d17a705843b9dc59847cae233b3e69a8500978d1fb360794c4223fcf7483e844a1db3e316656456e2d06262e0b051f22e91b4e912cee082b87b40e01a5b70734de93f739e6c0abf05a935a8de4bddecb977bd2dbb27f9680ec61068f8dc09bcce8f82885a1820275e0a049e566a73b8b8f6050d34866281fb58761c7560f0ad32899ad8545d8e633642364155aa6fb397547fb9f1bbfb0bcdfa3401750edc31e6f42cb64a931b87032f51cf22d201d8c477135644044b9003814117e9313cbd45eb76fcd89f5af4200fdacde27fef511279616748b9ddd7fa23e6937047d0ae33ce0572430b9fb793788c1ebbe" - } - ], - "token_request": "4206000208bb3699eb03b73b43d87960140ba6e77a9a18ab6a9492176c420096872a88b15b4bbda37f43bb22ff0e6c730fcda255c4158ce10c8bb66995a67b2fe1992059cf6d686e1e696e8a6375bb6e77d73570cf30fadf94f45f5131550bcf556722c9b62912766b17a828ea69fa3e048d5d46ac70bac8cdd8d86330c719e734874c00fcf23dd25a1294c9610689e59cbf0805b5d9adef2ffa5a9e31902bc6b8dafb39b0aad2c520cbc9c1c55696f9e96a5db2b32dbbd2b4f75c7481499a31ae2df1cc879475bd7ce402ee5dbaf624d87bb7c88f5b243c4094004bb145f71f6d98da7899ff566398468b99e41ce25f1a88ed49fb4ef26d817d6a1520ec0aaea6bf0d93360002089cfb2feafef5b7bf534a945daa929e87756bc8a9972202995b10eebfd476c81fdede8a017513ee84259fcd475330f2379d5d7b578bf181f9df9246fdf4b594c1d989650cde9e040c3aac7c476c2e6c87d20a3381ae0455e21e03b6957670219d7af3a295c932ad7735dbfd43b7c464ca82d293d1910b25c2d6f293af2f46b30396de4f009e0e2ba05f431802b2d4b5fbd8e17a01b587571e06382b5d26895b53327ce2ab9055e0825cf297909f6d3993a516dc9fc69824a7361deaadc3c7a133c129fd93f11906b4b2f88170c80fc5e6596c3ee550da51c1b69835f4f127a71f5d44a94d954fa056c6bc4e5ea1f49f4175eebae188a85a2e680291fd4f441377", - "token_response": "420601000206b0e6922469eb5587c12bacfda4ff18a732049b35fae442431344d136ee8be0c1080b2ad2e0ae379ac39abe3aacdb88b52614ed9c0c1aa3ae10edd9cdd1f776e67c3aeebcc0656cd4c4b109861904b48e9b902f584565125dd97f7ed013b12f5412fbc3378234a904f1621a5b67790f6f677bd6d4682ab5285a342ed4d4a508360ed9b73907451e6690e88313d4f132034a1f76916aeceb43051b5f294303bb03de91c9b12022b1493f3b8019219134d214ab09906dd395e282f255940a411eda4cf0b8ab2121f802b62ce891d84fe3b2c5b32e00fef88a8756ad015ded4a3dcaf45657597f0677e792c250bdfe809edbb567d526e8cd9e9c94ad67c0486139010002baa9791c04572ce81c4b02909cafd1dc248a0ea53b6fa3237b98ddc3fb970bae23733d980846fd7f53a7b90655939678fac43536041bfb99dd4891add3bbd7cd05d363e5142b9917ec0c195724c62d7ae6b7e65738870ad9ccaea0e7415cb268ba21acc141939e4853f9f5e1fab60edad58eee3eabfca317a581534f3666aed5420e984dd74c655f32611315e0af4bb1d37165bd20a55a0c19b1e930516d83d1c2841e382aff16de515cce34cdb1191809e2cc8678b087539e085942be0e50f6e17d81af48c9bc94ffe4f8a6311a8537c1ed911ad88fb861fac00cda3fedfab48fbb073aa05e544acc976ff6368364f5b0c6245e0a7167fb1af485fc90f73729" - }, - { - "issuance": [ - { - "type": "0001", - "skS": "39b0d04d3732459288fc5edb89bb02c2aa42e06709f201d6c518871d518114910bee3c919bed1bbffe3fc1b87d53240a", - "pkS": "02d45bf522425cdd2227d3f27d245d9d563008829252172d34e48469290c21da1a46d42ca38f7beabdf05c074aee1455bf", - "token_challenge": "0001000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", - "nonce": "0d399a51a32286661e8ecd6b601cccace4f45e8f41b05d6fae47826d46142139", - "blind": "43dfc280832318de5d86c6626303628b13b62670d8b134ffd008e1226df79dccbeaaf3ac555a9f544db50497757a0a2a", - "token": "00010d399a51a32286661e8ecd6b601cccace4f45e8f41b05d6fae47826d46142139501370b494089dc462802af545e63809581ee6ef57890a12105c28368169514bf260d0792bf7f46c9866a6d37c3032d8714415f87f5f6903d7fb071e253be2f429a429ebcef6ada26a201fdbc171f7c2739590085581237586e468660f6fdeec5ecd5e39cb3c908d1312a8baf8484450" - }, - { - "type": "0002", - "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945765149424144414e42676b71686b6947397730424151454641415343424b63776767536a41674541416f49424151444c4775317261705831736334420a4f6b7a38717957355379356b6f6a41303543554b66717444774e38366a424b5a4f76457245526b49314c527876734d6453327961326333616b4745714c756b440a556a35743561496b3172417643655844644e44503442325055707851436e6969396e6b492b6d67725769744444494871386139793137586e6c5079596f784f530a646f6558563835464f314a752b62397336356d586d34516a7551394559614971383371724450567a50335758712b524e4d636379323269686763624c766d42390a6a41355334475666325a6c74785954736f4c364872377a58696a4e39463748627165676f753967654b524d584645352f2b4a3956595a634a734a624c756570480a544f72535a4d4948502b5358514d4166414f454a4547426d6d4430683566672f43473475676a79486e4e51383733414e4b6a55716d3676574574413872514c620a4530742b496c706641674d4241414543676745414c7a4362647a69316a506435384d6b562b434c6679665351322b7266486e7266724665502f566344787275690a3270316153584a596962653645532b4d622f4d4655646c485067414c773178513457657266366336444373686c6c784c57535638477342737663386f364750320a6359366f777042447763626168474b556b5030456b62395330584c4a57634753473561556e484a585237696e7834635a6c666f4c6e7245516536685578734d710a6230644878644844424d644766565777674b6f6a4f6a70532f39386d4555793756422f3661326c7265676c766a632f326e4b434b7459373744376454716c47460a787a414261577538364d435a342f5131334c762b426566627174493973715a5a776a7264556851483856437872793251564d515751696e57684174364d7154340a53425354726f6c5a7a7772716a65384d504a393175614e4d6458474c63484c49323673587a76374b53514b42675144766377735055557641395a325a583958350a6d49784d54424e6445467a56625550754b4b413179576e31554d444e63556a71682b7a652f376b337946786b68305146333162713630654c393047495369414f0a354b4f574d39454b6f2b7841513262614b314d664f5931472b386a7a42585570427339346b353353383879586d4b366e796467763730424a385a6835666b55710a5732306f5362686b686a5264537a48326b52476972672b5553774b426751445a4a4d6e7279324578612f3345713750626f737841504d69596e6b354a415053470a79327a305a375455622b7548514f2f2b78504d376e433075794c494d44396c61544d48776e3673372f4c62476f455031575267706f59482f4231346b2f526e360a667577524e3632496f397463392b41434c745542377674476179332b675277597453433262356564386c4969656774546b6561306830754453527841745673330a6e356b796132513976514b4267464a75467a4f5a742b7467596e576e51554567573850304f494a45484d45345554644f637743784b7248527239334a6a7546320a453377644b6f546969375072774f59496f614a5468706a50634a62626462664b792b6e735170315947763977644a724d6156774a6376497077563676315570660a56744c61646d316c6b6c7670717336474e4d386a6e4d30587833616a6d6d6e66655739794758453570684d727a4c4a6c394630396349324c416f4742414e58760a75675658727032627354316f6b6436755361427367704a6a5065774e526433635a4b397a306153503144544131504e6b7065517748672f2b36665361564f487a0a79417844733968355272627852614e6673542b7241554837783153594456565159564d68555262546f5a6536472f6a716e544333664e6648563178745a666f740a306c6f4d4867776570362b53494d436f6565325a6374755a5633326c63496166397262484f633764416f47416551386b3853494c4e4736444f413331544535500a6d3031414a49597737416c5233756f2f524e61432b78596450553354736b75414c78786944522f57734c455142436a6b46576d6d4a41576e51554474626e594e0a536377523847324a36466e72454374627479733733574156476f6f465a6e636d504c50386c784c79626c534244454c79615a762f624173506c4d4f39624435630a4a2b4e534261612b6f694c6c31776d4361354d43666c633d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", - "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100cb1aed6b6a95f5b1ce013a4cfcab25b94b2e64a23034e4250a7eab43c0df3a8c12993af12b111908d4b471bec31d4b6c9ad9cdda90612a2ee903523e6de5a224d6b02f09e5c374d0cfe01d8f529c500a78a2f67908fa682b5a2b430c81eaf1af72d7b5e794fc98a3139276879757ce453b526ef9bf6ceb99979b8423b90f4461a22af37aab0cf5733f7597abe44d31c732db68a181c6cbbe607d8c0e52e0655fd9996dc584eca0be87afbcd78a337d17b1dba9e828bbd81e291317144e7ff89f55619709b096cbb9ea474cead264c2073fe49740c01f00e109106066983d21e5f83f086e2e823c879cd43cef700d2a352a9babd612d03cad02db134b7e225a5f0203010001", - "token_challenge": "0002000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", - "nonce": "1a89803678132b4328084be9547b3e1ab0b88ebc7b9e84acca47947dbc6b14a7", - "blind": "1c761ba8872e29390be3a2c1328b4f9ccc0012be0c2b09bf558ac0b334f84d0646ab2f89cca0c65f859a78b32b2407a90eec56f54c55916bdf5ad0dbaf5064e5899e18b282e10940f73917771058a0b1c992f679b3ed4f9bb8a2d6a6561e85a86e7a78a6d1345bdbf8a02d58ab92bc458852e8c961d90a14cae721728fd221737f711ae28b49c4b4eb6b76f8b58541630bf78f6fe351c98da801d246f8b54787046610f136489cc8ca28dad8377983c3fc2e28e7ae09365b7516f1cba21b7a0d9ff87608c5cd91fbec89f978053512083bfb0adf22c74f0a96256e26c6d9f9436469972580e60a1104c9672b66891092417870d82eae4fab3c76caca50eaf5ac", - "salt": "f70daa7809b3667c616b2666ce30ad74b646afbade9fd06424d433f5a8b395bf669fb609b845055b4e4a133712beb251", - "token": "00021a89803678132b4328084be9547b3e1ab0b88ebc7b9e84acca47947dbc6b14a7820fc64e2630a0d5166c36696b663ff34518338263383ec92b3347ea30bddae4ca572f8982a9ca248a3056186322d93ca147266121ddeb5632c07f1f71cd2708ad0995b4e273a9c7d825c7b2d7293a42f712216925639a276b1a5c358120f6afb5a28c6319647b47ffef79dc39ba0eeb42f4cf22bcbbad7d774a5df9904f80c0826f12b8542291c53c20f6c6f05bed4146c2b09a2b5e424d4622ba40531b84d026ab202d01940c154ab47c6a9b377f284462bea8a6285383efac6ea8b302e4bcb8855d133396fa2a5532a1dc3f280a101770d8f2e5d8142d7c573c9f9e29f160624b7c95811687f678a7994295695c14b1899c06f60e6a0fa04cfc6b8184e59f1f40babbf0dbbc3cb91047a659723c800b574cadc0491ea40f15e45a0337a3e7cd109de3b4e3517d4637059a9ab3c4a218e052d15479116d3c437e4962ce07c3" - } - ], - "token_request": "41370001f4021addfdbb3234410241c073cb66734cac677334930d7741cb973731f19b0e500e80dc6619d11c754b9f8909da8d2c3ca600020849309ffde4f288fa5fd2e32c68aad9630adabbd51f273814d7583a27136527e8d77fa89c8798e945b833ca9d7ef20233e55de142519891fea24222122feef56c7e3f7319f012e77e247b2ba1c9ae501196a82f8e3bb3039513c79f77bb0014e1666ca09113565bb88dd65729e8377dadba084c3adae744b7f0b6e7a66f7715c4677bfe364cf08f808eef5c607fe716a8509b00b688bb874e90badd7781c9f3e32d9178070103874ddbb94f7f8d44893ea97c869334f9ec54ad421fdedcbe264d4732da0b54ad25901895248df6cc75a70e9fc06fa1f7c9bfecabd45eec42e22239eb76f1765a1a5de3bcf12b5e4d8737ff8b54f911778038fd74fb8b3e4a3e3d", - "token_response": "419701000103f46a70859a87727ade7ee8534c42b676c28e22fa906a669f03172331cc85e1157097214f482a0744fa9d5083a85db2b208e4c03bd4c9540fd5f183ec590aaeefafc849ff51c169149b653af450b53b830f587c85bdf500074467db6bcd155b6657ad915e4e94d28642173be93a8c6c99a3ee2ee9ee46686f01d5f9b8208593240cf7db7a9cde0c79ce818720313344470100029e215a04d99389aa9ed15f2df507d9fcb88819b989705fcb779d6af8bff5d5c563190ba2267c58c49a923cd4d80277eb72d287bb224771bf2dd245018195a8eec6a6ee454e7f7600fa2f974a2feb8638620702332225288776a8b183bb30f251194df955018bdb31cf992b8e37e8dcfee22a2dab536ed0a3c918cb74b0568b100df7ca97bb15b6641819d0db806ab9bb67b295a3ecaf1cd07576598166051ddfed98d6d430b176081e41432a4607213b1291ef2becaaa337961139bee6a57e0aa8b42d192bf468f4d187e72f7cedc6393720c34030fa809c62dd9b4ef79aaf7af950a284c9df77cfcd17f6f5eb022963ffa1d57d4394d24f3204db260dad97ce" - } -] \ No newline at end of file diff --git a/test/test_data/arbitrary_batched_tokens_v5_rs.json b/test/test_data/arbitrary_batched_tokens_v5_rs.json deleted file mode 100644 index 40db929..0000000 --- a/test/test_data/arbitrary_batched_tokens_v5_rs.json +++ /dev/null @@ -1,96 +0,0 @@ -[ - { - "issuance": [ - { - "type": "0001", - "skS": "9e19dad32d440b14a7674143e272c830dfb4d5de61eae63c76571570956a88bbe66577db033d3cf043d343208436d6da", - "pkS": "028ff446ea2e2fbd761a6ef7b1137bd59a760d6c65f3b82784cefc5843f9b9ed65cdcaaa90b293f4b0cb818a873ca17d15", - "token_challenge": "0001000b497373756572204e616d6520941de0bab199d9a3cd01d5f58529d5cc9b1ceac6614d92ff75a36241c96439b20005612c622c63", - "nonce": "b771dc02997c71738e631f7f52e1f786e9c80eb51e9ed54a1302fbf98f5b32c3", - "blind": "ccb1a833c28efff813ec2de76d4bd325874da893e8116d583ad3c648341398560a6a2c1b64c52b4ea9ea97b4e1f24e54", - "token": "0001b771dc02997c71738e631f7f52e1f786e9c80eb51e9ed54a1302fbf98f5b32c3c605cc17c7449af46256832938618c13b44148d3ba19c135c0e992dc15463a626b2e907957aaa5def3d775fa880539bed74e2c2f8fb63f80b64624844b9053737a28749068a0a33347af11be755343eb7e23bd1fb6b18539ae4ce776ead2c340e8ffc496583950c2672683568f78423b" - }, - { - "type": "0002", - "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945764149424144414e42676b71686b6947397730424151454641415343424b59776767536941674541416f4942415144312f78627745396c476a354a4c0a6736326e583844795035634864515739396531465a6d30673879724d51357742474b4746555a4f554246464f706c45774d4e726763764f6a6e55733351346e4c0a775a6932624530676235564c7a6754756b587a2f3243764742534661557374466176755855475777702f516e325a4f51316d58634562376257477463494539790a512f356e5962493934654e596b5071614635594a3871446a333447702f6865706a4a73586a45377154323631626159722f5839496e306b6441366c397542384c0a5276745a614e5677546d4445686e61625a7a7154416c517038763379424558736f63456d496d35336443634c6347494d6250387046747559624a6b75546e54480a366c3863446c2f586e764661535a5148464c516a6f793350764c426b3135706f5466526266306a2b6c4370537031353964673469522b756a625376344b6a48520a33733979394f563141674d42414145436767454161564134364c554771742b694f50503572784d65546c654d392b4e5166762b2f415a77564569736f596d52370a63446930525a676a2f78564f486361304d565a70446667496544354a796a482b317831646e4a4f472f57446e344a6b6c6f57446c7937346e46314a7738664e4b0a464d44315474566267364b5473302f426a68744c5a6b69756c63636e787a774a35786857334c6d466a6c716263766f32587976447a79527858727a38444f4c6c0a4b7a6c6a4d7169624d6f7953574d2b2f497a4d6f734c517a336c30674367424c49334e587559324c736e6f4b38426a314a484a3569674c3278622f456a4a796b0a59742f4b676b4b5167574e4a596252564646467035494139656c63515131667a66776a2f417276734a3858414c464943326c657343705a594d47776276455a410a54706774422f61576361534e484443732b4b724d6c716b6a6c35622b62584730344531515445374641514b42675144395773783233416e6e5531364f6f5a646a0a4d684137495361356b6434684d4d704c38454d4c4a74556947594c74747163695549534d48497a4f6563427a734e6f4a39447144474233766c6a4d6e514e73450a7266536c75426e3472747161594538696b3459376b55474e7771552b4e4f726a676e66586a676945624e712b4f363146474f304942376c594c41766e303736740a692f796e586254422b545a342b696e3778495952754e314151514b42675144346b4a3976726b5273756153474e5879497256706e484533466b444641346a4d410a384773354f7248782f48556a6d5547424863354f6e6568717975474b68415251556d64534c72574e3863785236504f684d576a76775730694c4d514572552f740a4c6b4f6e37636f2f6f39584c3165784f556273666c7a7666484c625375574a484c593943656a6e32484d523549417531626555684a3436384e4137594778516c0a45416c64447743594e514b426744785a63356a67677939714b587a364f76427a445843345464776f5265784d44665157304447493133346536355171545265630a62475a667170374957374a7a4c777a74387a346b385953506c3748432f696a594d7732436c4255727559444b62693944537464486d34446b47363538746e4c700a4d686a546957335a37435569572f79346d6b57756156543663502b513762757a4f385332536f646d454c61796947756a665867644f2f3742416f4741546c54640a4f636530586f4d655777454f447442366c6458776d4672356570594f4e72534e5263712b657944784656666473622f66335279634f744e57776c30614d756e560a443677536f506e625274446676694f68437a56736e414635674850527056415947427179797431707163507670547253656f4568614131586641375a3773356e0a7743356568375848494e6939643935362f376a456e594457554c6f763367497777546653477955436759422b6b77575a474e59707577584e76486a42646a4a6e0a62455a2f665952712f735278772b52556347546b665438566e355850614c457032726149642b52674c6c65777345704f77447753624a7868626a315051324f490a62744f716e476d31362b41434d556f7457343477524c723954694844793059444a7154734577326a4d34596c726b63386e6e77335748596a4e2b74474d7a646d0a687244433772415047576a46383439645476776546773d3d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", - "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100f5ff16f013d9468f924b83ada75fc0f23f97077505bdf5ed45666d20f32acc439c0118a18551939404514ea6513030dae072f3a39d4b374389cbc198b66c4d206f954bce04ee917cffd82bc605215a52cb456afb975065b0a7f427d99390d665dc11bedb586b5c204f7243fe6761b23de1e35890fa9a179609f2a0e3df81a9fe17a98c9b178c4eea4f6eb56da62bfd7f489f491d03a97db81f0b46fb5968d5704e60c486769b673a93025429f2fdf20445eca1c126226e7774270b70620c6cff2916db986c992e4e74c7ea5f1c0e5fd79ef15a49940714b423a32dcfbcb064d79a684df45b7f48fe942a52a75e7d760e2247eba36d2bf82a31d1decf72f4e5750203010001", - "token_challenge": "0002000b497373756572204e616d652011510a693c9a5af2115e1d93646ec55d3696ce6627d8f595be05f0db23a7d5e40005612c622c63", - "nonce": "af2dc5bf9e3a6d3b4a625bac32e19061774901c937d97f9a48df381cd372c3a7", - "blind": "de888a141ab0adf0ff07e4cc929b6ac1a599e65c3ee6f4e2c602b0fcb47a08712c7f2ef6f3fc0fffd6572c66498cf044aaceac28c56dfba5faf36b5c74bb40aa76aba559f44203816512bcedee9d168e2bcca80c889fd74af02fe24c22eee7014443bbf4d304e47c9686db966aebbb5543a07b37036ed03d844202de9c3ee59c8a1ebea14c1e572f2aaed214f831e1faa269854ccff13e62f0f144dffc9b2e982b7632d8977f815f294aed7a5f544b038f7fbbe33fec777586174ceda91c7579da859563da8272fbd48dcb665c4342fb17249bf87846534cd60e224cec187f02e14b91bb68bce3a4b7c135286f104916dd2cf9dcea44797fd7057073a0cc69bd", - "salt": "6b94c56af3bb58084c07e08b3e7a848132fe707d09eafe25003f7a26c8535b04a7526f12ca1eb264d4b6e4015309196d", - "token": "0002af2dc5bf9e3a6d3b4a625bac32e19061774901c937d97f9a48df381cd372c3a726667f6916c5aea78f184c27002c95dd4ed283189a68224ad7f322ef706a3b58c19b7457b57865de3c54bd8b1860fed5ab4c868bbb324145f17f74e77c77be9538216d8140ca0c87bf4cd17077f1a82e6aedd2255051191f5006f10b06ec8db240ebfc98fd80a9c1bea8f3c00d38902c2cde357c40f098f0705605002afb9e80eea058602e5fc86b272b9bdac0d68c8034751dee5ef2c7e4ed5424e66b52ad16ba78b1153410ce94207b91646079b25df936c577d747aec615797bd9e96ba8dea30c7c3dbe4aa0f1b687fb865c36f197cb19df9f7c2457874185b869cd7428af0227baa64fe98e09ceb4a4f76bba48f67064161bd13c5390658eb0a1a135de3b27c408402aaf280d54a438d51756ec2585b5da29fcb1c8a005a747414874276c92996ec414a8ac4eff1c57cfea3b9010781d9aec15a32f1307f557581c6bf507" - } - ], - "token_request": "4137000173039e6793ea9ad36c05b19247a450f78c9a6598f069579102c98723c534779461e54b5220d83d2c4f975a40d0a77de8498c000295a16b1f1b469884a38ef1c7e691ad0355ee59bb4ad462934dc15dac6294a57030fe83677e31c806c07ed9ca3450a26de0607c4596509a5c6128ff1e788f9b0fae40a130a0e022e5026fc34c44d6223525dfe181a603bed2ee58a91718e4550e65396d721768605adb7b82765ffd1769f1a3d2d5d62160025bc7c16803d0af81f969359160e11cc1862dcc2ad643a055daf7c94f9a5a351dce3e2f1da19b1d3270fa6b72d3f568952978404454a9022fa1d078478073a7615ffa6ebeda95621c14075986715e0b25ecee559b0e78e0074b297632f536faca4fba86e6f7d6062520dfa47283996ff2a297be0eea01cf4c37b575f64d9a65a5140f40d37a8223bc4c", - "token_response": "419701000102960715043dcddc055f5805a41e2fc119ee58cd8d0fd057fb9dd9d6b6adc97f5d3b6c46fe36cf6fdcbc73c6aa049a04bdc6d824fc505b2683b9d1b023324fb3a87282fbb7d8ac5f95611426bb1e9d37909b6304e19743c4c5276aa6c8182bc9f5b7ab71f31aa75bd0aa587f16ca093ab1ba1f7a170e1d16df59a598bb64e6a97fd8cca72a87ed8b2eaea501c7a1ef5ac001000297cfa38a3fab7aff07a6f1ad9c022692309c76aa657149afdac4cc4dce735b415ea30c9ba4b04f3320542e2c4f5af190af826ae264b6cf3abdd0a559cf8868ed5490ff9d21e04a8ae12eaa95adf28293e1b27425e02e2539caebf5849b281b2475084bdaa2bf368d7cb0e6126092540aa5511db0f507249be6af93e4c2745db6d6689eac80e499e2c54e392e17be76a4c3441e66bb5ba608a5b32f102ad434c691e82828946d1dd3587f68acde191f4d7933f3f5649ef5255e4f8b6a1fddc85974603e5c5ff87a9f6209f1aeb7b01919e751da5de3341ba8044f5419fb2fb6125b08a27ac0185a976d82ecb5fd6cc0508f96ff8290939e869641907cc8b60186" - }, - { - "issuance": [ - { - "type": "0002", - "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945766749424144414e42676b71686b6947397730424151454641415343424b67776767536b41674541416f4942415143794231723031627043727969360a4238596c68415a544c51306c762f79416d4d4b346d6974445845744f654a7a6d4244556630324c696d775573477472637a6270367541466551796e49504134300a3642774859482b3254674f375745426b694b563776456e71673471727a7356785a7572337255496850475a717a654b47797035747651617741624b65436654590a5546485850346758696f587a556e39634a71694e707756343245475133584738736f716d4b777a5273665a7256474f7a4631734a55425964332f71365a327a660a6f5a64514f34325343544d587862346558344e536771535935593747494357767457364e6c71412b7132596b784a2b3855534f743941703477474a73355030360a717677564a4a7378574378556e6f6a66547845643948795948554a4d614e416c58344b6a79626b61513250496865765a4a473035694d4549627457694875596e0a3534577a376f4d4441674d424141454367674542414c42356c424e686a697175515676766574385465635758776847717435327555452f3447327a426e3744670a355038714b704d71307a6f3457793832533842586530524e424b597851386a47703371516e384138537a306e4a704865304b34587570726d7367727a624649560a50536e46304b50474c75694e584355426845304471337179783139507634546a37373943463236632f73582f5066744f7977744a4577716742302b635a356f320a454e48395a5176634d4e653869322b376a45775262463654306e6e4f752b735143343547495661634b594c41705a4c74305253343336486646314155505249660a2b4c794a323858555347494953496b716e753673797866444551534534556a7a355371674135646d58654c6f5076624369454a3270742b466d504b5649626c370a32776754592b496d37784b314551396432735a4666544f6a7437646e596954736f47626c376151657a3545436759454136484a434966306b2b43616b454c74330a4a724364334a4164787a674d2b7637764569624c4441542f5562792b674f6f454b3835613244624a4f6f474b66673276342f525837694c4e414c453635774d540a4774675077704e685431654451444c56486e7a715a6245495a703361745239386e596f4876634f7875716b36473379516d427754557662304e306936482f2f410a7661354363744745384e536c7858313869494c5676754f773569734367594541784246384b4e566e316746634172356c71306a537276686477385868696e45500a624134754e6a692b6654354673624961594745613079785877685a3167354136687764726932326f2b59544b696d64697a7a7647336850455a4232534464572b0a384272325476393076635133417a46634165435246347979795663367a674d714779723534695262522f6a65322b36793353775a625a7a5a76674956476a4c420a4674696863377a6c416f6b4367594179344138706355614f4b61627649706a4a6c773532482f546b6a5a674a74354b4c336f48436437574b4a6b3172326378660a36694a6f4146573677472b586431647742534c5a74445136577041527a394a3270614f4e617352356f5358512f3038324252456f674c3764397437506c62796f0a6e6e566a53316d7a435362327253545970677830744368766b544e726e59614a2f5948397232337861426d41534237686f674532626f396855514b42674668700a53674e6674364c596d685469706858476b4c6f315a4a4b532b46446c436e382f4a626474667667617a484b45545543496951415154734a47506c6446416839420a5355316c3958774f56515a7a2b43706157694a70353354396f49353867387a6857342f6a775643513266326d6c456145624f69686d54305243494d3943672b570a495866487a5346334a34636b36364b76384164745977493744696a7947662b6a54367051307a4f42416f4742414f474a70612b783237382f68527a5948414e6c0a5542426e4c755679453743797433396d632f6a36564a7766765a2f6173314e5133664a615551546330334b6347467363354c6338567a73567a336e69436a324d0a6431574356354c6a6c377763302f6743423863794774316555774f713258556d4c6d73365a53434f694b6c674a662f364178635a65764f316543344c46726e4b0a397a597955646e476a716d59436d4d3334756643455670370a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", - "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100b2075af4d5ba42af28ba07c6258406532d0d25bffc8098c2b89a2b435c4b4e789ce604351fd362e29b052c1adadccdba7ab8015e4329c83c0e34e81c07607fb64e03bb58406488a57bbc49ea838aabcec57166eaf7ad42213c666acde286ca9e6dbd06b001b29e09f4d85051d73f88178a85f3527f5c26a88da70578d84190dd71bcb28aa62b0cd1b1f66b5463b3175b0950161ddffaba676cdfa197503b8d92093317c5be1e5f835282a498e58ec62025afb56e8d96a03eab6624c49fbc5123adf40a78c0626ce4fd3aaafc15249b31582c549e88df4f111df47c981d424c68d0255f82a3c9b91a4363c885ebd9246d3988c1086ed5a21ee627e785b3ee83030203010001", - "token_challenge": "0002000b497373756572204e616d65000005612c622c63", - "nonce": "d0e02f3aab17957e678918b88bd107d001146822edecfa9286827f8cd2e887d0", - "blind": "8fbb53b0b61268491d30a0b56b8184746e211031462a112a4259cc29c948bbf9ea2bc5c1b395185e2f9f422235d55f37f4334f080d947a66e47e9e842b4e663cbf7b5d2e648c8e987db8b3ffba9ef991b7e4b25d1c2e3b1726226244690237d4c1599d50efac6571f7173a67f4c93d07ca5b91ceb31884ede2475f3fcd52eb72cb38ddf18e37563b8d4b1f1397f05df3e6d65bdc7f909f430208898463774230ab47124a987c776e8224ae9b835889e88ab306f1ef397e0538ab93f681e563a83432b120f4dcd336bfea0978fd6d1aa06dfe635a0a1c1729ced586054d304af479c408e564d50473d86d0c84a1c55ac1eefda6347898722e5b60e02d56a495dd", - "salt": "c8e1c6d9d2911d432872eed71b06bb197d29fc22d675bd348193bc1440a6b3d798943fa0b77b12f2efad68c08cffdc64", - "token": "0002d0e02f3aab17957e678918b88bd107d001146822edecfa9286827f8cd2e887d0201c8af95ce37c05aaa2acadc50fd6d8a825e992c5bebf2d617f0359cbb669d85847ee9ca05f3abc8de756db4181bb525ab806888d71f3313c37d63d50b05e2aa479db91b2e7175b49cc8c580bdf48541c252ee23754b999ccd309e3d51740be0da7f346689617a8421d47d5803b1b9e38dadbf6dd377f8553d86d5362124d154457f4318ecf67346cd553c684b3c4e56b20083e195c0f944c7fbd941dba0e0946d03d9750ce0be2470a9f3abc68185c93bc2e6dc2bcf84d61a50f96e9b229ef7308aac70b86e61c5bbfcff34eb2c23cfaab41c8775c38d6f095d56d4e43f3af8c8919dd6d11964038aac6245c7c7914a3e6c171cf262d67cf021f6c37621a6ca4f300d9141141ce8bc484dfbdc8d57572554b4424021014f7a07f5eeb9ef8c9827abd018f257cf1ac749e5d35dfcadab80abb9e2aaeaa76d4f1c2dfdd5ff7f5" - }, - { - "type": "0001", - "skS": "79d090708ee7b744f1a764a345cf5ed372b0d12dbb02b8ede06dd649712e1091af235466040b350d5fd547ab3b23aad7", - "pkS": "02e26e2214b4307c84c9bcce7cf89d90a65ac201d5c6972f59e66afd3e4a543addfadd364bf8d5a503f66e3bfbc358138b", - "token_challenge": "0001000b497373756572204e616d6520f367e2f0d1744a7ebb63ec0e7d80be9d32314ed9c4d163894debca99cd02fcc30005612c622c63", - "nonce": "4e39a695d77cb30da3dd7853fab3d8ad903aed8507559a158df4b05510dd6db7", - "blind": "1b48f7d21eae4826dc45097a7265186cc3d5c809889fed2ae498dba33c34a630106f9551ae7ccd0471a1d89ed7c7c243", - "token": "00014e39a695d77cb30da3dd7853fab3d8ad903aed8507559a158df4b05510dd6db7a4daeb7e44acdc36c1556bb646f452343e6f33bf6c61340efe89e94d0026f245cc5ac4950d730cea0a8fef3f63d769d002fd4655e786156b2ea5a99e26aa0694a1b0b9bbff925e2fc7cc82fdbff60bddc4b4e0b0776d2a0f4085c7c914eb310891b1bda47deb869861c4f23de498a6ef" - } - ], - "token_request": "413700022a1b4a45b6c832014f518cbf671f5069a9bffa7c98ed82d9df888a470cb60ef6f8951433a9d515304513313996bb5693f23d9be93e56ac59df72d7644604e316c6e779d178e91de907935b762f08a2516fcd2b32c5ec305bd96a44e420660d9fa6d1ed89050fcc538ca3a4afba2e1cb49c611b74918038c2231a4a0e85f7173260f31cd1ed6a0f3a3ec5c40d58833fb09e55c6191b7c0a3ed061dcc7d78ce972f7184bb8181010a650b36bba472938c8190b9cc2bc3df8436a425723d6230aa91d397ffd680e6ab12ea7586ca168c43790ece3d9eaac1a03a98132b70008eb6a9afcdb41a15a21fc59f5efff31e17b26c6c884a3f21f26ec8e46813753439fbb0a000194034f03b6b499800ef6c4ff5ae4e3ba6c71c8757e65c1f2533e84fbf1c04dc102100ee8717427f6833347f467311ea53acb", - "token_response": "4197010002198be0563250be6ba529e2b1acc30a3c4564019c227856609344adbd574be40d0b5ee9f0ba071711e6f10075ed83a3c530342ebcc7fd54a4421b93fd98e9cd61c27128bbceff0d1eeffd2e59523c7f101864ca97e2f889189263feb351499c0319a5a612d74a2650772c58e109ff7db789a9f10ef1ca409fa4541658b6e70128cc9ed23d0390b5ea529aeb4f017f099b6f0768a10a0d021abe578b85a289d22928ab51b4c07da71016a6a2e49c800a4dc0bc767ec2b02a1eba7baa94efcd582215a07201f5b1b9c5cade04bbeed6e82abf8235003bfb16f8d346112c3f865a4d6398571a5e6da96d6d810a6016433c258bb261c6da3824142f1b283a62038db901000102cd0c4e0dda07218612009f7402d1d4230449ef45e01a9d5a11424d49e3828d47331ad9a24ea960b3653e8a00f0b4ffaadc12d787feba11edfbb1dc171fe391f8a3c1980125f5c909fb3e1bdcc34b65d3b68261c0cd5e0fd521035173e0c6043701697c03cd73fab74694f53aaed84791a58ec78add1c7b754b4a5d25a7dfab21b27942dcfc732a4457dbdcede8a89886" - }, - { - "issuance": [ - { - "type": "0001", - "skS": "d02a980087c445cda954f20f236f0412682179ef1febd1389e9ff64f4da210386dc01a8ff3c6e1ec36a9332ed45fc4f0", - "pkS": "0354923576bafce71b63ad46ea61ee24a0815030bc9b6434817fd0a9b7946d98670e4556eb26793e7c0e8bc49712746b9f", - "token_challenge": "0001000b497373756572204e616d65000005612c622c63", - "nonce": "359ebf6bbc1380f49232d5308c9503c64acc81eae1fc9e6c22990c730439ff58", - "blind": "dc34ce1a57daccd8d8e41a5003baf3bbdb3c6a03b0c29362a137515d3e0105622b31cdb8da507772ae7169bbd0be73fb", - "token": "0001359ebf6bbc1380f49232d5308c9503c64acc81eae1fc9e6c22990c730439ff584d1a8f1a708ab7ec6f9ddfe97074859fdf87737790491e4b3afd0977cd3bd39698b261adecfad413af272471a45f97a1bb710bf4ad9e9ceab9dd4257021a50c27eec8338c740dac91522f5cbeb66655e000a77504c986d077fcac0b4908883d7ca92fe82779c4f68c5379e4f250e38b1" - }, - { - "type": "0002", - "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945765149424144414e42676b71686b6947397730424151454641415343424b63776767536a41674541416f49424151436251705076414567324a6a45790a614d6a477042516b5035677556747a764c582f4a6664413652777662496b3850505735453377316461412f4c7a6563316651356f4e58314966336879316447670a74307141473156582b34566b4550672b5334554d424e5a4342586d4635544b52654c386456644258454a75684f48357044666b516b7370454a455a344a656e740a6d7574683544554f5075504d706c39674f2b4b3745783936645162444c77317667484865634577393242357038707164627a4838654d6256577235597a362b530a316a42424153627859744570304133702b79706d6854596338786847502f3551414f61444e462b746e59543638306e76787832566e50784a3758716b316e49490a4d64647a4f582f54684f674e2f584a4c37416c3462676d326d6d475a466f79614e69323378666d7654443654664d683873507377416e6a457746724b7366484d0a4b626a6d4378663541674d424141454367674542414a66344c767939646645717150554367364f4c627675634538556e324e467a3436544274564f56767845620a482b39323362776a3539304a776f786d576d324d6e744635716375516d6345746353617977675671753771477779595452696b546d6f4d4e4b507375694b68360a6b3269346d376948436f70754179646e4f4c527a724e7141452b4e6d376d4d6b47546b74626b412f4d3339694a32396c576533454d4557556a6a63363351656d0a504646592b6950635657554e7150656d7149664a757972394a5258356d4e6c33396f55413773342b795656325a4c59706a58583746475a4479416643754368420a6e525848642f525137566a45307235786550337a73346d4f5550646e4e776b446d716c4569726c7032454d54652b7a2f4d7436494e456258744e543779506f4e0a5a3168742f78635173714a63435844507556525775684e734e48524b4661372b39357557765236674a304543675945417979736352316b4d4c2b5a45474f466d0a6d62455138684c49387042737966613749543441382f69384f4e2b78337430654378656c324c4954384e415948664763657736667a59426432517968634f64470a6f6f7a774978795735506237553839764a70504d73784453695a58746a5a782f52745a2b427178516f702f6567682f676c52576c6b3444474c75733246744e730a734a2f46585a576941744770674c2f5033703965792f58334b34554367594541773649336c552b4e764d67533533516c786e6b4368366e2b4c50724a5272464a0a4c374c484a413235374e4b766e4f55562f5553777a324235315737494c48567a706d695647546775332f7643456731756c33554e42674a516e4e6b74773573730a38334a61344c3278572f41505058505473315266746e6331443741724b4f563268426a76746c365770774d746a7459696d684c583747755158632b346a4d62670a7453683950772f376f75554367594234434d42735a76414d584c396538387a7167504c434574636d654b334e705468714b33666b724e43487961494e536861310a39774c46524845446c653670776c5878586e4b4c74347536385074772b544f43566b4b4b66426d71725546514176356f6a476f6b5959774350644a6347466f610a51422b31555a6c536536473676357177656c6d5a4444774b2f4779346a37466e715032796a5056724e50517758534d7a4a4857646933533941514b42674867510a4c57617754542b4831726f2f75524e476e7676646f3057396f4275486f472f716d33635143595244685532583974665a2b56303853326c6d744f6b384a2f372f0a2f6b6c6442722b6d426551495a4641466f546d4834437479796a68624773704a363259305a5134556c585855695239733739544f386a79766c4c316a6e6b6e520a2b41514870785057796e583443344a646744447a6a7356555032482b69466747416c2f616b6b6656416f47414130646937733370307a556943663869786b53540a6a61686c5a5a6d535670795a76654b6f543433454656427768774655736e3232436a687171415968565953444d724c624e39695764674c79645839304d3461580a2b41663976505463532b686553355a3172584432564f6b682b33616a4c542b537479726679446d5a52637332694e624e43416746666c70663863363447394a690a565671576138446169476c2f49746167337a374d7661413d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", - "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a02820101009b4293ef00483626313268c8c6a414243f982e56dcef2d7fc97dd03a470bdb224f0f3d6e44df0d5d680fcbcde7357d0e68357d487f7872d5d1a0b74a801b5557fb856410f83e4b850c04d642057985e5329178bf1d55d057109ba1387e690df91092ca4424467825e9ed9aeb61e4350e3ee3cca65f603be2bb131f7a7506c32f0d6f8071de704c3dd81e69f29a9d6f31fc78c6d55abe58cfaf92d630410126f162d129d00de9fb2a6685361cf318463ffe5000e683345fad9d84faf349efc71d959cfc49ed7aa4d6720831d773397fd384e80dfd724bec09786e09b69a6199168c9a362db7c5f9af4c3e937cc87cb0fb300278c4c05acab1f1cc29b8e60b17f90203010001", - "token_challenge": "0002000b497373756572204e616d65000005612c622c63", - "nonce": "e2ae9b0649b5aba135b7be7c357c2928f66bfb1134c0ffb4b28adc64d6e11c5d", - "blind": "39d78a7e2fc369e1055f4db77ffeecc3e364b33a37690f4984b39d01063537351619bad1103a5875d1a2f1dd41c1dc1a11999b90d9c58127ee7f579ec9b7d30ef71f87b4ee708bdb3d279cb063a3f9893712162f47d9cc3d00b3a1b7ceba6071dff7409c330f4d0421486cec20b0df5f7c8e689c00caf9c7060bee6e15560d4e942b670013a8ab1f13ab82cdbdfd248959d404b28453bb7a2792a468e7682c4df7d999008930e0d2fc9e5c460924c3850db854cab5e838e49c8f69903c1c0eec89949fe535035a3ad343435fdc6f2a04a2f03558e7fe89e4d74f883ea45adf5247f9e9f8b96708e45cf94c9db46ad641d1c73b09f6d40a85ea1d3f61e4992a36", - "salt": "524014c58a7a9141ba5fb3a90f02ebaeba956f4a9916ff52f90faf0eaf5340faea7967a1f8a8ce12e0f8ac0d80e97f0c", - "token": "0002e2ae9b0649b5aba135b7be7c357c2928f66bfb1134c0ffb4b28adc64d6e11c5d201c8af95ce37c05aaa2acadc50fd6d8a825e992c5bebf2d617f0359cbb669d8edaf9c963ed48825384a11a159d9ef41b054e62eb0e6139e255ead44f73f95eb799d1138d55a16d87aa75fa0504bc82623c342204ca15084fa9356af319b4520b06241d549c8a0fcff311c3d609f29a90ff9121756bf73421083d93cde93971cb38da8e0379d22642580d03500ad1439db935ef7bf1449ab5a05d74db678ba4432df8bc3ea1fba0e8e25bc54a628245003d88117ac961ccb614cd17aa795801ab3f918b67e2d863aa9d833800e54691b274cf4c3699f59ec0fa79b00dac7379c341fc86c8cf19609168a8b5bc9224bf76469dd88c62e00048236c8c8da2d73110bafb17e764e971a3f8f3350f461103f131dd915f003a34445385069481ce90b5e52080c4e14a29c9849d3bc45968184f5478bd1baca0f4068004b724f3f8717" - }, - { - "type": "0005", - "skS": "0f69c96fbee5d5bf753ea38c5a389d8442789bce712c379c0df7c9e971ed340f", - "pkS": "7061a3a2e6e145f1271f5d23c10fdf33f3dd0a02bb13b21ba607f49135bdb20b", - "token_challenge": "0005000b497373756572204e616d6520e41785c1b1b214e373a34a43b761d67f4c712eea2a2ef52d9fdfa93e74ae79a80005612c622c63", - "nonce": "15af88cd527637b15c1ddcc7bd5f82d4aaecbc5f18d4c21e45d6f753b658762d", - "blind": "9d74573b31139fcfdf49f5b082b8877fa9e016897117647438325e4ee09ddb03", - "token": "000515af88cd527637b15c1ddcc7bd5f82d4aaecbc5f18d4c21e45d6f753b658762d136301b885d88ccc995b0b3be353349282cbfe97be12b38740d4bcae9d1d15f65ccde68c832ff8cf4c532d76e07a2063b1badcb020fea2bd12657da4075b228502a095ce39773e135c62765fc6141d88548a7a0360b111e655d6830486cf213d73549eceafee1be703beec3e9fa8059ed370cdec0efa2472f4298ca345e1badd" - }, - { - "type": "0002", - "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945766749424144414e42676b71686b6947397730424151454641415343424b67776767536b41674541416f49424151445a36557646474a4a6b6676336e0a4c64785749645570734c36596b7442495359784844644e61515743615455722f6d6b5649455753626a46576a6a362f59335837544d4c54527948737466444c530a6879384e6f7477764b34355076652b584c2b79736f796d597776574f312b6b7965316e553061543166424a474b504f4949547047686e6e56633655396158514e0a665333676a655739767a3369574a66696177484c6b326f6c6c37636278646775596d416e535578337958322f596f526f4b644e54647576642f46663553684a750a444250397671426b4c4233454569424f47567a59454f4248464e2f5a6c646e7930737a365956705a777379506d4554424a54356b426a357574624272587974510a4d4a45786c302b6c69573375794c63495952657344387a6f4f616b47617a2f594d6e563171714d364a56315266693052366b6c4432696b646a624271436550670a63784d307359315441674d424141454367674542414b754654346566464c4f587063444f76307a6f716f4637526a71503750504a4f477042507167664a3675730a78536931784779366a4164486961304a6a323953774e3334793473496b3751307530677338654e34326e6b69666f7a5477762b7330457a2b7a4f49614b7643350a6b4375564868732b764f6f684d373058784d44553771724f644a3248766e7539516f54506b456e64527756347633776e49623474586964674c442f5530474e420a666c71326a746f63356775394676376947694b33534c692b3864326c4a2f4b4243596f4547755046514643526a2b735876684a744c70797166644e54386e397a0a4545534566364e74384a684779426f3466444a41394f4e416c6c61644875474c6b6a30465557786c6e7a66656d733133686a33556a31584157506f65504d58660a6131796a6e466e386934485742446f78474952776759477668657a33333237325163683144502f386e4e6b436759454137495055704b4a454735487538674e720a354b74585079316842547854674b7556366572646a47377447644b6c46392b713579744b45646572696a456a644c6e34387638484f3166566a394131374163430a6a476f7a37706f5268766252364d6752306b484841784945655562782b61775a72714f5256416d42423339456f7441596f4136586f764774573465306e3362470a4e473654496a7672784f4e6d784f7738376635466666596a31506343675945413639306234734253453771677942495847736e49632b47614b49687872454f4d0a312f704e68466a2f576351706a47684e6c784763337a5a377a677470306166506d6a4a5466766e423436573869577874756f7966696e5470764831546d3049650a34694d326a37652f777646774d33464a596a4f6a4b4b5962697a2f2f775136426c627056735450397a77483174325761535448533741736f4a4f6b7177516c570a67656c34464a7947483455436759413675693146782b6a6a6336514351656b376558514c67756752566235694e376a637757334c6e6775506d756456657a74440a64564e4b424f526152774e4879356e4f4e4a6347484451794a6f414e494678346f7a4a4c37384f6b594973556f7745523154566d524d594a6d783067597152700a3463474850576a6c684b74315266696e585a67335a49306f4b68556d6432615678464d536342434637665570746f4d576b556d4f456c307056774b4267485a470a6970564b6d3934493246643775747055465a4547734b6469784a333977634d4d595a4c636a6a41566a6b41366a6134547876616e2b36313353376b327a59516c0a65486c55425561433965687a31784b564d657663644e6c776631783736384336703847714178396573305559716850306b507a785478366c475474576175554b0a6136355178425871686131523565794f62356175675a4d4132632b7a5077346d5a5844776a4e4742416f4742414b5a5a4135747a5976386363733251576372510a4763374641747a444979675a3336674f4964366535494c7234516d357447704d7278466968574248527966507a6c6d702f4d57483839632f59384a4e59534e480a774e63526c306c45527170544b6e664d316a32344844776966774f53412b744c7a586475704f546f2f73663470506258775647573379417836697973533878500a77307a544b65497165434f79684942324c424258387279660a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", - "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100d9e94bc51892647efde72ddc5621d529b0be9892d048498c470dd35a41609a4d4aff9a454811649b8c55a38fafd8dd7ed330b4d1c87b2d7c32d2872f0da2dc2f2b8e4fbdef972fecaca32998c2f58ed7e9327b59d4d1a4f57c124628f388213a468679d573a53d69740d7d2de08de5bdbf3de25897e26b01cb936a2597b71bc5d82e626027494c77c97dbf62846829d35376ebddfc57f94a126e0c13fdbea0642c1dc412204e195cd810e04714dfd995d9f2d2ccfa615a59c2cc8f9844c1253e64063e6eb5b06b5f2b50309131974fa5896deec8b7086117ac0fcce839a9066b3fd8327575aaa33a255d517e2d11ea4943da291d8db06a09e3e0731334b18d530203010001", - "token_challenge": "0002000b497373756572204e616d6520fee606b45d79071ebc3d4b1578e9fba6d0203b37b634396c9319bc84fd337bfc0005612c622c63", - "nonce": "091cb6b53c06d676e883a5e849175b7ada9447e9ffa1340bdbf903bbe8dfeeee", - "blind": "38ab5daff76b99756c5139fe9f05c681db94cf94d4a99cd0266a563963844dee65be736e16d123c1966390d31952813df3a70986446168e9737bede3e3230f234e67233aaec48ca34614243e8dfdabcd5de050fa41bbcf4063f9e17abe555610fab025f5328a50c40f466831dcb7c39677c9212ac7a9531f31bf4a976d9e3960d36c7e268530c36b80e34eab97c0f7aa3dafebc692767b25746c0764670651720e363e2c24404a8bfc0055baa48ee0fb456f91de5afaa90ba90c0465b6ab6e29b98c1cb0aa7608008ef38c5774f576dc5ecea6f4e44220835f6405c50110eb4746a3e3ff9b39cffdc2196202802a72df2aa7608139b364b3d87540b3a9291050", - "salt": "6a1d7f5d1c7a5f0bf27454e87c9602dff1976463738544872e8fd4276bfe141e785e3e0fa3e82ea8ce228ea5f7b531fb", - "token": "0002091cb6b53c06d676e883a5e849175b7ada9447e9ffa1340bdbf903bbe8dfeeeefef1a842ffd4750abf64ceb2f6acd5662c25a58c314f6daf6fb1b3eb46506119ae9b682e9726d3674ef03bae444bc47bd2ab94c9f9066144c4fcc4bcc30ba00534c8705e3329cb5ae5886669a137bf3f14d322b621065f3f1c3afdfc1358db4728cff35a3c7f4c98bf6c9b36365846692b3274b1bddabc7aa4ef1fccf91bf940c01da83c3d2e14441b8c1133c7da74e28cb197db5334d9218f418d159683eb70caf998f2267527cc331086af60baa390f83384a39257ec56e68f8b008404f99c40e11d696115312e316314b9c5c680d0768354ecf433cd95283206600bcd669fb9bc2bd2541e8c8a7aa6b764c116183448d034d0ac1fcab5f28b86ef0c7c0d0cf2e58ed472805d4af0faeb97df388f7f63fd25b6711d39666ca52d03cb078692fe5c6fcf9f1aa0791c1816412c9da990e74f5075255e6e1917edf2a06b4c4a67" - } - ], - "token_request": "425d0001c202b2634407d8ff619b802022b08f412569998697d1dfa28eb27a43c8558234d590c249c13d4333d4a5c56e8bba47380c6d0002eb36f3b947adad194dd8a857d7afaaec606cfe2ea9b094cb4498556ccc9c941d31c8154574cf7867231916864214cf008c858296d427a1b53e3fd0a383ad35ee09437ec019b3cb6153cb812034a2ddb1d9687cf65d8a62d370a144b99bcbfbcd71775b0572318c5aed0b59d99fd53c48d04c44700791a154483d57c8acaaafdc1111ee6173a8c8feb353d1c10b81136701e2e018df16e09b2a07e4332dda3e1f9dd843d8e48409e141d71d711cac3b813d74ad28acb1b2db90317826af754c9d6679d66aef57cc7a7950588f9c579b6802af1147da8820017bd13ccc02b7aeb712a13aeb538685864de542e7002bb6428ccb216c07546b3ded3cd9d84a37ff2dea0005851c82537d5b9c89fdf936772461fc3fd14ff36981b5eea1b26a5d19311091b40e000205236dd0c66157e07afe8f74407816aa87b0fc8a773538e73c7673f80b900bc3a5b0570b7feb7c5aafb5b0006601c43cb87c96dbac850826e9e4b612f81fe7bae067220b057c1464c44bb4c1306e554a28efde7b536ffab073658a3a64ad963394bfdd565bdec31d52dd3e8294f7580fc97ba30e72c6bd58089d9a3d59e53178910438bd576c94504458206e6612d4c8e38eb553776b99cc3cfd8f46583280055c6a22445f7a5bec1d897ab9bf286725cdb36c5167ae3e2f39ed55f55ab0c449fe5a100b7706cfa63ad122d9ff7b5f3c3748005bced5b76c43d7471681b88f144e9682ac627a2c3639b37800d5c5d7e3cc8eea9689ad018b615ef99f3fced67508", - "token_response": "42fd01000102365db273ac96ac0f7806b2d8d0fc09a629e3da5ef1111f8ce56dc80c64480305ead1f810bdb6297adce2852e099e5c40eae18b4f9fc8b4e2c214e0a10e50a06e76fd6889281449a7b47521735222137f286a1a15e2c760a015943511eb6eba92eb7472cd0371b79ba82ae8ab98c4097d97d7bbf94fc3cfb9d9b5384fdffc86c430360205c03772817544a5bc66fbb42c01000217b186a465203f57e6843f1c57ad5522a1c94665d01cf3e1842e1a935e2bb18d0840ab25afd9824b8f1cf35b9908729f9d8192b7397fd4e1ac1814ac1c8705f92e99a1281abfc778cea3c52201e6b7e2965e1e2bbf3d9b7111ac86efbd489905fd8ed37ce9833d7b40a70b6ed74548a55f478404c6e00d13324dbd084f68fbc0493eca755c5c6eca6990aaa8e8c2c574ba89fbe75e066e61729a37f021af5dec00a7adf0a8ca5a5dc31383de61e94fdc1992a25638541cad8a1b3c8be5511fb9d5ab6e7213b621e80cf85ee5c074b35a603edf7715bc475a5074c9090dce16508914d825df23b0b00c941f5e1918dd93739e010bda451011d5b691d0a3c940bc010005b2b09a6fbf81dde2a58a8b6493e99d1643f91314b6652a86a0fb924e2e8f6a7e124c7bf9a66f170715dfa83a9569141d18573133bbf613608d07684b14fdab02e79e64f23dd8730fb05dedd270018f91c55c0b58e12a8ff04e0ad9ab88c3360c0100024da2de3b1d3966eb4bca00117068e7a82e993c10fdc5e52d8c38b5e72d398d9b201bd26ba2ca117e92cf31b0726aa696c66f8adb16d39afbc9cfbe7b0c0077b78489dd5497d821397b70f9856247a59419ae99e84870503ba290d66f42e400fb460ea0f8a8a8eb58c5f150b812e48648c1aca1d448066ae1af9cea911591a8af7350e8df4ca90fba4d3c4229713f684d0e47b25e178f308120116d2f41a1fc1293fb0682d0e9c25139574410c6976be43349846aaaf30fcd029bec0f23d4f564e310652c1de6d90397b5478678d7ce37e5d09a8cc5e3a4d593c36095c6da2438c0eab98f215d3e3852a5bb7c099cd155c2a38fa310ebdecc4a93a98a6a79abe9" - } -] \ No newline at end of file diff --git a/test/test_data/generic_batched_tokens_v6_go.json b/test/test_data/generic_batched_tokens_v6_go.json new file mode 100644 index 0000000..ff80e47 --- /dev/null +++ b/test/test_data/generic_batched_tokens_v6_go.json @@ -0,0 +1,108 @@ +[ + { + "issuance": [ + { + "type": "0001", + "skS": "39b0d04d3732459288fc5edb89bb02c2aa42e06709f201d6c518871d518114910bee3c919bed1bbffe3fc1b87d53240a", + "pkS": "02d45bf522425cdd2227d3f27d245d9d563008829252172d34e48469290c21da1a46d42ca38f7beabdf05c074aee1455bf", + "token_challenge": "0001000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", + "nonce": "332897fa11779e9594b096e5cfc5e43b1405338717bf27b49e9956c1f212fcbf", + "blind": "6572ac688f2a37a1e6b9ba7a84a6034d9cb82673723e2a2d1413de60ea296a7ce0ea351b6dfa6e63a1b390460567f903", + "token": "0001332897fa11779e9594b096e5cfc5e43b1405338717bf27b49e9956c1f212fcbf501370b494089dc462802af545e63809581ee6ef57890a12105c28368169514bf260d0792bf7f46c9866a6d37c3032d8714415f87f5f6903d7fb071e253be2f41077848f52b6bdd765ec802dadae854edff52d1677c444fe222146fe425e751c826b4eccf4c4983b840af2f73a07027d" + } + ], + "token_request": "340001f4036e7830ee395c3e0f9d63ea6791db427062f773872ef64bc4a0935e4c95803558c4743f2b8626fbd655b0e2fac742e217", + "token_response": "409401000103ea1ec6b484c65905806dd80e159bee70451ebf99e4e74059da8cb4efc1129292ebaf28a690df8f7f73dc8afe6628c48ead526d157aeb36848554fa0559afa23378163844098eceed1b30d73a6681a387fed082a933bd3597bc1f76a0a77ccf7cb65d20dc14499fb4cb97d883f7b6f5e49ef6e016861fff4a294a620f83d3ce26dd52f6d62cb974d0aa76c23752dc5c24" + }, + { + "issuance": [ + { + "type": "0002", + "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945765149424144414e42676b71686b6947397730424151454641415343424b63776767536a41674541416f49424151444c4775317261705831736334420a4f6b7a38717957355379356b6f6a41303543554b66717444774e38366a424b5a4f76457245526b49314c527876734d6453327961326333616b4745714c756b440a556a35743561496b3172417643655844644e44503442325055707851436e6969396e6b492b6d67725769744444494871386139793137586e6c5079596f784f530a646f6558563835464f314a752b62397336356d586d34516a7551394559614971383371724450567a50335758712b524e4d636379323269686763624c766d42390a6a41355334475666325a6c74785954736f4c364872377a58696a4e39463748627165676f753967654b524d584645352f2b4a3956595a634a734a624c756570480a544f72535a4d4948502b5358514d4166414f454a4547426d6d4430683566672f43473475676a79486e4e51383733414e4b6a55716d3676574574413872514c620a4530742b496c706641674d4241414543676745414c7a4362647a69316a506435384d6b562b434c6679665351322b7266486e7266724665502f566344787275690a3270316153584a596962653645532b4d622f4d4655646c485067414c773178513457657266366336444373686c6c784c57535638477342737663386f364750320a6359366f777042447763626168474b556b5030456b62395330584c4a57634753473561556e484a585237696e7834635a6c666f4c6e7245516536685578734d710a6230644878644844424d644766565777674b6f6a4f6a70532f39386d4555793756422f3661326c7265676c766a632f326e4b434b7459373744376454716c47460a787a414261577538364d435a342f5131334c762b426566627174493973715a5a776a7264556851483856437872793251564d515751696e57684174364d7154340a53425354726f6c5a7a7772716a65384d504a393175614e4d6458474c63484c49323673587a76374b53514b42675144766377735055557641395a325a583958350a6d49784d54424e6445467a56625550754b4b413179576e31554d444e63556a71682b7a652f376b337946786b68305146333162713630654c393047495369414f0a354b4f574d39454b6f2b7841513262614b314d664f5931472b386a7a42585570427339346b353353383879586d4b366e796467763730424a385a6835666b55710a5732306f5362686b686a5264537a48326b52476972672b5553774b426751445a4a4d6e7279324578612f3345713750626f737841504d69596e6b354a415053470a79327a305a375455622b7548514f2f2b78504d376e433075794c494d44396c61544d48776e3673372f4c62476f455031575267706f59482f4231346b2f526e360a667577524e3632496f397463392b41434c745542377674476179332b675277597453433262356564386c4969656774546b6561306830754453527841745673330a6e356b796132513976514b4267464a75467a4f5a742b7467596e576e51554567573850304f494a45484d45345554644f637743784b7248527239334a6a7546320a453377644b6f546969375072774f59496f614a5468706a50634a62626462664b792b6e735170315947763977644a724d6156774a6376497077563676315570660a56744c61646d316c6b6c7670717336474e4d386a6e4d30587833616a6d6d6e66655739794758453570684d727a4c4a6c394630396349324c416f4742414e58760a75675658727032627354316f6b6436755361427367704a6a5065774e526433635a4b397a306153503144544131504e6b7065517748672f2b36665361564f487a0a79417844733968355272627852614e6673542b7241554837783153594456565159564d68555262546f5a6536472f6a716e544333664e6648563178745a666f740a306c6f4d4867776570362b53494d436f6565325a6374755a5633326c63496166397262484f633764416f47416551386b3853494c4e4736444f413331544535500a6d3031414a49597737416c5233756f2f524e61432b78596450553354736b75414c78786944522f57734c455142436a6b46576d6d4a41576e51554474626e594e0a536377523847324a36466e72454374627479733733574156476f6f465a6e636d504c50386c784c79626c534244454c79615a762f624173506c4d4f39624435630a4a2b4e534261612b6f694c6c31776d4361354d43666c633d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", + "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100cb1aed6b6a95f5b1ce013a4cfcab25b94b2e64a23034e4250a7eab43c0df3a8c12993af12b111908d4b471bec31d4b6c9ad9cdda90612a2ee903523e6de5a224d6b02f09e5c374d0cfe01d8f529c500a78a2f67908fa682b5a2b430c81eaf1af72d7b5e794fc98a3139276879757ce453b526ef9bf6ceb99979b8423b90f4461a22af37aab0cf5733f7597abe44d31c732db68a181c6cbbe607d8c0e52e0655fd9996dc584eca0be87afbcd78a337d17b1dba9e828bbd81e291317144e7ff89f55619709b096cbb9ea474cead264c2073fe49740c01f00e109106066983d21e5f83f086e2e823c879cd43cef700d2a352a9babd612d03cad02db134b7e225a5f0203010001", + "token_challenge": "0002000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", + "nonce": "215c56ebf1bce65aff6f99833be25082a9f308f4d39a4cf9b0fd4418a9ca1882", + "blind": "8e023c5f212462a34c03cc59b7316c2f5901bf56695d6e6f05c3f608ec588da686dfd48d200c6953c75b69cda3e19ff48556c23c32dbebc39f72b5fd8cfd8230af807c0dec3eb86b7bbe490767ef6056aeb828b2316fd4b670d087ddde5ace55f6ef2e78b76bb83a79ed462ae150a923d19772a6c8de47e376626c25732e7a66de5ca92a63f93b4dcd7ecd680bb3fec230951df7908c253556af29409dd3c037d5cb16b0861b723d1839090e882463ac10e7cf3a78c12e7664c68aec7a33fde219ab7a0068d32265bfc211476a462c0342092b08f96804e0b83a3ebe93b516db9ddde3d97344a52f3d90302c2e136a39b660f035db44543c15348fd91da04d01", + "salt": "3a0d3ad52a28b49028588d985f491f019217178016c86b45c9a891f68bb82ec6cff8fc68f85fa88f6c16db7c70880f1a", + "token": "0002215c56ebf1bce65aff6f99833be25082a9f308f4d39a4cf9b0fd4418a9ca1882820fc64e2630a0d5166c36696b663ff34518338263383ec92b3347ea30bddae4ca572f8982a9ca248a3056186322d93ca147266121ddeb5632c07f1f71cd27082bbead86719e39ee60b224ba39aed396e7b28cfb9cbbd8b654887fc04921f76dc92ef72cb47650cd95bebd277162ab0ea03e60ddf9cced0d8e076ad065e29a04ef8c69fd880a5cf58db7b3f9153ee5a7382685d1b4d1712ee944a92fae4fba32ff4d9288a37f6db1eb29ea7cfc9ea2ccb4aa1c729c0b4b95c5a40e66d9b9f8fee7d87ff8e8513b7ac1e934b74d68b8551e102fbd1fb0404bc1904ada8684aa0afca6275877b33224cd15ad1b771ba9af7821385017ca34e2eb9644a88c204675cbb1bf3b7cd7cdf9055b3b377057faec7a36e81652e6d0654280c017723e878f0c9d993bace51a51685c62ff22f0ea37c244a6478077e914539e65f95372e4cf" + } + ], + "token_request": "4103000208a84566ca40ac42d01bc0e0ad10d2d8f9bf45bb30326ce3a3ad0f2b56589c1e9260679876a1271c83fbb5dfa9433c72a0a6362dbee06f96f3e3591c3ca8dad240e1c9696fa7a41b79306a868cd1cfe66432129ab20902be6a8214d11f8863a74b2ece62de4fc75b4968b87216471e6b719cf6c91c99abb83bc98fabae802aa09868b1bdae58a73023bdb83c54d6bebfabbef837c9d4ef88a7a0e742e32a860e05cb798b4d09d8eb1336da49d8d83fb619ae556617246b624b5a0fd55f16e27150c96b6b4d645d897d04443bfb5f519eabada7b8b4d9013e8f6f954356231dfea1e8e7121eb52a5157fe10381689b7f343cd4380e77727ac96a126f097b5f79758", + "token_response": "410301000212093795bb6bde21df488d56d18ac4efc280d6a493528fb180ff6204ad2c2e6396ad19c348103c7adee2c254bb4ee4f0c0015ac070bf41d23a78856880f1b506ba28ca3d370e262216e68ffdc6be57bcb0e03d7c3e112b63a5695dbbfb220ccdd68a601d829821ffa19b5ddb2da6da3f71e308d70253f43b7b52d2739f2380ad5150be14db16ef39ca9c475255b0879ddee0f1147e9230e12e20b5ca7e2069e9ed87db7507f3eb78d9fbf2a957f8410cc80114e9006d1d6c61d3712b04935d62356b0e7540b10189394eed8206e65631e77e7f75ba0768bdbace3ffae1bc70ca86303c3e0d3268bf4dbe3225a618926cf3f2f4ca2c80a9a2f95bf638699792b8" + }, + { + "issuance": [ + { + "type": "0001", + "skS": "39b0d04d3732459288fc5edb89bb02c2aa42e06709f201d6c518871d518114910bee3c919bed1bbffe3fc1b87d53240a", + "pkS": "02d45bf522425cdd2227d3f27d245d9d563008829252172d34e48469290c21da1a46d42ca38f7beabdf05c074aee1455bf", + "token_challenge": "0001000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", + "nonce": "79f68dbc610a490d940367f0de8a008c5f429c535dd758afa59965d7be6d8753", + "blind": "4581461cfd525cd59babb8abbcacafd69c8a6da3fdeffc209be42323d2884c09c15beef67287112bec9f674f6e3ef523", + "token": "000179f68dbc610a490d940367f0de8a008c5f429c535dd758afa59965d7be6d8753501370b494089dc462802af545e63809581ee6ef57890a12105c28368169514bf260d0792bf7f46c9866a6d37c3032d8714415f87f5f6903d7fb071e253be2f4a18606ab08b9d569d144f8944655cda17c6ec74d24a11ebd7622a56d551e223a776fa9650dc2a4a00e083444160e27e5" + }, + { + "type": "0001", + "skS": "39efed331527cc4ddff9722ab5cd35aeafe7c27520b0cfa2eedbdc298dc3b12bc8298afcc46558af1e2eeacc5307d865", + "pkS": "038017e005904c6146b37109d6c2a72b95a183aaa9ed951b8d8fb1ed9033f68033284d175e7df89849475cd67a86bfbf4e", + "token_challenge": "0001000e6973737565722e6578616d706c6500000e6f726967696e2e6578616d706c65", + "nonce": "5d0d763f6e9da102fdb9e1a7f95a1b096391f02ac87f65888233e9415df05c56", + "blind": "fdef8385c0ea23299a8b52b59b23ffa9f1a0f25c3a4c93d95792372910091cd47ec89b14321b3e00a8d3eb0949e7bbd6", + "token": "00015d0d763f6e9da102fdb9e1a7f95a1b096391f02ac87f65888233e9415df05c56c994f7d5cdc2fb970b13d4e8eb6e6d8f9dcdaa65851fb091025dfe134bd5a62a116477bc9e1a205cca95d0c92335ca7a3e71063b2ac020bdd231c66097f12333a13b1c96dbe522e6e94e0ecba8c3abad7fac579bddae7233e8f0ad13192b3c895fc7f4229e9156314a71c338ff74baba" + } + ], + "token_request": "40680001f403f509ce89b5e1012f47b34af3a33a120556a5f9771764c33c8bf330076cfd668fc09d0bd7a740f74852d258cbb1a8b49a000133027cd2c1b2552ae7bf9282c4eed9aaf03a7e99969ad4af29e615be378f9d9440062bdf296f39ec999ab9c7a94f62f9df7a", + "token_response": "41280100010229c3174c22f284bf32ea4f5c2e76b4b969be9e5d8e163861e77eb673ce0c7af96c2745064749fd59edbe9b4b4e7e80e522d72d28882d9b60434ab5c7ed142d8da3465291a04dcb1c3ea1a8444dcb09206a4f3ee92ac498753ec042da0fd72602c679bf7a994f9fbca0fae57740fd47772e237569fdcfa587874f0e1a538abc3333f8ee486809347eef1e49a83381317201000103b027ff354e5b1728d6dae0de169816ad92912d96a057e80363b697e253a0a74aad1513efbeff7356e75c6989863191af7be62c4c0251b441088a2221e96f227322233e1b4e3785ddc98bd3f310f69a51e8268478bc080fac60032c63da2332f230e3f04497959469593e2fac77cd6d58dd3e59081d1279f87ea9cd81c87e38d218093590d6ec8f8caaf4581a9fece56b" + }, + { + "issuance": [ + { + "type": "0002", + "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945765149424144414e42676b71686b6947397730424151454641415343424b63776767536a41674541416f49424151444c4775317261705831736334420a4f6b7a38717957355379356b6f6a41303543554b66717444774e38366a424b5a4f76457245526b49314c527876734d6453327961326333616b4745714c756b440a556a35743561496b3172417643655844644e44503442325055707851436e6969396e6b492b6d67725769744444494871386139793137586e6c5079596f784f530a646f6558563835464f314a752b62397336356d586d34516a7551394559614971383371724450567a50335758712b524e4d636379323269686763624c766d42390a6a41355334475666325a6c74785954736f4c364872377a58696a4e39463748627165676f753967654b524d584645352f2b4a3956595a634a734a624c756570480a544f72535a4d4948502b5358514d4166414f454a4547426d6d4430683566672f43473475676a79486e4e51383733414e4b6a55716d3676574574413872514c620a4530742b496c706641674d4241414543676745414c7a4362647a69316a506435384d6b562b434c6679665351322b7266486e7266724665502f566344787275690a3270316153584a596962653645532b4d622f4d4655646c485067414c773178513457657266366336444373686c6c784c57535638477342737663386f364750320a6359366f777042447763626168474b556b5030456b62395330584c4a57634753473561556e484a585237696e7834635a6c666f4c6e7245516536685578734d710a6230644878644844424d644766565777674b6f6a4f6a70532f39386d4555793756422f3661326c7265676c766a632f326e4b434b7459373744376454716c47460a787a414261577538364d435a342f5131334c762b426566627174493973715a5a776a7264556851483856437872793251564d515751696e57684174364d7154340a53425354726f6c5a7a7772716a65384d504a393175614e4d6458474c63484c49323673587a76374b53514b42675144766377735055557641395a325a583958350a6d49784d54424e6445467a56625550754b4b413179576e31554d444e63556a71682b7a652f376b337946786b68305146333162713630654c393047495369414f0a354b4f574d39454b6f2b7841513262614b314d664f5931472b386a7a42585570427339346b353353383879586d4b366e796467763730424a385a6835666b55710a5732306f5362686b686a5264537a48326b52476972672b5553774b426751445a4a4d6e7279324578612f3345713750626f737841504d69596e6b354a415053470a79327a305a375455622b7548514f2f2b78504d376e433075794c494d44396c61544d48776e3673372f4c62476f455031575267706f59482f4231346b2f526e360a667577524e3632496f397463392b41434c745542377674476179332b675277597453433262356564386c4969656774546b6561306830754453527841745673330a6e356b796132513976514b4267464a75467a4f5a742b7467596e576e51554567573850304f494a45484d45345554644f637743784b7248527239334a6a7546320a453377644b6f546969375072774f59496f614a5468706a50634a62626462664b792b6e735170315947763977644a724d6156774a6376497077563676315570660a56744c61646d316c6b6c7670717336474e4d386a6e4d30587833616a6d6d6e66655739794758453570684d727a4c4a6c394630396349324c416f4742414e58760a75675658727032627354316f6b6436755361427367704a6a5065774e526433635a4b397a306153503144544131504e6b7065517748672f2b36665361564f487a0a79417844733968355272627852614e6673542b7241554837783153594456565159564d68555262546f5a6536472f6a716e544333664e6648563178745a666f740a306c6f4d4867776570362b53494d436f6565325a6374755a5633326c63496166397262484f633764416f47416551386b3853494c4e4736444f413331544535500a6d3031414a49597737416c5233756f2f524e61432b78596450553354736b75414c78786944522f57734c455142436a6b46576d6d4a41576e51554474626e594e0a536377523847324a36466e72454374627479733733574156476f6f465a6e636d504c50386c784c79626c534244454c79615a762f624173506c4d4f39624435630a4a2b4e534261612b6f694c6c31776d4361354d43666c633d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", + "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100cb1aed6b6a95f5b1ce013a4cfcab25b94b2e64a23034e4250a7eab43c0df3a8c12993af12b111908d4b471bec31d4b6c9ad9cdda90612a2ee903523e6de5a224d6b02f09e5c374d0cfe01d8f529c500a78a2f67908fa682b5a2b430c81eaf1af72d7b5e794fc98a3139276879757ce453b526ef9bf6ceb99979b8423b90f4461a22af37aab0cf5733f7597abe44d31c732db68a181c6cbbe607d8c0e52e0655fd9996dc584eca0be87afbcd78a337d17b1dba9e828bbd81e291317144e7ff89f55619709b096cbb9ea474cead264c2073fe49740c01f00e109106066983d21e5f83f086e2e823c879cd43cef700d2a352a9babd612d03cad02db134b7e225a5f0203010001", + "token_challenge": "0002000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", + "nonce": "e7615e63a25a89c13ad49ce0249c8d75ec481dc95e005454563ede8c6b0f1f46", + "blind": "30465e67d38960c99589a56a8b965191aa709b91fd2a56c101120b4453e9a561f2bd041d49ec895684018fa6aba34ab3dd2137777f9e9829a0a0d0a678a06e16a3aed47a7e9652ff99fafb5e86a6807f8ddf5b50fcde11b4bf7dac7ee5e4f200776eba2c33d6eb187ccb109999e8c9c67595b5464f1ed2948b19c04689fe9c29c6863208a2e15b70b0e456ab4f8369569bdb14a903bacde57b6ce0bfa21ada35d52c4fea231b40c26254d5130b41f71a21eadffdc60e41ab3c072236cb2d1926cb21eb873bb66365a72d619a58cfdfa963d38cdf4cb54db1fc2b42731ba207ad9a897092e8bfc9be2a1f4551da3452a22926cc98971da1e2d6287e2c8c013006", + "salt": "625baf9d50c502dbd03c949fe5ff0eda7dd6c23ea76111c0f791b471df045001d557ed76eee8eed94909a4723a683fd3", + "token": "0002e7615e63a25a89c13ad49ce0249c8d75ec481dc95e005454563ede8c6b0f1f46820fc64e2630a0d5166c36696b663ff34518338263383ec92b3347ea30bddae4ca572f8982a9ca248a3056186322d93ca147266121ddeb5632c07f1f71cd2708baa04e4e9511d5e1b49ad181913b67498a06d54eed0bb7ad9a8caa4a1c46dfabc6dc456b1be1fa49d8a630925cb124b3dcf38e4a7fef67bc1cb8b25c4d1f78e341fe7c5f03d7e8ef193602a79d9c11cdb9c758e86d6a2ce5d6bbc6ebab3c1ac426202300a752f9adaf8f0ce3ff60fc7ace0d5a2fdcc29f0161495d8953aa7fd6c27c94ca3609b4981cf07f9e2d00674b5e7ee0701925b7845a7702d9193178594a659eccebfcd12a505bd28c58efdee3dc6b971339dfa24b83f0a24e3197d51218175bf5dcdf7ae6d03a8d274734b40af38680a2bdfd375febd2fb436f00f66c709f89996ad4bd8b28f92b8110036f4df03f3cbf7b8673c37db31f925ea69c15" + }, + { + "type": "0002", + "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945765149424144414e42676b71686b6947397730424151454641415343424b63776767536a41674541416f49424151444c4775317261705831736334420a4f6b7a38717957355379356b6f6a41303543554b66717444774e38366a424b5a4f76457245526b49314c527876734d6453327961326333616b4745714c756b440a556a35743561496b3172417643655844644e44503442325055707851436e6969396e6b492b6d67725769744444494871386139793137586e6c5079596f784f530a646f6558563835464f314a752b62397336356d586d34516a7551394559614971383371724450567a50335758712b524e4d636379323269686763624c766d42390a6a41355334475666325a6c74785954736f4c364872377a58696a4e39463748627165676f753967654b524d584645352f2b4a3956595a634a734a624c756570480a544f72535a4d4948502b5358514d4166414f454a4547426d6d4430683566672f43473475676a79486e4e51383733414e4b6a55716d3676574574413872514c620a4530742b496c706641674d4241414543676745414c7a4362647a69316a506435384d6b562b434c6679665351322b7266486e7266724665502f566344787275690a3270316153584a596962653645532b4d622f4d4655646c485067414c773178513457657266366336444373686c6c784c57535638477342737663386f364750320a6359366f777042447763626168474b556b5030456b62395330584c4a57634753473561556e484a585237696e7834635a6c666f4c6e7245516536685578734d710a6230644878644844424d644766565777674b6f6a4f6a70532f39386d4555793756422f3661326c7265676c766a632f326e4b434b7459373744376454716c47460a787a414261577538364d435a342f5131334c762b426566627174493973715a5a776a7264556851483856437872793251564d515751696e57684174364d7154340a53425354726f6c5a7a7772716a65384d504a393175614e4d6458474c63484c49323673587a76374b53514b42675144766377735055557641395a325a583958350a6d49784d54424e6445467a56625550754b4b413179576e31554d444e63556a71682b7a652f376b337946786b68305146333162713630654c393047495369414f0a354b4f574d39454b6f2b7841513262614b314d664f5931472b386a7a42585570427339346b353353383879586d4b366e796467763730424a385a6835666b55710a5732306f5362686b686a5264537a48326b52476972672b5553774b426751445a4a4d6e7279324578612f3345713750626f737841504d69596e6b354a415053470a79327a305a375455622b7548514f2f2b78504d376e433075794c494d44396c61544d48776e3673372f4c62476f455031575267706f59482f4231346b2f526e360a667577524e3632496f397463392b41434c745542377674476179332b675277597453433262356564386c4969656774546b6561306830754453527841745673330a6e356b796132513976514b4267464a75467a4f5a742b7467596e576e51554567573850304f494a45484d45345554644f637743784b7248527239334a6a7546320a453377644b6f546969375072774f59496f614a5468706a50634a62626462664b792b6e735170315947763977644a724d6156774a6376497077563676315570660a56744c61646d316c6b6c7670717336474e4d386a6e4d30587833616a6d6d6e66655739794758453570684d727a4c4a6c394630396349324c416f4742414e58760a75675658727032627354316f6b6436755361427367704a6a5065774e526433635a4b397a306153503144544131504e6b7065517748672f2b36665361564f487a0a79417844733968355272627852614e6673542b7241554837783153594456565159564d68555262546f5a6536472f6a716e544333664e6648563178745a666f740a306c6f4d4867776570362b53494d436f6565325a6374755a5633326c63496166397262484f633764416f47416551386b3853494c4e4736444f413331544535500a6d3031414a49597737416c5233756f2f524e61432b78596450553354736b75414c78786944522f57734c455142436a6b46576d6d4a41576e51554474626e594e0a536377523847324a36466e72454374627479733733574156476f6f465a6e636d504c50386c784c79626c534244454c79615a762f624173506c4d4f39624435630a4a2b4e534261612b6f694c6c31776d4361354d43666c633d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", + "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100cb1aed6b6a95f5b1ce013a4cfcab25b94b2e64a23034e4250a7eab43c0df3a8c12993af12b111908d4b471bec31d4b6c9ad9cdda90612a2ee903523e6de5a224d6b02f09e5c374d0cfe01d8f529c500a78a2f67908fa682b5a2b430c81eaf1af72d7b5e794fc98a3139276879757ce453b526ef9bf6ceb99979b8423b90f4461a22af37aab0cf5733f7597abe44d31c732db68a181c6cbbe607d8c0e52e0655fd9996dc584eca0be87afbcd78a337d17b1dba9e828bbd81e291317144e7ff89f55619709b096cbb9ea474cead264c2073fe49740c01f00e109106066983d21e5f83f086e2e823c879cd43cef700d2a352a9babd612d03cad02db134b7e225a5f0203010001", + "token_challenge": "0002000e6973737565722e6578616d706c6500000e6f726967696e2e6578616d706c65", + "nonce": "d17d88fb4f63d0b3b38d1159bef67ac6d60f649aba512b8e382d497530727577", + "blind": "4e192daf9edea831f3c82a274c5648d758f6930991334d820a2a24e96101023a86de1d18836222c42dcb0eb39a9153ada0b4eea7d3395d55114d8ec972655b47bebb3e66f72f6bfadb5cb976c98907fea985eb13bd5675c9c39144381d0b0038c12f6ff9fd598ab8eaef47a878da4fa10d3bd3e4c7e86a60ce15e07f5de0501c65d653d20f6dd83763f152ec7beecba6ca51914ddf00f79f5143d6854bdefd3032ced824066b8586f6e5d3ecafcb268c99c103cd4fab99eeb3afbe550690172ebe09edb533fec7095c357180439c2c32f8af85ba77b85cba091f3eae542d01a3de3cdabf57439fe6f41fb2d3c15c23a5bc23b3be8fe0140944a76760a7b38301", + "salt": "7e0dec0ad99e373d2fc990821a62962e180bdb72e110bc988f9d633fbca8aa5838fe9582013ca63ca8ba9ef41553d086", + "token": "0002d17d88fb4f63d0b3b38d1159bef67ac6d60f649aba512b8e382d49753072757711e15c91a7c2ad02abd66645802373db1d823bea80f08d452541fb2b62b5898bca572f8982a9ca248a3056186322d93ca147266121ddeb5632c07f1f71cd2708bb7df188c0ed5642312cb5152735825a75d982d17a705843b9dc59847cae233b3e69a8500978d1fb360794c4223fcf7483e844a1db3e316656456e2d06262e0b051f22e91b4e912cee082b87b40e01a5b70734de93f739e6c0abf05a935a8de4bddecb977bd2dbb27f9680ec61068f8dc09bcce8f82885a1820275e0a049e566a73b8b8f6050d34866281fb58761c7560f0ad32899ad8545d8e633642364155aa6fb397547fb9f1bbfb0bcdfa3401750edc31e6f42cb64a931b87032f51cf22d201d8c477135644044b9003814117e9313cbd45eb76fcd89f5af4200fdacde27fef511279616748b9ddd7fa23e6937047d0ae33ce0572430b9fb793788c1ebbe" + } + ], + "token_request": "4206000208bb3699eb03b73b43d87960140ba6e77a9a18ab6a9492176c420096872a88b15b4bbda37f43bb22ff0e6c730fcda255c4158ce10c8bb66995a67b2fe1992059cf6d686e1e696e8a6375bb6e77d73570cf30fadf94f45f5131550bcf556722c9b62912766b17a828ea69fa3e048d5d46ac70bac8cdd8d86330c719e734874c00fcf23dd25a1294c9610689e59cbf0805b5d9adef2ffa5a9e31902bc6b8dafb39b0aad2c520cbc9c1c55696f9e96a5db2b32dbbd2b4f75c7481499a31ae2df1cc879475bd7ce402ee5dbaf624d87bb7c88f5b243c4094004bb145f71f6d98da7899ff566398468b99e41ce25f1a88ed49fb4ef26d817d6a1520ec0aaea6bf0d93360002089cfb2feafef5b7bf534a945daa929e87756bc8a9972202995b10eebfd476c81fdede8a017513ee84259fcd475330f2379d5d7b578bf181f9df9246fdf4b594c1d989650cde9e040c3aac7c476c2e6c87d20a3381ae0455e21e03b6957670219d7af3a295c932ad7735dbfd43b7c464ca82d293d1910b25c2d6f293af2f46b30396de4f009e0e2ba05f431802b2d4b5fbd8e17a01b587571e06382b5d26895b53327ce2ab9055e0825cf297909f6d3993a516dc9fc69824a7361deaadc3c7a133c129fd93f11906b4b2f88170c80fc5e6596c3ee550da51c1b69835f4f127a71f5d44a94d954fa056c6bc4e5ea1f49f4175eebae188a85a2e680291fd4f441377", + "token_response": "420601000206b0e6922469eb5587c12bacfda4ff18a732049b35fae442431344d136ee8be0c1080b2ad2e0ae379ac39abe3aacdb88b52614ed9c0c1aa3ae10edd9cdd1f776e67c3aeebcc0656cd4c4b109861904b48e9b902f584565125dd97f7ed013b12f5412fbc3378234a904f1621a5b67790f6f677bd6d4682ab5285a342ed4d4a508360ed9b73907451e6690e88313d4f132034a1f76916aeceb43051b5f294303bb03de91c9b12022b1493f3b8019219134d214ab09906dd395e282f255940a411eda4cf0b8ab2121f802b62ce891d84fe3b2c5b32e00fef88a8756ad015ded4a3dcaf45657597f0677e792c250bdfe809edbb567d526e8cd9e9c94ad67c0486139010002baa9791c04572ce81c4b02909cafd1dc248a0ea53b6fa3237b98ddc3fb970bae23733d980846fd7f53a7b90655939678fac43536041bfb99dd4891add3bbd7cd05d363e5142b9917ec0c195724c62d7ae6b7e65738870ad9ccaea0e7415cb268ba21acc141939e4853f9f5e1fab60edad58eee3eabfca317a581534f3666aed5420e984dd74c655f32611315e0af4bb1d37165bd20a55a0c19b1e930516d83d1c2841e382aff16de515cce34cdb1191809e2cc8678b087539e085942be0e50f6e17d81af48c9bc94ffe4f8a6311a8537c1ed911ad88fb861fac00cda3fedfab48fbb073aa05e544acc976ff6368364f5b0c6245e0a7167fb1af485fc90f73729" + }, + { + "issuance": [ + { + "type": "0001", + "skS": "39b0d04d3732459288fc5edb89bb02c2aa42e06709f201d6c518871d518114910bee3c919bed1bbffe3fc1b87d53240a", + "pkS": "02d45bf522425cdd2227d3f27d245d9d563008829252172d34e48469290c21da1a46d42ca38f7beabdf05c074aee1455bf", + "token_challenge": "0001000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", + "nonce": "0d399a51a32286661e8ecd6b601cccace4f45e8f41b05d6fae47826d46142139", + "blind": "43dfc280832318de5d86c6626303628b13b62670d8b134ffd008e1226df79dccbeaaf3ac555a9f544db50497757a0a2a", + "token": "00010d399a51a32286661e8ecd6b601cccace4f45e8f41b05d6fae47826d46142139501370b494089dc462802af545e63809581ee6ef57890a12105c28368169514bf260d0792bf7f46c9866a6d37c3032d8714415f87f5f6903d7fb071e253be2f429a429ebcef6ada26a201fdbc171f7c2739590085581237586e468660f6fdeec5ecd5e39cb3c908d1312a8baf8484450" + }, + { + "type": "0002", + "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945765149424144414e42676b71686b6947397730424151454641415343424b63776767536a41674541416f49424151444c4775317261705831736334420a4f6b7a38717957355379356b6f6a41303543554b66717444774e38366a424b5a4f76457245526b49314c527876734d6453327961326333616b4745714c756b440a556a35743561496b3172417643655844644e44503442325055707851436e6969396e6b492b6d67725769744444494871386139793137586e6c5079596f784f530a646f6558563835464f314a752b62397336356d586d34516a7551394559614971383371724450567a50335758712b524e4d636379323269686763624c766d42390a6a41355334475666325a6c74785954736f4c364872377a58696a4e39463748627165676f753967654b524d584645352f2b4a3956595a634a734a624c756570480a544f72535a4d4948502b5358514d4166414f454a4547426d6d4430683566672f43473475676a79486e4e51383733414e4b6a55716d3676574574413872514c620a4530742b496c706641674d4241414543676745414c7a4362647a69316a506435384d6b562b434c6679665351322b7266486e7266724665502f566344787275690a3270316153584a596962653645532b4d622f4d4655646c485067414c773178513457657266366336444373686c6c784c57535638477342737663386f364750320a6359366f777042447763626168474b556b5030456b62395330584c4a57634753473561556e484a585237696e7834635a6c666f4c6e7245516536685578734d710a6230644878644844424d644766565777674b6f6a4f6a70532f39386d4555793756422f3661326c7265676c766a632f326e4b434b7459373744376454716c47460a787a414261577538364d435a342f5131334c762b426566627174493973715a5a776a7264556851483856437872793251564d515751696e57684174364d7154340a53425354726f6c5a7a7772716a65384d504a393175614e4d6458474c63484c49323673587a76374b53514b42675144766377735055557641395a325a583958350a6d49784d54424e6445467a56625550754b4b413179576e31554d444e63556a71682b7a652f376b337946786b68305146333162713630654c393047495369414f0a354b4f574d39454b6f2b7841513262614b314d664f5931472b386a7a42585570427339346b353353383879586d4b366e796467763730424a385a6835666b55710a5732306f5362686b686a5264537a48326b52476972672b5553774b426751445a4a4d6e7279324578612f3345713750626f737841504d69596e6b354a415053470a79327a305a375455622b7548514f2f2b78504d376e433075794c494d44396c61544d48776e3673372f4c62476f455031575267706f59482f4231346b2f526e360a667577524e3632496f397463392b41434c745542377674476179332b675277597453433262356564386c4969656774546b6561306830754453527841745673330a6e356b796132513976514b4267464a75467a4f5a742b7467596e576e51554567573850304f494a45484d45345554644f637743784b7248527239334a6a7546320a453377644b6f546969375072774f59496f614a5468706a50634a62626462664b792b6e735170315947763977644a724d6156774a6376497077563676315570660a56744c61646d316c6b6c7670717336474e4d386a6e4d30587833616a6d6d6e66655739794758453570684d727a4c4a6c394630396349324c416f4742414e58760a75675658727032627354316f6b6436755361427367704a6a5065774e526433635a4b397a306153503144544131504e6b7065517748672f2b36665361564f487a0a79417844733968355272627852614e6673542b7241554837783153594456565159564d68555262546f5a6536472f6a716e544333664e6648563178745a666f740a306c6f4d4867776570362b53494d436f6565325a6374755a5633326c63496166397262484f633764416f47416551386b3853494c4e4736444f413331544535500a6d3031414a49597737416c5233756f2f524e61432b78596450553354736b75414c78786944522f57734c455142436a6b46576d6d4a41576e51554474626e594e0a536377523847324a36466e72454374627479733733574156476f6f465a6e636d504c50386c784c79626c534244454c79615a762f624173506c4d4f39624435630a4a2b4e534261612b6f694c6c31776d4361354d43666c633d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", + "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100cb1aed6b6a95f5b1ce013a4cfcab25b94b2e64a23034e4250a7eab43c0df3a8c12993af12b111908d4b471bec31d4b6c9ad9cdda90612a2ee903523e6de5a224d6b02f09e5c374d0cfe01d8f529c500a78a2f67908fa682b5a2b430c81eaf1af72d7b5e794fc98a3139276879757ce453b526ef9bf6ceb99979b8423b90f4461a22af37aab0cf5733f7597abe44d31c732db68a181c6cbbe607d8c0e52e0655fd9996dc584eca0be87afbcd78a337d17b1dba9e828bbd81e291317144e7ff89f55619709b096cbb9ea474cead264c2073fe49740c01f00e109106066983d21e5f83f086e2e823c879cd43cef700d2a352a9babd612d03cad02db134b7e225a5f0203010001", + "token_challenge": "0002000e6973737565722e6578616d706c65205de58a52fcdaef25ca3f65448d04e040fb1924e8264acfccfc6c5ad451d582b3000e6f726967696e2e6578616d706c65", + "nonce": "1a89803678132b4328084be9547b3e1ab0b88ebc7b9e84acca47947dbc6b14a7", + "blind": "1c761ba8872e29390be3a2c1328b4f9ccc0012be0c2b09bf558ac0b334f84d0646ab2f89cca0c65f859a78b32b2407a90eec56f54c55916bdf5ad0dbaf5064e5899e18b282e10940f73917771058a0b1c992f679b3ed4f9bb8a2d6a6561e85a86e7a78a6d1345bdbf8a02d58ab92bc458852e8c961d90a14cae721728fd221737f711ae28b49c4b4eb6b76f8b58541630bf78f6fe351c98da801d246f8b54787046610f136489cc8ca28dad8377983c3fc2e28e7ae09365b7516f1cba21b7a0d9ff87608c5cd91fbec89f978053512083bfb0adf22c74f0a96256e26c6d9f9436469972580e60a1104c9672b66891092417870d82eae4fab3c76caca50eaf5ac", + "salt": "f70daa7809b3667c616b2666ce30ad74b646afbade9fd06424d433f5a8b395bf669fb609b845055b4e4a133712beb251", + "token": "00021a89803678132b4328084be9547b3e1ab0b88ebc7b9e84acca47947dbc6b14a7820fc64e2630a0d5166c36696b663ff34518338263383ec92b3347ea30bddae4ca572f8982a9ca248a3056186322d93ca147266121ddeb5632c07f1f71cd2708ad0995b4e273a9c7d825c7b2d7293a42f712216925639a276b1a5c358120f6afb5a28c6319647b47ffef79dc39ba0eeb42f4cf22bcbbad7d774a5df9904f80c0826f12b8542291c53c20f6c6f05bed4146c2b09a2b5e424d4622ba40531b84d026ab202d01940c154ab47c6a9b377f284462bea8a6285383efac6ea8b302e4bcb8855d133396fa2a5532a1dc3f280a101770d8f2e5d8142d7c573c9f9e29f160624b7c95811687f678a7994295695c14b1899c06f60e6a0fa04cfc6b8184e59f1f40babbf0dbbc3cb91047a659723c800b574cadc0491ea40f15e45a0337a3e7cd109de3b4e3517d4637059a9ab3c4a218e052d15479116d3c437e4962ce07c3" + } + ], + "token_request": "41370001f4021addfdbb3234410241c073cb66734cac677334930d7741cb973731f19b0e500e80dc6619d11c754b9f8909da8d2c3ca600020849309ffde4f288fa5fd2e32c68aad9630adabbd51f273814d7583a27136527e8d77fa89c8798e945b833ca9d7ef20233e55de142519891fea24222122feef56c7e3f7319f012e77e247b2ba1c9ae501196a82f8e3bb3039513c79f77bb0014e1666ca09113565bb88dd65729e8377dadba084c3adae744b7f0b6e7a66f7715c4677bfe364cf08f808eef5c607fe716a8509b00b688bb874e90badd7781c9f3e32d9178070103874ddbb94f7f8d44893ea97c869334f9ec54ad421fdedcbe264d4732da0b54ad25901895248df6cc75a70e9fc06fa1f7c9bfecabd45eec42e22239eb76f1765a1a5de3bcf12b5e4d8737ff8b54f911778038fd74fb8b3e4a3e3d", + "token_response": "419701000103f46a70859a87727ade7ee8534c42b676c28e22fa906a669f03172331cc85e1157097214f482a0744fa9d5083a85db2b208e4c03bd4c9540fd5f183ec590aaeefafc849ff51c169149b653af450b53b830f587c85bdf500074467db6bcd155b6657ad915e4e94d28642173be93a8c6c99a3ee2ee9ee46686f01d5f9b8208593240cf7db7a9cde0c79ce818720313344470100029e215a04d99389aa9ed15f2df507d9fcb88819b989705fcb779d6af8bff5d5c563190ba2267c58c49a923cd4d80277eb72d287bb224771bf2dd245018195a8eec6a6ee454e7f7600fa2f974a2feb8638620702332225288776a8b183bb30f251194df955018bdb31cf992b8e37e8dcfee22a2dab536ed0a3c918cb74b0568b100df7ca97bb15b6641819d0db806ab9bb67b295a3ecaf1cd07576598166051ddfed98d6d430b176081e41432a4607213b1291ef2becaaa337961139bee6a57e0aa8b42d192bf468f4d187e72f7cedc6393720c34030fa809c62dd9b4ef79aaf7af950a284c9df77cfcd17f6f5eb022963ffa1d57d4394d24f3204db260dad97ce" + } +] diff --git a/test/test_data/generic_batched_tokens_v6_rs.json b/test/test_data/generic_batched_tokens_v6_rs.json new file mode 100644 index 0000000..0a5188b --- /dev/null +++ b/test/test_data/generic_batched_tokens_v6_rs.json @@ -0,0 +1,54 @@ +[ + { + "issuance": [ + { + "token_type": "0001", + "skS": "9e19dad32d440b14a7674143e272c830dfb4d5de61eae63c76571570956a88bbe66577db033d3cf043d343208436d6da", + "pkS": "028ff446ea2e2fbd761a6ef7b1137bd59a760d6c65f3b82784cefc5843f9b9ed65cdcaaa90b293f4b0cb818a873ca17d15", + "token_challenge": "0001000b497373756572204e616d6520941de0bab199d9a3cd01d5f58529d5cc9b1ceac6614d92ff75a36241c96439b20005612c622c63", + "nonce": "b771dc02997c71738e631f7f52e1f786e9c80eb51e9ed54a1302fbf98f5b32c3", + "blind": "ccb1a833c28efff813ec2de76d4bd325874da893e8116d583ad3c648341398560a6a2c1b64c52b4ea9ea97b4e1f24e54", + "salt": null, + "token": "0001b771dc02997c71738e631f7f52e1f786e9c80eb51e9ed54a1302fbf98f5b32c3c605cc17c7449af46256832938618c13b44148d3ba19c135c0e992dc15463a626b2e907957aaa5def3d775fa880539bed74e2c2f8fb63f80b64624844b9053737a28749068a0a33347af11be755343eb7e23bd1fb6b18539ae4ce776ead2c340e8ffc496583950c2672683568f78423b" + }, + { + "token_type": "0002", + "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945764149424144414e42676b71686b6947397730424151454641415343424b59776767536941674541416f4942415144312f78627745396c476a354a4c0a6736326e583844795035634864515739396531465a6d30673879724d51357742474b4746555a4f554246464f706c45774d4e726763764f6a6e55733351346e4c0a775a6932624530676235564c7a6754756b587a2f3243764742534661557374466176755855475777702f516e325a4f51316d58634562376257477463494539790a512f356e5962493934654e596b5071614635594a3871446a333447702f6865706a4a73586a45377154323631626159722f5839496e306b6441366c397542384c0a5276745a614e5677546d4445686e61625a7a7154416c517038763379424558736f63456d496d35336443634c6347494d6250387046747559624a6b75546e54480a366c3863446c2f586e764661535a5148464c516a6f793350764c426b3135706f5466526266306a2b6c4370537031353964673469522b756a625376344b6a48520a33733979394f563141674d42414145436767454161564134364c554771742b694f50503572784d65546c654d392b4e5166762b2f415a77564569736f596d52370a63446930525a676a2f78564f486361304d565a70446667496544354a796a482b317831646e4a4f472f57446e344a6b6c6f57446c7937346e46314a7738664e4b0a464d44315474566267364b5473302f426a68744c5a6b69756c63636e787a774a35786857334c6d466a6c716263766f32587976447a79527858727a38444f4c6c0a4b7a6c6a4d7169624d6f7953574d2b2f497a4d6f734c517a336c30674367424c49334e587559324c736e6f4b38426a314a484a3569674c3278622f456a4a796b0a59742f4b676b4b5167574e4a596252564646467035494139656c63515131667a66776a2f417276734a3858414c464943326c657343705a594d47776276455a410a54706774422f61576361534e484443732b4b724d6c716b6a6c35622b62584730344531515445374641514b42675144395773783233416e6e5531364f6f5a646a0a4d684137495361356b6434684d4d704c38454d4c4a74556947594c74747163695549534d48497a4f6563427a734e6f4a39447144474233766c6a4d6e514e73450a7266536c75426e3472747161594538696b3459376b55474e7771552b4e4f726a676e66586a676945624e712b4f363146474f304942376c594c41766e303736740a692f796e586254422b545a342b696e3778495952754e314151514b42675144346b4a3976726b5273756153474e5879497256706e484533466b444641346a4d410a384773354f7248782f48556a6d5547424863354f6e6568717975474b68415251556d64534c72574e3863785236504f684d576a76775730694c4d514572552f740a4c6b4f6e37636f2f6f39584c3165784f556273666c7a7666484c625375574a484c593943656a6e32484d523549417531626555684a3436384e4137594778516c0a45416c64447743594e514b426744785a63356a67677939714b587a364f76427a445843345464776f5265784d44665157304447493133346536355171545265630a62475a667170374957374a7a4c777a74387a346b385953506c3748432f696a594d7732436c4255727559444b62693944537464486d34446b47363538746e4c700a4d686a546957335a37435569572f79346d6b57756156543663502b513762757a4f385332536f646d454c61796947756a665867644f2f3742416f4741546c54640a4f636530586f4d655777454f447442366c6458776d4672356570594f4e72534e5263712b657944784656666473622f66335279634f744e57776c30614d756e560a443677536f506e625274446676694f68437a56736e414635674850527056415947427179797431707163507670547253656f4568614131586641375a3773356e0a7743356568375848494e6939643935362f376a456e594457554c6f763367497777546653477955436759422b6b77575a474e59707577584e76486a42646a4a6e0a62455a2f665952712f735278772b52556347546b665438566e355850614c457032726149642b52674c6c65777345704f77447753624a7868626a315051324f490a62744f716e476d31362b41434d556f7457343477524c723954694844793059444a7154734577326a4d34596c726b63386e6e77335748596a4e2b74474d7a646d0a687244433772415047576a46383439645476776546773d3d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", + "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100f5ff16f013d9468f924b83ada75fc0f23f97077505bdf5ed45666d20f32acc439c0118a18551939404514ea6513030dae072f3a39d4b374389cbc198b66c4d206f954bce04ee917cffd82bc605215a52cb456afb975065b0a7f427d99390d665dc11bedb586b5c204f7243fe6761b23de1e35890fa9a179609f2a0e3df81a9fe17a98c9b178c4eea4f6eb56da62bfd7f489f491d03a97db81f0b46fb5968d5704e60c486769b673a93025429f2fdf20445eca1c126226e7774270b70620c6cff2916db986c992e4e74c7ea5f1c0e5fd79ef15a49940714b423a32dcfbcb064d79a684df45b7f48fe942a52a75e7d760e2247eba36d2bf82a31d1decf72f4e5750203010001", + "token_challenge": "0002000b497373756572204e616d652011510a693c9a5af2115e1d93646ec55d3696ce6627d8f595be05f0db23a7d5e40005612c622c63", + "nonce": "af2dc5bf9e3a6d3b4a625bac32e19061774901c937d97f9a48df381cd372c3a7", + "blind": "de888a141ab0adf0ff07e4cc929b6ac1a599e65c3ee6f4e2c602b0fcb47a08712c7f2ef6f3fc0fffd6572c66498cf044aaceac28c56dfba5faf36b5c74bb40aa76aba559f44203816512bcedee9d168e2bcca80c889fd74af02fe24c22eee7014443bbf4d304e47c9686db966aebbb5543a07b37036ed03d844202de9c3ee59c8a1ebea14c1e572f2aaed214f831e1faa269854ccff13e62f0f144dffc9b2e982b7632d8977f815f294aed7a5f544b038f7fbbe33fec777586174ceda91c7579da859563da8272fbd48dcb665c4342fb17249bf87846534cd60e224cec187f02e14b91bb68bce3a4b7c135286f104916dd2cf9dcea44797fd7057073a0cc69bd", + "salt": "6b94c56af3bb58084c07e08b3e7a848132fe707d09eafe25003f7a26c8535b04a7526f12ca1eb264d4b6e4015309196d", + "token": "0002af2dc5bf9e3a6d3b4a625bac32e19061774901c937d97f9a48df381cd372c3a726667f6916c5aea78f184c27002c95dd4ed283189a68224ad7f322ef706a3b58c19b7457b57865de3c54bd8b1860fed5ab4c868bbb324145f17f74e77c77be9538216d8140ca0c87bf4cd17077f1a82e6aedd2255051191f5006f10b06ec8db240ebfc98fd80a9c1bea8f3c00d38902c2cde357c40f098f0705605002afb9e80eea058602e5fc86b272b9bdac0d68c8034751dee5ef2c7e4ed5424e66b52ad16ba78b1153410ce94207b91646079b25df936c577d747aec615797bd9e96ba8dea30c7c3dbe4aa0f1b687fb865c36f197cb19df9f7c2457874185b869cd7428af0227baa64fe98e09ceb4a4f76bba48f67064161bd13c5390658eb0a1a135de3b27c408402aaf280d54a438d51756ec2585b5da29fcb1c8a005a747414874276c92996ec414a8ac4eff1c57cfea3b9010781d9aec15a32f1307f557581c6bf507" + } + ], + "token_request": "4137000173039e6793ea9ad36c05b19247a450f78c9a6598f069579102c98723c534779461e54b5220d83d2c4f975a40d0a77de8498c000295a16b1f1b469884a38ef1c7e691ad0355ee59bb4ad462934dc15dac6294a57030fe83677e31c806c07ed9ca3450a26de0607c4596509a5c6128ff1e788f9b0fae40a130a0e022e5026fc34c44d6223525dfe181a603bed2ee58a91718e4550e65396d721768605adb7b82765ffd1769f1a3d2d5d62160025bc7c16803d0af81f969359160e11cc1862dcc2ad643a055daf7c94f9a5a351dce3e2f1da19b1d3270fa6b72d3f568952978404454a9022fa1d078478073a7615ffa6ebeda95621c14075986715e0b25ecee559b0e78e0074b297632f536faca4fba86e6f7d6062520dfa47283996ff2a297be0eea01cf4c37b575f64d9a65a5140f40d37a8223bc4c", + "token_response": "419701000102960715043dcddc055f5805a41e2fc119ee58cd8d0fd057fb9dd9d6b6adc97f5d3b6c46fe36cf6fdcbc73c6aa049a04bdc6d824fc505b2683b9d1b023324fb3a87282fbb7d8ac5f95611426bb1e9d37909b6304e19743c4c5276aa6c8182bc9f5b7ab71f31aa75bd0aa587f16ca093ab1ba1f7a170e1d16df59a598bb64e6a97fd8cca72a87ed8b2eaea501c7a1ef5ac001000297cfa38a3fab7aff07a6f1ad9c022692309c76aa657149afdac4cc4dce735b415ea30c9ba4b04f3320542e2c4f5af190af826ae264b6cf3abdd0a559cf8868ed5490ff9d21e04a8ae12eaa95adf28293e1b27425e02e2539caebf5849b281b2475084bdaa2bf368d7cb0e6126092540aa5511db0f507249be6af93e4c2745db6d6689eac80e499e2c54e392e17be76a4c3441e66bb5ba608a5b32f102ad434c691e82828946d1dd3587f68acde191f4d7933f3f5649ef5255e4f8b6a1fddc85974603e5c5ff87a9f6209f1aeb7b01919e751da5de3341ba8044f5419fb2fb6125b08a27ac0185a976d82ecb5fd6cc0508f96ff8290939e869641907cc8b60186" + }, + { + "issuance": [ + { + "token_type": "0002", + "skS": "2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945766749424144414e42676b71686b6947397730424151454641415343424b67776767536b41674541416f4942415143794231723031627043727969360a4238596c68415a544c51306c762f79416d4d4b346d6974445845744f654a7a6d4244556630324c696d775573477472637a6270367541466551796e49504134300a3642774859482b3254674f375745426b694b563776456e71673471727a7356785a7572337255496850475a717a654b47797035747651617741624b65436654590a5546485850346758696f587a556e39634a71694e707756343245475133584738736f716d4b777a5273665a7256474f7a4631734a55425964332f71365a327a660a6f5a64514f34325343544d587862346558344e536771535935593747494357767457364e6c71412b7132596b784a2b3855534f743941703477474a73355030360a717677564a4a7378574378556e6f6a66547845643948795948554a4d614e416c58344b6a79626b61513250496865765a4a473035694d4549627457694875596e0a3534577a376f4d4441674d424141454367674542414c42356c424e686a697175515676766574385465635758776847717435327555452f3447327a426e3744670a355038714b704d71307a6f3457793832533842586530524e424b597851386a47703371516e384138537a306e4a704865304b34587570726d7367727a624649560a50536e46304b50474c75694e584355426845304471337179783139507634546a37373943463236632f73582f5066744f7977744a4577716742302b635a356f320a454e48395a5176634d4e653869322b376a45775262463654306e6e4f752b735143343547495661634b594c41705a4c74305253343336486646314155505249660a2b4c794a323858555347494953496b716e753673797866444551534534556a7a355371674135646d58654c6f5076624369454a3270742b466d504b5649626c370a32776754592b496d37784b314551396432735a4666544f6a7437646e596954736f47626c376151657a3545436759454136484a434966306b2b43616b454c74330a4a724364334a4164787a674d2b7637764569624c4441542f5562792b674f6f454b3835613244624a4f6f474b66673276342f525837694c4e414c453635774d540a4774675077704e685431654451444c56486e7a715a6245495a703361745239386e596f4876634f7875716b36473379516d427754557662304e306936482f2f410a7661354363744745384e536c7858313869494c5676754f773569734367594541784246384b4e566e316746634172356c71306a537276686477385868696e45500a624134754e6a692b6654354673624961594745613079785877685a3167354136687764726932326f2b59544b696d64697a7a7647336850455a4232534464572b0a384272325476393076635133417a46634165435246347979795663367a674d714779723534695262522f6a65322b36793353775a625a7a5a76674956476a4c420a4674696863377a6c416f6b4367594179344138706355614f4b61627649706a4a6c773532482f546b6a5a674a74354b4c336f48436437574b4a6b3172326378660a36694a6f4146573677472b586431647742534c5a74445136577041527a394a3270614f4e617352356f5358512f3038324252456f674c3764397437506c62796f0a6e6e566a53316d7a435362327253545970677830744368766b544e726e59614a2f5948397232337861426d41534237686f674532626f396855514b42674668700a53674e6674364c596d685469706858476b4c6f315a4a4b532b46446c436e382f4a626474667667617a484b45545543496951415154734a47506c6446416839420a5355316c3958774f56515a7a2b43706157694a70353354396f49353867387a6857342f6a775643513266326d6c456145624f69686d54305243494d3943672b570a495866487a5346334a34636b36364b76384164745977493744696a7947662b6a54367051307a4f42416f4742414f474a70612b783237382f68527a5948414e6c0a5542426e4c755679453743797433396d632f6a36564a7766765a2f6173314e5133664a615551546330334b6347467363354c6338567a73567a336e69436a324d0a6431574356354c6a6c377763302f6743423863794774316555774f713258556d4c6d73365a53434f694b6c674a662f364178635a65764f316543344c46726e4b0a397a597955646e476a716d59436d4d3334756643455670370a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a", + "pkS": "30820152303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a2030201300382010f003082010a0282010100b2075af4d5ba42af28ba07c6258406532d0d25bffc8098c2b89a2b435c4b4e789ce604351fd362e29b052c1adadccdba7ab8015e4329c83c0e34e81c07607fb64e03bb58406488a57bbc49ea838aabcec57166eaf7ad42213c666acde286ca9e6dbd06b001b29e09f4d85051d73f88178a85f3527f5c26a88da70578d84190dd71bcb28aa62b0cd1b1f66b5463b3175b0950161ddffaba676cdfa197503b8d92093317c5be1e5f835282a498e58ec62025afb56e8d96a03eab6624c49fbc5123adf40a78c0626ce4fd3aaafc15249b31582c549e88df4f111df47c981d424c68d0255f82a3c9b91a4363c885ebd9246d3988c1086ed5a21ee627e785b3ee83030203010001", + "token_challenge": "0002000b497373756572204e616d65000005612c622c63", + "nonce": "d0e02f3aab17957e678918b88bd107d001146822edecfa9286827f8cd2e887d0", + "blind": "8fbb53b0b61268491d30a0b56b8184746e211031462a112a4259cc29c948bbf9ea2bc5c1b395185e2f9f422235d55f37f4334f080d947a66e47e9e842b4e663cbf7b5d2e648c8e987db8b3ffba9ef991b7e4b25d1c2e3b1726226244690237d4c1599d50efac6571f7173a67f4c93d07ca5b91ceb31884ede2475f3fcd52eb72cb38ddf18e37563b8d4b1f1397f05df3e6d65bdc7f909f430208898463774230ab47124a987c776e8224ae9b835889e88ab306f1ef397e0538ab93f681e563a83432b120f4dcd336bfea0978fd6d1aa06dfe635a0a1c1729ced586054d304af479c408e564d50473d86d0c84a1c55ac1eefda6347898722e5b60e02d56a495dd", + "salt": "c8e1c6d9d2911d432872eed71b06bb197d29fc22d675bd348193bc1440a6b3d798943fa0b77b12f2efad68c08cffdc64", + "token": "0002d0e02f3aab17957e678918b88bd107d001146822edecfa9286827f8cd2e887d0201c8af95ce37c05aaa2acadc50fd6d8a825e992c5bebf2d617f0359cbb669d85847ee9ca05f3abc8de756db4181bb525ab806888d71f3313c37d63d50b05e2aa479db91b2e7175b49cc8c580bdf48541c252ee23754b999ccd309e3d51740be0da7f346689617a8421d47d5803b1b9e38dadbf6dd377f8553d86d5362124d154457f4318ecf67346cd553c684b3c4e56b20083e195c0f944c7fbd941dba0e0946d03d9750ce0be2470a9f3abc68185c93bc2e6dc2bcf84d61a50f96e9b229ef7308aac70b86e61c5bbfcff34eb2c23cfaab41c8775c38d6f095d56d4e43f3af8c8919dd6d11964038aac6245c7c7914a3e6c171cf262d67cf021f6c37621a6ca4f300d9141141ce8bc484dfbdc8d57572554b4424021014f7a07f5eeb9ef8c9827abd018f257cf1ac749e5d35dfcadab80abb9e2aaeaa76d4f1c2dfdd5ff7f5" + }, + { + "token_type": "0001", + "skS": "79d090708ee7b744f1a764a345cf5ed372b0d12dbb02b8ede06dd649712e1091af235466040b350d5fd547ab3b23aad7", + "pkS": "02e26e2214b4307c84c9bcce7cf89d90a65ac201d5c6972f59e66afd3e4a543addfadd364bf8d5a503f66e3bfbc358138b", + "token_challenge": "0001000b497373756572204e616d6520f367e2f0d1744a7ebb63ec0e7d80be9d32314ed9c4d163894debca99cd02fcc30005612c622c63", + "nonce": "4e39a695d77cb30da3dd7853fab3d8ad903aed8507559a158df4b05510dd6db7", + "blind": "1b48f7d21eae4826dc45097a7265186cc3d5c809889fed2ae498dba33c34a630106f9551ae7ccd0471a1d89ed7c7c243", + "salt": null, + "token": "00014e39a695d77cb30da3dd7853fab3d8ad903aed8507559a158df4b05510dd6db7a4daeb7e44acdc36c1556bb646f452343e6f33bf6c61340efe89e94d0026f245cc5ac4950d730cea0a8fef3f63d769d002fd4655e786156b2ea5a99e26aa0694a1b0b9bbff925e2fc7cc82fdbff60bddc4b4e0b0776d2a0f4085c7c914eb310891b1bda47deb869861c4f23de498a6ef" + } + ], + "token_request": "413700022a1b4a45b6c832014f518cbf671f5069a9bffa7c98ed82d9df888a470cb60ef6f8951433a9d515304513313996bb5693f23d9be93e56ac59df72d7644604e316c6e779d178e91de907935b762f08a2516fcd2b32c5ec305bd96a44e420660d9fa6d1ed89050fcc538ca3a4afba2e1cb49c611b74918038c2231a4a0e85f7173260f31cd1ed6a0f3a3ec5c40d58833fb09e55c6191b7c0a3ed061dcc7d78ce972f7184bb8181010a650b36bba472938c8190b9cc2bc3df8436a425723d6230aa91d397ffd680e6ab12ea7586ca168c43790ece3d9eaac1a03a98132b70008eb6a9afcdb41a15a21fc59f5efff31e17b26c6c884a3f21f26ec8e46813753439fbb0a000194034f03b6b499800ef6c4ff5ae4e3ba6c71c8757e65c1f2533e84fbf1c04dc102100ee8717427f6833347f467311ea53acb", + "token_response": "4197010002198be0563250be6ba529e2b1acc30a3c4564019c227856609344adbd574be40d0b5ee9f0ba071711e6f10075ed83a3c530342ebcc7fd54a4421b93fd98e9cd61c27128bbceff0d1eeffd2e59523c7f101864ca97e2f889189263feb351499c0319a5a612d74a2650772c58e109ff7db789a9f10ef1ca409fa4541658b6e70128cc9ed23d0390b5ea529aeb4f017f099b6f0768a10a0d021abe578b85a289d22928ab51b4c07da71016a6a2e49c800a4dc0bc767ec2b02a1eba7baa94efcd582215a07201f5b1b9c5cade04bbeed6e82abf8235003bfb16f8d346112c3f865a4d6398571a5e6da96d6d810a6016433c258bb261c6da3824142f1b283a62038db901000102cd0c4e0dda07218612009f7402d1d4230449ef45e01a9d5a11424d49e3828d47331ad9a24ea960b3653e8a00f0b4ffaadc12d787feba11edfbb1dc171fe391f8a3c1980125f5c909fb3e1bdcc34b65d3b68261c0cd5e0fd521035173e0c6043701697c03cd73fab74694f53aaed84791a58ec78add1c7b754b4a5d25a7dfab21b27942dcfc732a4457dbdcede8a89886" + } +] diff --git a/test/vitest.setup-file.ts b/test/vitest.setup-file.ts index 65d2b4d..6f26aff 100644 --- a/test/vitest.setup-file.ts +++ b/test/vitest.setup-file.ts @@ -50,17 +50,19 @@ async function mockImportKey( keyData: JsonWebKey | BufferSource, algorithm: AlgorithmIdentifier, extractable: boolean, - keyUsages: KeyUsage[], + keyUsages: readonly KeyUsage[], ): Promise { - crypto.subtle.importKey = parentImportKey; + crypto.subtle.importKey = parentImportKey as typeof crypto.subtle.importKey; try { + // Convert readonly array to mutable array for crypto API + const mutableKeyUsages = [...keyUsages]; if (format === 'jwk') { return await crypto.subtle.importKey( format, keyData as JsonWebKey, algorithm, extractable, - keyUsages, + mutableKeyUsages, ); } const data: BufferSource = keyData as BufferSource; @@ -78,14 +80,20 @@ async function mockImportKey( data, algorithm, extractable, - keyUsages, + mutableKeyUsages, ); key.algorithm.name = 'RSA-RAW'; return key; } - return await crypto.subtle.importKey(format, data, algorithm, extractable, keyUsages); + return await crypto.subtle.importKey( + format, + data, + algorithm, + extractable, + mutableKeyUsages, + ); } finally { - crypto.subtle.importKey = mockImportKey; + crypto.subtle.importKey = mockImportKey as typeof crypto.subtle.importKey; } } crypto.subtle.importKey = mockImportKey;