{"entry_id": "1ffdbe78-7c74-46ee-8e26-cd2ea19812f0", "infos": [{"txt": "GitHub  asitplus/signum:", "language": "english", "position": {"atoms": [{"position_id": 0, "txt": "GitHub  asitplus/signum:", "x": "//title"}]}, "tags": [], "label": "O", "web_segment_id": 0, "global_sentence_id": 0, "edu_l1_label": "EDU_O"}, {"txt": " Kotlin Multiplatform Crypto/PKI/ASN.1 Library with Attestation and Hardware", "language": "english", "position": {"atoms": [{"position_id": 0, "txt": " Kotlin Multiplatform Crypto/PKI/ASN.1 Library with Attestation and Hardware", "x": "//title"}]}, "tags": [], "label": "O", "web_segment_id": 0, "global_sentence_id": 1, "edu_l1_label": "EDU_O"}, {"txt": "<img img", "language": "english", "position": {"atoms": [{"position_id": 1038, "txt": "<img img", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[1]/themed-picture/picture/img"}]}, "tags": ["img"], "label": "O", "web_segment_id": 1, "global_sentence_id": 2, "edu_l1_label": "EDU_O"}, {"txt": "Signum – Kotlin Multiplatform Crypto/PKI Library and ASN1 Parser + Encoder", "language": "english", "position": {"atoms": [{"position_id": 2446, "txt": "Signum – Kotlin Multiplatform Crypto/PKI Library and ASN1 Parser + Encoder", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[1]/div/h1"}]}, "tags": ["h1"], "label": "article_title", "web_segment_id": 2, "global_sentence_id": 3, "edu_l1_label": "BOT"}, {"txt": "Kotlin Multiplatform Crypto/PKI Library with ASN1 Parser + Encoder", "language": "english", "position": {"atoms": [{"position_id": 2448, "txt": "Kotlin Multiplatform Crypto/PKI Library with ASN1 Parser + Encoder", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[2]/h2"}]}, "tags": ["h2"], "label": "title1", "web_segment_id": 3, "global_sentence_id": 4, "edu_l1_label": "BOS"}, {"txt": "Multiplatform, platform-native crypto → Check out the included CMP demo App to see it in action! ", "language": "english", "position": {"atoms": [{"position_id": 2450, "txt": "Multiplatform, platform-native crypto", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/strong"}, {"position_id": 2452, "txt": " → Check out the included ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/strong"}, {"position_id": 2454, "txt": "CMP demo App", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/a"}, {"position_id": 2456, "txt": " to see it in action! ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/a"}]}, "tags": ["strong", "li"], "label": "content", "web_segment_id": 4, "global_sentence_id": 5, "edu_l1_label": "IOS"}, {"txt": "ECDSA and RSA Signer and Verifier", "language": "english", "position": {"atoms": [{"position_id": 2458, "txt": "ECDSA and RSA Signer and Verifier", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/ul/li[1]/strong"}]}, "tags": ["li", "strong"], "label": "content", "web_segment_id": 5, "global_sentence_id": 6, "edu_l1_label": "IOS"}, {"txt": "Multiplatform ECDH key agreement", "language": "english", "position": {"atoms": [{"position_id": 2460, "txt": "Multiplatform ECDH key agreement", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/ul/li[2]/strong"}]}, "tags": ["li", "strong"], "label": "content", "web_segment_id": 6, "global_sentence_id": 7, "edu_l1_label": "IOS"}, {"txt": "Hardware-Backed crypto on Android and iOS", "language": "english", "position": {"atoms": [{"position_id": 2462, "txt": "Hardware-Backed crypto on Android and iOS", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/ul/li[3]/strong"}]}, "tags": ["li", "strong"], "label": "content", "web_segment_id": 7, "global_sentence_id": 8, "edu_l1_label": "IOS"}, {"txt": "Platform-native attestation on iOS and Android", "language": "english", "position": {"atoms": [{"position_id": 2464, "txt": "Platform-native attestation on iOS and Android", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/ul/li[4]/strong"}]}, "tags": ["li", "strong"], "label": "content", "web_segment_id": 8, "global_sentence_id": 9, "edu_l1_label": "IOS"}, {"txt": "Configurable biometric authentication on Android and iOS without callbacks or activity passing (✨Magic!✨)", "language": "english", "position": {"atoms": [{"position_id": 2466, "txt": "Configurable biometric authentication on Android and iOS without callbacks or activity passing", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/ul/li[5]/strong"}, {"position_id": 2468, "txt": " (✨Magic!✨)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/ul/li[5]/strong"}]}, "tags": ["li", "strong"], "label": "content", "web_segment_id": 9, "global_sentence_id": 10, "edu_l1_label": "IOS"}, {"txt": "Multiplatform AES", "language": "english", "position": {"atoms": [{"position_id": 2470, "txt": "Multiplatform AES", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/ul/li[6]/strong"}]}, "tags": ["li", "strong"], "label": "content", "web_segment_id": 10, "global_sentence_id": 11, "edu_l1_label": "IOS"}, {"txt": "Multiplatform HMAC", "language": "english", "position": {"atoms": [{"position_id": 2472, "txt": "Multiplatform HMAC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[1]/ul/li[7]/strong"}]}, "tags": ["li", "strong"], "label": "content", "web_segment_id": 11, "global_sentence_id": 12, "edu_l1_label": "IOS"}, {"txt": "Public Keys (RSA and EC)", "language": "english", "position": {"atoms": [{"position_id": 2474, "txt": "Public Keys (RSA and EC)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[2]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 12, "global_sentence_id": 13, "edu_l1_label": "IOS"}, {"txt": "Private Keys (RSA and EC)", "language": "english", "position": {"atoms": [{"position_id": 2476, "txt": "Private Keys (RSA and EC)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[3]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 13, "global_sentence_id": 14, "edu_l1_label": "IOS"}, {"txt": "Algorithm Identifiers (Signatures, Hashing)", "language": "english", "position": {"atoms": [{"position_id": 2478, "txt": "Algorithm Identifiers (Signatures, Hashing)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[4]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 14, "global_sentence_id": 15, "edu_l1_label": "IOS"}, {"txt": "X509 Certificate Class (create, encode, decode)", "language": "english", "position": {"atoms": [{"position_id": 2480, "txt": "X509 Certificate Class (create, encode, decode)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[5]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 15, "global_sentence_id": 16, "edu_l1_label": "IOS"}, {"txt": "Certification Request (CSR)", "language": "english", "position": {"atoms": [{"position_id": 2482, "txt": "Certification Request (CSR)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[6]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 16, "global_sentence_id": 17, "edu_l1_label": "IOS"}, {"txt": "ObjectIdentifier Class with human-readable notation (e.g. 1.2.9.6245.3.72.13.4.7.6)", "language": "english", "position": {"atoms": [{"position_id": 2484, "txt": "ObjectIdentifier Class with human-readable notation (e.g. 1.2.9.6245.3.72.13.4.7.6)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[7]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 17, "global_sentence_id": 18, "edu_l1_label": "IOS"}, {"txt": "Generic ASN.1 abstractions to operate on and create arbitrary ASN.1 Data", "language": "english", "position": {"atoms": [{"position_id": 2486, "txt": "Generic ASN.1 abstractions to operate on and create arbitrary ASN.1 Data", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[8]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 18, "global_sentence_id": 19, "edu_l1_label": "IOS"}, {"txt": "JOSE-related data structures (JSON Web Keys, JWT, etc…)", "language": "english", "position": {"atoms": [{"position_id": 2488, "txt": "JOSE-related data structures (JSON Web Keys, JWT, etc…)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[9]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 19, "global_sentence_id": 20, "edu_l1_label": "IOS"}, {"txt": "COSE-related data structures (COSE Keys, CWT, etc…)", "language": "english", "position": {"atoms": [{"position_id": 2490, "txt": "COSE-related data structures (COSE Keys, CWT, etc…)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[10]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 20, "global_sentence_id": 21, "edu_l1_label": "IOS"}, {"txt": "100% pure Kotlin BitSet", "language": "english", "position": {"atoms": [{"position_id": 2492, "txt": "100% pure Kotlin BitSet", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[11]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 21, "global_sentence_id": 22, "edu_l1_label": "IOS"}, {"txt": "Exposes Multibase Encoder/Decoder as an API dependency including Matthew Nelson's smashing Base16, Base32, and Base64 encoders", "language": "english", "position": {"atoms": [{"position_id": 2494, "txt": "Exposes Multibase Encoder/Decoder as an API dependency including ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[12]"}, {"position_id": 2496, "txt": "Matthew Nelson's smashing Base16, Base32, and Base64 encoders", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[12]/a"}]}, "tags": ["li"], "label": "content", "web_segment_id": 22, "global_sentence_id": 23, "edu_l1_label": "IOS"}, {"txt": "ASN.1 Parser and Encoder including a DSL to generate ASN.1 structures", "language": "english", "position": {"atoms": [{"position_id": 2498, "txt": "ASN.1 Parser and Encoder including a DSL to generate ASN.1 structures", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[13]/strong"}]}, "tags": ["li", "strong"], "label": "content", "web_segment_id": 23, "global_sentence_id": 24, "edu_l1_label": "IOS"}, {"txt": "Parse, create, explore certificates, public keys, CSRs, and arbitrary ASN.1 structures on all supported platforms", "language": "english", "position": {"atoms": [{"position_id": 2500, "txt": "Parse, create, explore certificates, public keys, CSRs, and ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[13]/ul/li[1]"}, {"position_id": 2502, "txt": "arbitrary ASN.1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[13]/ul/li[1]/em/em"}, {"position_id": 2504, "txt": " structures", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[13]/ul/li[1]/em/em"}, {"position_id": 2506, "txt": " on all supported platforms", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[13]/ul/li[1]/em"}]}, "tags": ["li", "em"], "label": "content", "web_segment_id": 24, "global_sentence_id": 25, "edu_l1_label": "IOS"}, {"txt": "Powerful, expressive, type-safe ASN.1 DSL on all KMP targets!", "language": "english", "position": {"atoms": [{"position_id": 2508, "txt": "Powerful, expressive, type-safe ASN.1 DSL on all KMP targets!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[1]/li[13]/ul/li[2]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 25, "global_sentence_id": 26, "edu_l1_label": "IOS"}, {"txt": "This last bit means that you can share ASN.1-related logic across platforms.", "language": "english", "position": {"atoms": [{"position_id": 2510, "txt": "This last bit means that you can share ASN.1-related logic across platforms.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[1]"}]}, "tags": [], "label": "content", "web_segment_id": 26, "global_sentence_id": 27, "edu_l1_label": "IOS"}, {"txt": " The very first bit means that you can create and verify signatures on the JVM, Android and on iOS, using platform-native crypto hardware.", "language": "english", "position": {"atoms": [{"position_id": 2511, "txt": " The very first bit means that you can create and verify signatures on the JVM, Android and on iOS, using platform-native crypto hardware.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[1]"}]}, "tags": [], "label": "content", "web_segment_id": 26, "global_sentence_id": 28, "edu_l1_label": "IOS"}, {"txt": "Do check out the full manual with examples and API docs here!", "language": "english", "position": {"atoms": [{"position_id": 2513, "txt": "Do check out the full manual with examples and API docs ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[3]/h3"}, {"position_id": 2515, "txt": "here", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[3]/h3/a"}, {"position_id": 2517, "txt": "!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[3]/h3/a"}]}, "tags": ["h3"], "label": "content", "web_segment_id": 27, "global_sentence_id": 29, "edu_l1_label": "IOS"}, {"txt": "This README provides just an overview.", "language": "english", "position": {"atoms": [{"position_id": 2519, "txt": "This README provides just an overview.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[2]"}]}, "tags": [], "label": "content", "web_segment_id": 28, "global_sentence_id": 30, "edu_l1_label": "IOS"}, {"txt": " The full manual is more comprehensive, has separate sections for each module, provides examples, and a full API documentation.", "language": "english", "position": {"atoms": [{"position_id": 2520, "txt": " The full manual is more comprehensive, has separate sections for each module, provides examples, and a full API documentation.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[2]"}]}, "tags": [], "label": "content", "web_segment_id": 28, "global_sentence_id": 31, "edu_l1_label": "IOS"}, {"txt": "Using it in your Projects", "language": "english", "position": {"atoms": [{"position_id": 2522, "txt": "Using it in your Projects", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[4]/h2"}]}, "tags": ["h2"], "label": "title1", "web_segment_id": 29, "global_sentence_id": 32, "edu_l1_label": "BOS"}, {"txt": "This library was built for Kotlin Multiplatform.", "language": "english", "position": {"atoms": [{"position_id": 2524, "txt": "This library was built for ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[3]"}, {"position_id": 2526, "txt": "Kotlin Multiplatform", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[3]/a"}, {"position_id": 2528, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[3]/a"}]}, "tags": [], "label": "content", "web_segment_id": 30, "global_sentence_id": 33, "edu_l1_label": "IOS"}, {"txt": " Currently, it targets the JVM, Android and iOS.", "language": "english", "position": {"atoms": [{"position_id": 2529, "txt": " Currently, it targets the JVM, Android and iOS.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[3]/a"}]}, "tags": [], "label": "content", "web_segment_id": 30, "global_sentence_id": 34, "edu_l1_label": "IOS"}, {"txt": " It consists of four modules, each of which is published on maven central:", "language": "english", "position": {"atoms": [{"position_id": 2530, "txt": " It consists of four modules, each of which is published on maven central:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[3]/a"}]}, "tags": [], "label": "content", "web_segment_id": 30, "global_sentence_id": 35, "edu_l1_label": "IOS"}, {"txt": "<table <table position_id=\"1126\"><thead position_id=\"1127\"><tr position_id=\"1128\"><th align=\"center\" position_id=\"1129\">Name</th><th position_id=\"1130\">Info</th></tr></thead><tbody position_id=\"1131\"><tr position_id=\"1132\"><td align=\"center\" position_id=\"1133\"><themed-picture data-catalyst=\"\" data-catalyst-inline=\"true\" position_id=\"1134\"><picture position_id=\"1135\"><source media=\"(prefers-color-scheme: dark)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/asn1-light.png\" position_id=\"1136\"/><source media=\"(prefers-color-scheme: light)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/asn1-dark.png\" position_id=\"1137\"/><img alt=\"Indispensable ASN.1\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/asn1-dark.png\" style=\"visibility:visible;max-width:100%;\" position_id=\"1138\"/></picture></themed-picture></td><td position_id=\"1139\"><strong position_id=\"1140\">Indispensable ASN.1</strong> module containing the most sophisticated KMP ASN.1 engine in the known universe. kotlinx-* dependencies aside, it only depends only on <a href=\"https://github.com/a-sit-plus/kmmresult\" position_id=\"1141\">KmmResult</a> for extra-smooth iOS interop.</td></tr><tr position_id=\"1142\"><td align=\"center\" position_id=\"1143\"><themed-picture data-catalyst=\"\" data-catalyst-inline=\"true\" position_id=\"1144\"><picture position_id=\"1145\"><source media=\"(prefers-color-scheme: dark)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/core-light.png\" position_id=\"1146\"/><source media=\"(prefers-color-scheme: light)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/core-dark.png\" position_id=\"1147\"/><img alt=\"Indispensable\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/core-dark.png\" style=\"visibility:visible;max-width:100%;\" position_id=\"1148\"/></picture></themed-picture></td><td position_id=\"1149\"><strong position_id=\"1150\">Indispensable</strong> base module containing the cryptographic data structures, algorithm identifiers, X.509 certificate, …. Depends on the ASN.1 engine.</td></tr><tr position_id=\"1151\"><td align=\"center\" position_id=\"1152\"><themed-picture data-catalyst=\"\" data-catalyst-inline=\"true\" position_id=\"1153\"><picture position_id=\"1154\"><source media=\"(prefers-color-scheme: dark)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/josef-light.png\" position_id=\"1155\"/><source media=\"(prefers-color-scheme: light)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/josef-dark.png\" position_id=\"1156\"/><img alt=\"Indispensable Josef\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/josef-dark.png\" style=\"visibility:visible;max-width:100%;\" position_id=\"1157\"/></picture></themed-picture></td><td position_id=\"1158\"><strong position_id=\"1159\">Indispensable Josef</strong> JOSE add-on module containing JWS/E/T-specific data structures and extensions to convert from/to types contained in the base module. Includes all required kotlinx-serialization magic to allow for spec-compliant de-/serialization.</td></tr><tr position_id=\"1160\"><td align=\"center\" position_id=\"1161\"><themed-picture data-catalyst=\"\" data-catalyst-inline=\"true\" position_id=\"1162\"><picture position_id=\"1163\"><source media=\"(prefers-color-scheme: dark)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/cosef-light.png\" position_id=\"1164\"/><source media=\"(prefers-color-scheme: light)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/cosef-dark.png\" position_id=\"1165\"/><img alt=\"Indispensable Cosef\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/cosef-dark.png\" style=\"visibility:visible;max-width:100%;\" position_id=\"1166\"/></picture></themed-picture></td><td position_id=\"1167\"><strong position_id=\"1168\">Indispensable Cosef</strong> COSE add-on module containing all COSE/CWT-specific data structures and extensions to convert from/to types contained in the base module. Includes all required kotlinx-serialization magic to allow for spec-compliant de-/serialization.</td></tr><tr position_id=\"1169\"><td align=\"center\" position_id=\"1170\"><themed-picture data-catalyst=\"\" data-catalyst-inline=\"true\" position_id=\"1171\"><picture position_id=\"1172\"><source media=\"(prefers-color-scheme: dark)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/supreme-light.png\" position_id=\"1173\"/><source media=\"(prefers-color-scheme: light)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/supreme-dark.png\" position_id=\"1174\"/><img alt=\"Supreme\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/supreme-dark.png\" style=\"visibility:visible;max-width:100%;\" position_id=\"1175\"/></picture></themed-picture></td><td position_id=\"1176\"><strong position_id=\"1177\">Supreme</strong> KMP crypto provider implementing hardware-backed signature creation and verification across mobile platforms (Android KeyStore / iOS Secure Enclave) and JCA compatibility (on the JVM).</td></tr></tbody></table>", "language": "english", "position": {"atoms": [{"position_id": 1126, "txt": "<table <table position_id=\"1126\"><thead position_id=\"1127\"><tr position_id=\"1128\"><th align=\"center\" position_id=\"1129\">Name</th><th position_id=\"1130\">Info</th></tr></thead><tbody position_id=\"1131\"><tr position_id=\"1132\"><td align=\"center\" position_id=\"1133\"><themed-picture data-catalyst=\"\" data-catalyst-inline=\"true\" position_id=\"1134\"><picture position_id=\"1135\"><source media=\"(prefers-color-scheme: dark)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/asn1-light.png\" position_id=\"1136\"/><source media=\"(prefers-color-scheme: light)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/asn1-dark.png\" position_id=\"1137\"/><img alt=\"Indispensable ASN.1\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/asn1-dark.png\" style=\"visibility:visible;max-width:100%;\" position_id=\"1138\"/></picture></themed-picture></td><td position_id=\"1139\"><strong position_id=\"1140\">Indispensable ASN.1</strong> module containing the most sophisticated KMP ASN.1 engine in the known universe. kotlinx-* dependencies aside, it only depends only on <a href=\"https://github.com/a-sit-plus/kmmresult\" position_id=\"1141\">KmmResult</a> for extra-smooth iOS interop.</td></tr><tr position_id=\"1142\"><td align=\"center\" position_id=\"1143\"><themed-picture data-catalyst=\"\" data-catalyst-inline=\"true\" position_id=\"1144\"><picture position_id=\"1145\"><source media=\"(prefers-color-scheme: dark)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/core-light.png\" position_id=\"1146\"/><source media=\"(prefers-color-scheme: light)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/core-dark.png\" position_id=\"1147\"/><img alt=\"Indispensable\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/core-dark.png\" style=\"visibility:visible;max-width:100%;\" position_id=\"1148\"/></picture></themed-picture></td><td position_id=\"1149\"><strong position_id=\"1150\">Indispensable</strong> base module containing the cryptographic data structures, algorithm identifiers, X.509 certificate, …. Depends on the ASN.1 engine.</td></tr><tr position_id=\"1151\"><td align=\"center\" position_id=\"1152\"><themed-picture data-catalyst=\"\" data-catalyst-inline=\"true\" position_id=\"1153\"><picture position_id=\"1154\"><source media=\"(prefers-color-scheme: dark)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/josef-light.png\" position_id=\"1155\"/><source media=\"(prefers-color-scheme: light)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/josef-dark.png\" position_id=\"1156\"/><img alt=\"Indispensable Josef\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/josef-dark.png\" style=\"visibility:visible;max-width:100%;\" position_id=\"1157\"/></picture></themed-picture></td><td position_id=\"1158\"><strong position_id=\"1159\">Indispensable Josef</strong> JOSE add-on module containing JWS/E/T-specific data structures and extensions to convert from/to types contained in the base module. Includes all required kotlinx-serialization magic to allow for spec-compliant de-/serialization.</td></tr><tr position_id=\"1160\"><td align=\"center\" position_id=\"1161\"><themed-picture data-catalyst=\"\" data-catalyst-inline=\"true\" position_id=\"1162\"><picture position_id=\"1163\"><source media=\"(prefers-color-scheme: dark)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/cosef-light.png\" position_id=\"1164\"/><source media=\"(prefers-color-scheme: light)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/cosef-dark.png\" position_id=\"1165\"/><img alt=\"Indispensable Cosef\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/cosef-dark.png\" style=\"visibility:visible;max-width:100%;\" position_id=\"1166\"/></picture></themed-picture></td><td position_id=\"1167\"><strong position_id=\"1168\">Indispensable Cosef</strong> COSE add-on module containing all COSE/CWT-specific data structures and extensions to convert from/to types contained in the base module. Includes all required kotlinx-serialization magic to allow for spec-compliant de-/serialization.</td></tr><tr position_id=\"1169\"><td align=\"center\" position_id=\"1170\"><themed-picture data-catalyst=\"\" data-catalyst-inline=\"true\" position_id=\"1171\"><picture position_id=\"1172\"><source media=\"(prefers-color-scheme: dark)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/supreme-light.png\" position_id=\"1173\"/><source media=\"(prefers-color-scheme: light)\" srcset=\"/a-sit-plus/signum/raw/main/docs/docs/assets/supreme-dark.png\" position_id=\"1174\"/><img alt=\"Supreme\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/supreme-dark.png\" style=\"visibility:visible;max-width:100%;\" position_id=\"1175\"/></picture></themed-picture></td><td position_id=\"1176\"><strong position_id=\"1177\">Supreme</strong> KMP crypto provider implementing hardware-backed signature creation and verification across mobile platforms (Android KeyStore / iOS Secure Enclave) and JCA compatibility (on the JVM).</td></tr></tbody></table>", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/markdown-accessiblity-table[1]/table"}]}, "tags": ["table"], "label": "table", "web_segment_id": 31, "global_sentence_id": 36, "edu_l1_label": "EDU_O"}, {"txt": "This separation keeps dependencies to a minimum, i.e. it enables including only JOSE-related functionality, if COSE is irrelevant.", "language": "english", "position": {"atoms": [{"position_id": 2532, "txt": "This separation keeps dependencies to a minimum, i.e. it enables including only JOSE-related functionality, if COSE is irrelevant.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[4]"}]}, "tags": [], "label": "content", "web_segment_id": 32, "global_sentence_id": 37, "edu_l1_label": "IOS"}, {"txt": " More importantly, in a JVM, iOS, or Android-only project, it allows for processing cryptographic material without imposing the inclusion of a crypto provider.", "language": "english", "position": {"atoms": [{"position_id": 2533, "txt": " More importantly, in a JVM, iOS, or Android-only project, it allows for processing cryptographic material without imposing the inclusion of a crypto provider.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[4]"}]}, "tags": [], "label": "content", "web_segment_id": 32, "global_sentence_id": 38, "edu_l1_label": "IOS"}, {"txt": "Simply declare the desired dependency to get going:", "language": "english", "position": {"atoms": [{"position_id": 2535, "txt": "Simply declare the desired dependency to get going:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[5]"}]}, "tags": [], "label": "content", "web_segment_id": 33, "global_sentence_id": 39, "edu_l1_label": "IOS"}, {"txt": "implementation(\"at.asitplus.signum:", "language": "english", "position": {"atoms": [{"position_id": 2537, "txt": "implementation(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[5]/pre"}, {"position_id": 2539, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[5]/pre/span/span[1]"}, {"position_id": 2541, "txt": "at.asitplus.signum:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[5]/pre/span/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 34, "global_sentence_id": 40, "edu_l1_label": "EDU_O"}, {"txt": "indispensable:", "language": "english", "position": {"atoms": [{"position_id": 2542, "txt": "indispensable:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[5]/pre/span/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 34, "global_sentence_id": 41, "edu_l1_label": "EDU_O"}, {"txt": "$version\")", "language": "english", "position": {"atoms": [{"position_id": 2544, "txt": "$version", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[5]/pre/span/span[2]"}, {"position_id": 2546, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[5]/pre/span/span[3]"}, {"position_id": 2548, "txt": ")", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[5]/pre/span"}]}, "tags": [], "label": "code", "web_segment_id": 34, "global_sentence_id": 42, "edu_l1_label": "EDU_O"}, {"txt": "implementation(\"at.asitplus.signum:", "language": "english", "position": {"atoms": [{"position_id": 2550, "txt": "implementation(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[6]/pre"}, {"position_id": 2552, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[6]/pre/span/span[1]"}, {"position_id": 2554, "txt": "at.asitplus.signum:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[6]/pre/span/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 36, "global_sentence_id": 43, "edu_l1_label": "EDU_O"}, {"txt": "indispensable-josef:", "language": "english", "position": {"atoms": [{"position_id": 2555, "txt": "indispensable-josef:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[6]/pre/span/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 36, "global_sentence_id": 44, "edu_l1_label": "EDU_O"}, {"txt": "$version\")", "language": "english", "position": {"atoms": [{"position_id": 2557, "txt": "$version", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[6]/pre/span/span[2]"}, {"position_id": 2559, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[6]/pre/span/span[3]"}, {"position_id": 2561, "txt": ")", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[6]/pre/span"}]}, "tags": [], "label": "code", "web_segment_id": 36, "global_sentence_id": 45, "edu_l1_label": "EDU_O"}, {"txt": "implementation(\"at.asitplus.signum:", "language": "english", "position": {"atoms": [{"position_id": 2563, "txt": "implementation(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[7]/pre"}, {"position_id": 2565, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[7]/pre/span/span[1]"}, {"position_id": 2567, "txt": "at.asitplus.signum:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[7]/pre/span/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 38, "global_sentence_id": 46, "edu_l1_label": "EDU_O"}, {"txt": "indispensable-cosef:", "language": "english", "position": {"atoms": [{"position_id": 2568, "txt": "indispensable-cosef:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[7]/pre/span/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 38, "global_sentence_id": 47, "edu_l1_label": "EDU_O"}, {"txt": "$version\")", "language": "english", "position": {"atoms": [{"position_id": 2570, "txt": "$version", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[7]/pre/span/span[2]"}, {"position_id": 2572, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[7]/pre/span/span[3]"}, {"position_id": 2574, "txt": ")", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[7]/pre/span"}]}, "tags": [], "label": "code", "web_segment_id": 38, "global_sentence_id": 48, "edu_l1_label": "EDU_O"}, {"txt": "implementation(\"at.asitplus.signum:", "language": "english", "position": {"atoms": [{"position_id": 2576, "txt": "implementation(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[8]/pre"}, {"position_id": 2578, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[8]/pre/span/span[1]"}, {"position_id": 2580, "txt": "at.asitplus.signum:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[8]/pre/span/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 40, "global_sentence_id": 49, "edu_l1_label": "EDU_O"}, {"txt": "supreme:", "language": "english", "position": {"atoms": [{"position_id": 2581, "txt": "supreme:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[8]/pre/span/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 40, "global_sentence_id": 50, "edu_l1_label": "EDU_O"}, {"txt": "$supremeVersion\")", "language": "english", "position": {"atoms": [{"position_id": 2583, "txt": "$supremeVersion", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[8]/pre/span/span[2]"}, {"position_id": 2585, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[8]/pre/span/span[3]"}, {"position_id": 2587, "txt": ")", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[8]/pre/span"}]}, "tags": [], "label": "code", "web_segment_id": 40, "global_sentence_id": 51, "edu_l1_label": "EDU_O"}, {"txt": "Rationale", "language": "english", "position": {"atoms": [{"position_id": 2589, "txt": "Rationale", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[9]/h2"}]}, "tags": ["h2"], "label": "title1", "web_segment_id": 42, "global_sentence_id": 52, "edu_l1_label": "BOS"}, {"txt": "Looking for a KMP cryptography framework, you have undoubtedly come across cryptography-kotlin.", "language": "english", "position": {"atoms": [{"position_id": 2591, "txt": "Looking for a KMP cryptography framework, you have undoubtedly come across ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]"}, {"position_id": 2593, "txt": "cryptography-kotlin", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]/a"}, {"position_id": 2595, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]/a"}]}, "tags": [], "label": "content", "web_segment_id": 43, "global_sentence_id": 53, "edu_l1_label": "IOS"}, {"txt": " So have we and it is a powerful library, supporting more platforms and more cryptographic operations than Signum Supreme.", "language": "english", "position": {"atoms": [{"position_id": 2596, "txt": " So have we and it is a powerful library, supporting more platforms and more cryptographic operations than Signum Supreme.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]/a"}]}, "tags": [], "label": "content", "web_segment_id": 43, "global_sentence_id": 54, "edu_l1_label": "IOS"}, {"txt": " This begs the question:", "language": "english", "position": {"atoms": [{"position_id": 2597, "txt": " This begs the question:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]/a"}]}, "tags": [], "label": "content", "web_segment_id": 43, "global_sentence_id": 55, "edu_l1_label": "IOS"}, {"txt": " Why implement another, incompatible cryptography framework from scratch?", "language": "english", "position": {"atoms": [{"position_id": 2598, "txt": " Why implement another, incompatible cryptography framework from scratch?", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]/a"}]}, "tags": [], "label": "content", "web_segment_id": 43, "global_sentence_id": 56, "edu_l1_label": "IOS"}, {"txt": " The short answer is:", "language": "english", "position": {"atoms": [{"position_id": 2599, "txt": " The short answer is:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]/a"}]}, "tags": [], "label": "content", "web_segment_id": 43, "global_sentence_id": 57, "edu_l1_label": "IOS"}, {"txt": " Signum and cryptography-kotlin pursue different goals and priorities.", "language": "english", "position": {"atoms": [{"position_id": 2600, "txt": " Signum and cryptography-kotlin pursue different goals and priorities.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]/a"}]}, "tags": [], "label": "content", "web_segment_id": 43, "global_sentence_id": 58, "edu_l1_label": "IOS"}, {"txt": " cryptography-kotlin strives for covering a wide range of targets and a broad range of operations based on a flexible provider architecture.", "language": "english", "position": {"atoms": [{"position_id": 2602, "txt": " cryptography-kotlin strives for covering a wide range of targets and a broad range of operations based on a flexible provider architecture.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]/br"}]}, "tags": ["br"], "label": "content", "web_segment_id": 44, "global_sentence_id": 59, "edu_l1_label": "IOS"}, {"txt": " Signum, on the other hand, focuses on tight platform integration (", "language": "english", "position": {"atoms": [{"position_id": 2603, "txt": " Signum, on the other hand, focuses on tight platform integration (", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]/br"}]}, "tags": ["br"], "label": "content", "web_segment_id": 44, "global_sentence_id": 60, "edu_l1_label": "IOS"}, {"txt": "including hardware-backed crypto and attestation!), and comprehensive ASN.1, JOSE, and COSE support.", "language": "english", "position": {"atoms": [{"position_id": 2605, "txt": "including hardware-backed crypto and attestation!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]/strong"}, {"position_id": 2607, "txt": "), and comprehensive ASN.1, JOSE, and COSE support.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[6]/strong"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 43, "global_sentence_id": 61, "edu_l1_label": "IOS"}, {"txt": "More…", "language": "english", "position": {"atoms": [{"position_id": 2609, "txt": "More…", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/summary"}]}, "tags": [], "label": "content", "web_segment_id": 31, "global_sentence_id": 62, "edu_l1_label": "IOS"}, {"txt": "Signum was born from the need to have cryptographic data structures available across platforms, such as public keys, signatures, certificates, CSRs, as well as COSE and JOSE data.", "language": "english", "position": {"atoms": [{"position_id": 2611, "txt": "Signum was born from the need to have cryptographic data structures available across platforms, such as public keys, signatures, certificates, CSRs, as well as COSE and JOSE data.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]"}]}, "tags": [], "label": "content", "web_segment_id": 45, "global_sentence_id": 63, "edu_l1_label": "IOS"}, {"txt": " Hence, we needed a fully-featured ASN.1 engine and mappings from X.509 to COSE and JOSE datatypes.", "language": "english", "position": {"atoms": [{"position_id": 2612, "txt": " Hence, we needed a fully-featured ASN.1 engine and mappings from X.509 to COSE and JOSE datatypes.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]"}]}, "tags": [], "label": "content", "web_segment_id": 45, "global_sentence_id": 64, "edu_l1_label": "IOS"}, {"txt": " We required comprehensive ASN.1 introspection and builder capabilities across platforms.", "language": "english", "position": {"atoms": [{"position_id": 2613, "txt": " We required comprehensive ASN.1 introspection and builder capabilities across platforms.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]"}]}, "tags": [], "label": "content", "web_segment_id": 45, "global_sentence_id": 65, "edu_l1_label": "IOS"}, {"txt": " Most notably, Apple has been notoriously lacking anything even remotely usable and SwiftASN1 was out of the question for a couple of reasons.", "language": "english", "position": {"atoms": [{"position_id": 2614, "txt": " Most notably, Apple has been notoriously lacking anything even remotely usable and ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]"}, {"position_id": 2616, "txt": "SwiftASN1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/a"}, {"position_id": 2618, "txt": " was out of the question for a couple of reasons.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/a"}]}, "tags": [], "label": "content", "web_segment_id": 45, "global_sentence_id": 66, "edu_l1_label": "IOS"}, {"txt": " Most notably, it did not exist when we started work on Signum.", "language": "english", "position": {"atoms": [{"position_id": 2619, "txt": " Most notably, it did not exist when we started work on Signum.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/a"}]}, "tags": [], "label": "content", "web_segment_id": 45, "global_sentence_id": 67, "edu_l1_label": "IOS"}, {"txt": " Hence, there was neither ASN.1 parser, nor encoder on Apple platforms that was actually usable.", "language": "english", "position": {"atoms": [{"position_id": 2620, "txt": " Hence, there was ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/a"}, {"position_id": 2622, "txt": "neither ASN.1 parser, nor encoder on Apple platforms", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/strong"}, {"position_id": 2624, "txt": " that was actually usable.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/strong"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 45, "global_sentence_id": 68, "edu_l1_label": "IOS"}, {"txt": " In effect:", "language": "english", "position": {"atoms": [{"position_id": 2625, "txt": " In effect:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/strong"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 45, "global_sentence_id": 69, "edu_l1_label": "IOS"}, {"txt": " there was no KMP ASN.1 codec in sight, much less a type-safe, user-friendly one.", "language": "english", "position": {"atoms": [{"position_id": 2626, "txt": " there was no KMP ASN.1 codec in sight, much less a type-safe, user-friendly one.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/strong"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 45, "global_sentence_id": 70, "edu_l1_label": "IOS"}, {"txt": " As it stands now, our ASN.1 engine can handle almost anything you throw at it, in some areas even exceeding Bouncy Castle!", "language": "english", "position": {"atoms": [{"position_id": 2627, "txt": " As it stands now, our ASN.1 engine can handle almost anything you throw at it, in some areas even exceeding Bouncy Castle!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/strong"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 45, "global_sentence_id": 71, "edu_l1_label": "IOS"}, {"txt": " cryptography-kotlin only added basic ASN.1 capabilities over a year after Signum's development started. ", "language": "english", "position": {"atoms": [{"position_id": 2628, "txt": " cryptography-kotlin only added basic ASN.1 capabilities over a year after Signum's development started. ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/strong"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 45, "global_sentence_id": 72, "edu_l1_label": "IOS"}, {"txt": " We are also unaware of any other library offering comprehensive JOSE and COSE data structures based on kotlinx-serialization.", "language": "english", "position": {"atoms": [{"position_id": 2630, "txt": " We are also unaware of any other library offering comprehensive JOSE and COSE data structures based on kotlinx-serialization.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/br"}]}, "tags": ["br"], "label": "content", "web_segment_id": 46, "global_sentence_id": 73, "edu_l1_label": "IOS"}, {"txt": " Hence, we implemented those ourselves, with first-class interop to our generic cryptographic data structures.", "language": "english", "position": {"atoms": [{"position_id": 2631, "txt": " Hence, we implemented those ourselves, with first-class interop to our generic cryptographic data structures.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/br"}]}, "tags": ["br"], "label": "content", "web_segment_id": 46, "global_sentence_id": 74, "edu_l1_label": "IOS"}, {"txt": " We also support platform-native interop meaning that you can easily convert a Json Web Key to a JCA key or even a ", "language": "english", "position": {"atoms": [{"position_id": 2632, "txt": " We also support platform-native interop meaning that you can easily convert a Json Web Key to a JCA key or even a ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/br"}]}, "tags": ["br"], "label": "content", "web_segment_id": 46, "global_sentence_id": 75, "edu_l1_label": "IOS"}, {"txt": "SecKeyRef on iOS.", "language": "english", "position": {"atoms": [{"position_id": 2634, "txt": "SecKeyRef", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/code"}, {"position_id": 2636, "txt": " on iOS.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[1]/code"}]}, "tags": [], "label": "content", "web_segment_id": 45, "global_sentence_id": 76, "edu_l1_label": "IOS"}, {"txt": "Having actual implementations of cryptographic operations available was only second on our list of priorities.", "language": "english", "position": {"atoms": [{"position_id": 2638, "txt": "Having actual implementations of cryptographic operations available was only second on our list of priorities.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]"}]}, "tags": [], "label": "content", "web_segment_id": 47, "global_sentence_id": 77, "edu_l1_label": "IOS"}, {"txt": " From the get-go, it was clear that we wanted the tightest possible platform integration on Android and iOS, including hardware-backed storage of key material and in-hardware execution of cryptographic operations whenever possible.", "language": "english", "position": {"atoms": [{"position_id": 2639, "txt": " From the get-go, it was clear that we wanted the tightest possible platform integration on Android and iOS, including hardware-backed storage of key material and in-hardware execution of cryptographic operations whenever possible.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]"}]}, "tags": [], "label": "content", "web_segment_id": 47, "global_sentence_id": 78, "edu_l1_label": "IOS"}, {"txt": " We also needed platform-native attestation capabilities (and so will you sooner or later, if you are doing anything mission-critical on mobile targets!).", "language": "english", "position": {"atoms": [{"position_id": 2640, "txt": " We also needed platform-native attestation capabilities (and so will you sooner or later, if you are doing anything mission-critical on mobile targets!).", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]"}]}, "tags": [], "label": "content", "web_segment_id": 47, "global_sentence_id": 79, "edu_l1_label": "IOS"}, {"txt": " While this approach does limit the number of available cryptographic operations, it also means that all cryptographic operations involving secrets (e.g. private keys) provide the same security guarantees as platform-native implementations do — because they are the same under the hood.", "language": "english", "position": {"atoms": [{"position_id": 2641, "txt": " While this approach does limit the number of available cryptographic operations, it also means that all cryptographic operations involving secrets (e.g. private keys) provide the same security guarantees as platform-native implementations do — ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]"}, {"position_id": 2643, "txt": "because they are the same", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]/strong[1]"}, {"position_id": 2645, "txt": " under the hood.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]/strong[1]"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 47, "global_sentence_id": 80, "edu_l1_label": "IOS"}, {"txt": " Most notably:", "language": "english", "position": {"atoms": [{"position_id": 2646, "txt": " Most notably:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]/strong[1]"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 47, "global_sentence_id": 81, "edu_l1_label": "IOS"}, {"txt": " hardware-backed private keys never even leave the hardware crypto modules!", "language": "english", "position": {"atoms": [{"position_id": 2647, "txt": " ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]/strong[1]"}, {"position_id": 2649, "txt": "hardware-backed private keys never even leave the hardware crypto modules", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]/strong[2]"}, {"position_id": 2651, "txt": "!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]/strong[2]"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 47, "global_sentence_id": 82, "edu_l1_label": "IOS"}, {"txt": " This tight integration and our focus on mobile comes at the cost of the ", "language": "english", "position": {"atoms": [{"position_id": 2653, "txt": " This tight integration and our focus on mobile comes at the cost of the ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]/br"}]}, "tags": ["br"], "label": "content", "web_segment_id": 48, "global_sentence_id": 83, "edu_l1_label": "IOS"}, {"txt": "Supreme KMP crypto provider only supporting JVM, Android, and iOS.", "language": "english", "position": {"atoms": [{"position_id": 2655, "txt": "Supreme KMP crypto provider only supporting JVM, Android, and iOS", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]/strong[3]"}, {"position_id": 2657, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]/strong[3]"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 47, "global_sentence_id": 84, "edu_l1_label": "IOS"}, {"txt": " cryptography-kotlin, on the other hand allows you to perform a wider range of cryptographic functions an all KMP targets, Most prominently, it already supports RSA encryption, key stretching, and key derivation, which Signum currently lacks.", "language": "english", "position": {"atoms": [{"position_id": 2658, "txt": " cryptography-kotlin, on the other hand allows you to perform a wider range of cryptographic functions an all KMP targets, Most prominently, it already supports RSA encryption, key stretching, and key derivation, which Signum currently lacks.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]/strong[3]"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 47, "global_sentence_id": 85, "edu_l1_label": "IOS"}, {"txt": " On the other hand, cryptography-kotlin currently offers neither hardware-backed crypto, nor attestation capabilities.", "language": "english", "position": {"atoms": [{"position_id": 2659, "txt": " On the other hand, cryptography-kotlin currently offers neither hardware-backed crypto, nor attestation capabilities.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[1]/p[2]/strong[3]"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 47, "global_sentence_id": 86, "edu_l1_label": "IOS"}, {"txt": "The following table provides a detailed comparison between Signum and cryptography-kotlin.", "language": "english", "position": {"atoms": [{"position_id": 2661, "txt": "The following table provides a detailed comparison between Signum and cryptography-kotlin.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[7]"}]}, "tags": [], "label": "content", "web_segment_id": 49, "global_sentence_id": 87, "edu_l1_label": "IOS"}, {"txt": "<table <table position_id=\"1255\"><thead position_id=\"1256\"><tr position_id=\"1257\"><th position_id=\"1258\"/><th position_id=\"1259\">Signum</th><th position_id=\"1260\">cryptography-kotlin</th></tr></thead><tbody position_id=\"1261\"><tr position_id=\"1262\"><td position_id=\"1263\">Digital Signatures</td><td position_id=\"1264\">✔ (ECDSA, RSA)</td><td position_id=\"1265\">✔ (ECDSA, RSA)</td></tr><tr position_id=\"1266\"><td position_id=\"1267\">Symmetric Encryption</td><td position_id=\"1268\">✔ (AES + ChaChaPoly)</td><td position_id=\"1269\">✔ (AES)</td></tr><tr position_id=\"1270\"><td position_id=\"1271\">Public-Key Encryption</td><td position_id=\"1272\">✗</td><td position_id=\"1273\">✔ (RSA)</td></tr><tr position_id=\"1274\"><td position_id=\"1275\">Digest</td><td position_id=\"1276\">✔ (SHA-1, SHA-2)</td><td position_id=\"1277\">✔ (MD5, SHA-1, SHA-2)</td></tr><tr position_id=\"1278\"><td position_id=\"1279\">MAC</td><td position_id=\"1280\">✔ (HMAC)</td><td position_id=\"1281\">✔ (HMAC)</td></tr><tr position_id=\"1282\"><td position_id=\"1283\">Key Agreement</td><td position_id=\"1284\">✔ (ECDH)</td><td position_id=\"1285\">✔ (ECDH)</td></tr><tr position_id=\"1286\"><td position_id=\"1287\">KDF/PRF/KSF</td><td position_id=\"1288\">✗</td><td position_id=\"1289\">✔ (PBKDF2, HKDF)</td></tr><tr position_id=\"1290\"><td position_id=\"1291\">Hardware-Backed Crypto</td><td position_id=\"1292\">✔</td><td position_id=\"1293\">✗</td></tr><tr position_id=\"1294\"><td position_id=\"1295\">Attestation</td><td position_id=\"1296\">✔</td><td position_id=\"1297\">✗</td></tr><tr position_id=\"1298\"><td position_id=\"1299\">Fully-Featured ASN.1 Engine</td><td position_id=\"1300\">✔</td><td position_id=\"1301\">✗</td></tr><tr position_id=\"1302\"><td position_id=\"1303\">COSE</td><td position_id=\"1304\">✔</td><td position_id=\"1305\">✗</td></tr><tr position_id=\"1306\"><td position_id=\"1307\">JOSE</td><td position_id=\"1308\">✔</td><td position_id=\"1309\">✗</td></tr><tr position_id=\"1310\"><td position_id=\"1311\">Provider Targets</td><td position_id=\"1312\">JVM, Android, iOS</td><td position_id=\"1313\">All KMP-supported targets</td></tr></tbody></table>", "language": "english", "position": {"atoms": [{"position_id": 1255, "txt": "<table <table position_id=\"1255\"><thead position_id=\"1256\"><tr position_id=\"1257\"><th position_id=\"1258\"/><th position_id=\"1259\">Signum</th><th position_id=\"1260\">cryptography-kotlin</th></tr></thead><tbody position_id=\"1261\"><tr position_id=\"1262\"><td position_id=\"1263\">Digital Signatures</td><td position_id=\"1264\">✔ (ECDSA, RSA)</td><td position_id=\"1265\">✔ (ECDSA, RSA)</td></tr><tr position_id=\"1266\"><td position_id=\"1267\">Symmetric Encryption</td><td position_id=\"1268\">✔ (AES + ChaChaPoly)</td><td position_id=\"1269\">✔ (AES)</td></tr><tr position_id=\"1270\"><td position_id=\"1271\">Public-Key Encryption</td><td position_id=\"1272\">✗</td><td position_id=\"1273\">✔ (RSA)</td></tr><tr position_id=\"1274\"><td position_id=\"1275\">Digest</td><td position_id=\"1276\">✔ (SHA-1, SHA-2)</td><td position_id=\"1277\">✔ (MD5, SHA-1, SHA-2)</td></tr><tr position_id=\"1278\"><td position_id=\"1279\">MAC</td><td position_id=\"1280\">✔ (HMAC)</td><td position_id=\"1281\">✔ (HMAC)</td></tr><tr position_id=\"1282\"><td position_id=\"1283\">Key Agreement</td><td position_id=\"1284\">✔ (ECDH)</td><td position_id=\"1285\">✔ (ECDH)</td></tr><tr position_id=\"1286\"><td position_id=\"1287\">KDF/PRF/KSF</td><td position_id=\"1288\">✗</td><td position_id=\"1289\">✔ (PBKDF2, HKDF)</td></tr><tr position_id=\"1290\"><td position_id=\"1291\">Hardware-Backed Crypto</td><td position_id=\"1292\">✔</td><td position_id=\"1293\">✗</td></tr><tr position_id=\"1294\"><td position_id=\"1295\">Attestation</td><td position_id=\"1296\">✔</td><td position_id=\"1297\">✗</td></tr><tr position_id=\"1298\"><td position_id=\"1299\">Fully-Featured ASN.1 Engine</td><td position_id=\"1300\">✔</td><td position_id=\"1301\">✗</td></tr><tr position_id=\"1302\"><td position_id=\"1303\">COSE</td><td position_id=\"1304\">✔</td><td position_id=\"1305\">✗</td></tr><tr position_id=\"1306\"><td position_id=\"1307\">JOSE</td><td position_id=\"1308\">✔</td><td position_id=\"1309\">✗</td></tr><tr position_id=\"1310\"><td position_id=\"1311\">Provider Targets</td><td position_id=\"1312\">JVM, Android, iOS</td><td position_id=\"1313\">All KMP-supported targets</td></tr></tbody></table>", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/markdown-accessiblity-table[2]/table"}]}, "tags": ["table"], "label": "table", "web_segment_id": 31, "global_sentence_id": 88, "edu_l1_label": "EDU_O"}, {"txt": "Supreme Demo Reel", "language": "english", "position": {"atoms": [{"position_id": 2663, "txt": "Supreme", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[10]/h2/em"}, {"position_id": 2665, "txt": " Demo Reel", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[10]/h2/em"}]}, "tags": ["h2", "em"], "label": "title1", "web_segment_id": 50, "global_sentence_id": 89, "edu_l1_label": "BOS"}, {"txt": "The Supreme KMP crypto provider works differently from JCA.", "language": "english", "position": {"atoms": [{"position_id": 2667, "txt": "The ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[8]"}, {"position_id": 2669, "txt": "Supreme", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[8]/em"}, {"position_id": 2671, "txt": " KMP crypto provider works differently from JCA.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[8]/em"}]}, "tags": ["em"], "label": "content", "web_segment_id": 51, "global_sentence_id": 90, "edu_l1_label": "IOS"}, {"txt": " Configuration is type-safe, more expressive and more concise, meaning you'll end up with less code.", "language": "english", "position": {"atoms": [{"position_id": 2672, "txt": " Configuration is type-safe, more expressive and more concise, meaning you'll end up with less code.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[8]/em"}]}, "tags": ["em"], "label": "content", "web_segment_id": 51, "global_sentence_id": 91, "edu_l1_label": "IOS"}, {"txt": " Nothing throws!", "language": "english", "position": {"atoms": [{"position_id": 2673, "txt": " ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[8]/em"}, {"position_id": 2675, "txt": "Nothing throws!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[8]/strong"}]}, "tags": ["strong", "em"], "label": "content", "web_segment_id": 51, "global_sentence_id": 92, "edu_l1_label": "IOS"}, {"txt": " Do not discard the results returned from any operation!", "language": "english", "position": {"atoms": [{"position_id": 2676, "txt": " Do not discard the results returned from any operation!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[8]/strong"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 51, "global_sentence_id": 93, "edu_l1_label": "IOS"}, {"txt": "Signature Creation", "language": "english", "position": {"atoms": [{"position_id": 2678, "txt": "Signature Creation", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[11]/h3"}]}, "tags": ["h3"], "label": "title2", "web_segment_id": 52, "global_sentence_id": 94, "edu_l1_label": "IOS"}, {"txt": "To create a signature, obtain a Signer instance.", "language": "english", "position": {"atoms": [{"position_id": 2680, "txt": "To create a signature, obtain a ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[9]"}, {"position_id": 2682, "txt": "Signer", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[9]/code[1]"}, {"position_id": 2684, "txt": " instance.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[9]/code[1]"}]}, "tags": [], "label": "content", "web_segment_id": 53, "global_sentence_id": 95, "edu_l1_label": "IOS"}, {"txt": " You can do this using Signer.Ephemeral to create a signer for a throwaway keypair:", "language": "english", "position": {"atoms": [{"position_id": 2685, "txt": " You can do this using ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[9]/code[1]"}, {"position_id": 2687, "txt": "Signer.Ephemeral", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[9]/code[2]"}, {"position_id": 2689, "txt": " to create a signer for a throwaway keypair:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[9]/code[2]"}]}, "tags": [], "label": "content", "web_segment_id": 53, "global_sentence_id": 96, "edu_l1_label": "IOS"}, {"txt": "val signer =Signer.Ephemeral {}.getOrThrow()val plaintext =\"You have this.\".encodeToByteArray()val signature = signer.sign(plaintext).signatureprintln(\"Signed using ${signer.signatureAlgorithm}:", "language": "english", "position": {"atoms": [{"position_id": 2691, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[1]"}, {"position_id": 2693, "txt": " signer ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[1]"}, {"position_id": 2695, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[2]"}, {"position_id": 2697, "txt": "Signer", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[3]"}, {"position_id": 2699, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[3]"}, {"position_id": 2701, "txt": "Ephemeral", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[4]"}, {"position_id": 2703, "txt": " {}.getOrThrow()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[4]"}, {"position_id": 2705, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[5]"}, {"position_id": 2707, "txt": " plaintext ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[5]"}, {"position_id": 2709, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[6]"}, {"position_id": 2711, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[7]/span[1]"}, {"position_id": 2713, "txt": "You have this.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[7]/span[1]"}, {"position_id": 2715, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[7]/span[2]"}, {"position_id": 2717, "txt": ".encodeToByteArray()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[7]"}, {"position_id": 2719, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[8]"}, {"position_id": 2721, "txt": " signature ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[8]"}, {"position_id": 2723, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[9]"}, {"position_id": 2725, "txt": " signer.sign(plaintext).signature\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[9]"}, {"position_id": 2727, "txt": "println", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[10]"}, {"position_id": 2729, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[10]"}, {"position_id": 2731, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[11]/span[1]"}, {"position_id": 2733, "txt": "Signed using ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[11]/span[1]"}, {"position_id": 2735, "txt": "${signer.signatureAlgorithm}", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[11]/span[2]"}, {"position_id": 2737, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[11]/span[2]"}]}, "tags": [], "label": "code", "web_segment_id": 54, "global_sentence_id": 97, "edu_l1_label": "EDU_O"}, {"txt": " $signature\")", "language": "english", "position": {"atoms": [{"position_id": 2738, "txt": " ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[11]/span[2]"}, {"position_id": 2740, "txt": "$signature", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[11]/span[3]"}, {"position_id": 2742, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[11]/span[4]"}, {"position_id": 2744, "txt": ")", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[12]/pre/span[11]"}]}, "tags": [], "label": "code", "web_segment_id": 54, "global_sentence_id": 98, "edu_l1_label": "EDU_O"}, {"txt": "If you want to create multiple signatures using the same ephemeral key, you can obtain an EphemeralKey instance, then create signers from it:", "language": "english", "position": {"atoms": [{"position_id": 2746, "txt": "If you want to create multiple signatures using the same ephemeral key, you can obtain an ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[10]"}, {"position_id": 2748, "txt": "EphemeralKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[10]/code"}, {"position_id": 2750, "txt": " instance, then create signers from it:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[10]/code"}]}, "tags": [], "label": "content", "web_segment_id": 56, "global_sentence_id": 99, "edu_l1_label": "IOS"}, {"txt": "val key =EphemeralKey { rsa {} }.getOrThrow()val sha256Signer = key.getSigner { rsa { digest =Digests.SHA256 } }.getOrThrow()val sha384Signer = key.getSigner { rsa { digest =Digests.SHA384 } }.getOrThrow()", "language": "english", "position": {"atoms": [{"position_id": 2752, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[1]"}, {"position_id": 2754, "txt": " key ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[1]"}, {"position_id": 2756, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[2]"}, {"position_id": 2758, "txt": "EphemeralKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[3]"}, {"position_id": 2760, "txt": " { rsa {} }.getOrThrow()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[3]"}, {"position_id": 2762, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[4]"}, {"position_id": 2764, "txt": " sha256Signer ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[4]"}, {"position_id": 2766, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[5]"}, {"position_id": 2768, "txt": " key.getSigner { rsa { digest ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[5]"}, {"position_id": 2770, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[6]"}, {"position_id": 2772, "txt": "Digests", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[7]"}, {"position_id": 2774, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[7]"}, {"position_id": 2776, "txt": "SHA256", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[8]"}, {"position_id": 2778, "txt": " } }.getOrThrow()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[8]"}, {"position_id": 2780, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[9]"}, {"position_id": 2782, "txt": " sha384Signer ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[9]"}, {"position_id": 2784, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[10]"}, {"position_id": 2786, "txt": " key.getSigner { rsa { digest ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[10]"}, {"position_id": 2788, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[11]"}, {"position_id": 2790, "txt": "Digests", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[12]"}, {"position_id": 2792, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[12]"}, {"position_id": 2794, "txt": "SHA384", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[13]"}, {"position_id": 2796, "txt": " } }.getOrThrow()", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[13]/pre/span[13]"}]}, "tags": [], "label": "code", "web_segment_id": 57, "global_sentence_id": 100, "edu_l1_label": "EDU_O"}, {"txt": "The instances can be configured using the configuration DSL.", "language": "english", "position": {"atoms": [{"position_id": 2798, "txt": "The instances can be configured using the configuration DSL.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[11]"}]}, "tags": [], "label": "content", "web_segment_id": 59, "global_sentence_id": 101, "edu_l1_label": "IOS"}, {"txt": " Any unspecified parameters use sensible, secure defaults.", "language": "english", "position": {"atoms": [{"position_id": 2799, "txt": " Any unspecified parameters use sensible, secure defaults.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[11]"}]}, "tags": [], "label": "content", "web_segment_id": 59, "global_sentence_id": 102, "edu_l1_label": "IOS"}, {"txt": "Platform Signers", "language": "english", "position": {"atoms": [{"position_id": 2801, "txt": "Platform Signers", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[14]/h4"}]}, "tags": ["h4"], "label": "title3", "web_segment_id": 60, "global_sentence_id": 103, "edu_l1_label": "IOS"}, {"txt": "On Android and iOS, signers using the systems' secure key storage can be retrieved.", "language": "english", "position": {"atoms": [{"position_id": 2803, "txt": "On Android and iOS, signers using the systems' secure key storage can be retrieved.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[12]"}]}, "tags": [], "label": "content", "web_segment_id": 61, "global_sentence_id": 104, "edu_l1_label": "IOS"}, {"txt": " To do this, use PlatformSigningProvider (in common code), or interact with AndroidKeystoreProvider/IosKeychainProvider (in platform-specific code).", "language": "english", "position": {"atoms": [{"position_id": 2804, "txt": " To do this, use ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[12]"}, {"position_id": 2806, "txt": "PlatformSigningProvider", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[12]/code[1]"}, {"position_id": 2808, "txt": " (in common code), or interact with ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[12]/code[1]"}, {"position_id": 2810, "txt": "AndroidKeystoreProvider", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[12]/code[2]"}, {"position_id": 2812, "txt": "/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[12]/code[2]"}, {"position_id": 2814, "txt": "IosKeychainProvider", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[12]/code[3]"}, {"position_id": 2816, "txt": " (in platform-specific code).", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[12]/code[3]"}]}, "tags": [], "label": "content", "web_segment_id": 61, "global_sentence_id": 105, "edu_l1_label": "IOS"}, {"txt": "New keys can be created using createSigningKey(alias:", "language": "english", "position": {"atoms": [{"position_id": 2818, "txt": "New keys can be created using ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[13]"}, {"position_id": 2820, "txt": "createSigningKey(alias:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[13]/code[1]"}]}, "tags": [], "label": "content", "web_segment_id": 62, "global_sentence_id": 106, "edu_l1_label": "IOS"}, {"txt": " String) { /* configuration */ }, and signers for existing keys can be retrieved using getSignerForKey(alias:", "language": "english", "position": {"atoms": [{"position_id": 2821, "txt": " String) { /* configuration */ }", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[13]/code[1]"}, {"position_id": 2823, "txt": ", and signers for existing keys can be retrieved using ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[13]/code[1]"}, {"position_id": 2825, "txt": "getSignerForKey(alias:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[13]/code[2]"}]}, "tags": [], "label": "code", "web_segment_id": 62, "global_sentence_id": 107, "edu_l1_label": "IOS"}, {"txt": " String) { /* configuration */ }.", "language": "english", "position": {"atoms": [{"position_id": 2826, "txt": " String) { /* configuration */ }", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[13]/code[2]"}, {"position_id": 2828, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[13]/code[2]"}]}, "tags": [], "label": "code", "web_segment_id": 62, "global_sentence_id": 108, "edu_l1_label": "IOS"}, {"txt": "For example, creating an elliptic-curve key over P256, stored in secure hardware, and with key attestation using a random challenge provided by your server, might be done like this:", "language": "english", "position": {"atoms": [{"position_id": 2830, "txt": "For example, creating an elliptic-curve key over P256, stored in secure hardware, and with key attestation using a random challenge provided by your server, might be done like this:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[14]"}]}, "tags": [], "label": "content", "web_segment_id": 63, "global_sentence_id": 109, "edu_l1_label": "IOS"}, {"txt": "val serverChallenge:", "language": "english", "position": {"atoms": [{"position_id": 2832, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[1]"}, {"position_id": 2834, "txt": " serverChallenge", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[1]"}, {"position_id": 2836, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[2]"}]}, "tags": [], "label": "code", "web_segment_id": 64, "global_sentence_id": 110, "edu_l1_label": "EDU_O"}, {"txt": "ByteArray=TODO(\"This was unpredictably chosen by your server.\")PlatformSigningProvider.createSigningKey(alias =\"Swordfish\") {  ec {    // you don't even need to specify the curve (P256 is the default) but we'll do it for demonstration purposes    curve =ECCurve.SECP_256_R_1// you could specify the supported digests explicitly - if you do not, the curve's native digest (for P256, this is SHA256) is supported  }  // see https://a-sit-plus.github.io/signum/supreme/at.asitplus.signum.supreme.sign/-platform-signing-key-configuration-base/-secure-hardware-configuration/index.html  hardware {    // you could use PREFERRED if you want the operation to succeed (without hardware backing) on devices that do not support it    backing =REQUIRED    attestation { challenge = serverChallenge }    protection {       timeout =5.seconds      factors {        biometry =true        deviceLock =false      }      }  }}", "language": "english", "position": {"atoms": [{"position_id": 2838, "txt": "ByteArray", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[3]"}, {"position_id": 2840, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[4]"}, {"position_id": 2842, "txt": "TODO", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[5]"}, {"position_id": 2844, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[5]"}, {"position_id": 2846, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[6]/span[1]"}, {"position_id": 2848, "txt": "This was unpredictably chosen by your server.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[6]/span[1]"}, {"position_id": 2850, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[6]/span[2]"}, {"position_id": 2852, "txt": ")\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[6]"}, {"position_id": 2854, "txt": "PlatformSigningProvider", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[7]"}, {"position_id": 2856, "txt": ".createSigningKey(alias ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[7]"}, {"position_id": 2858, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[8]"}, {"position_id": 2860, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[9]/span[1]"}, {"position_id": 2862, "txt": "Swordfish", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[9]/span[1]"}, {"position_id": 2864, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[9]/span[2]"}, {"position_id": 2866, "txt": ") {\n  ec {\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[9]"}, {"position_id": 2868, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[10]/span"}, {"position_id": 2870, "txt": " you don't even need to specify the curve (P256 is the default) but we'll do it for demonstration purposes", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[10]/span"}, {"position_id": 2872, "txt": "\n    curve ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[10]"}, {"position_id": 2874, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[11]"}, {"position_id": 2876, "txt": "ECCurve", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[12]"}, {"position_id": 2878, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[12]"}, {"position_id": 2880, "txt": "SECP_256_R_1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[13]"}, {"position_id": 2882, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[14]/span"}, {"position_id": 2884, "txt": " you could specify the supported digests explicitly - if you do not, the curve's native digest (for P256, this is SHA256) is supported", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[14]/span"}, {"position_id": 2886, "txt": "\n  }\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[14]"}, {"position_id": 2888, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[15]/span"}, {"position_id": 2890, "txt": " see https://a-sit-plus.github.io/signum/supreme/at.asitplus.signum.supreme.sign/-platform-signing-key-configuration-base/-secure-hardware-configuration/index.html", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[15]/span"}, {"position_id": 2892, "txt": "\n  hardware {\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[15]"}, {"position_id": 2894, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[16]/span"}, {"position_id": 2896, "txt": " you could use PREFERRED if you want the operation to succeed (without hardware backing) on devices that do not support it", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[16]/span"}, {"position_id": 2898, "txt": "\n    backing ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[16]"}, {"position_id": 2900, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[17]"}, {"position_id": 2902, "txt": "REQUIRED", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[18]"}, {"position_id": 2904, "txt": "\n    attestation { challenge ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[18]"}, {"position_id": 2906, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[19]"}, {"position_id": 2908, "txt": " serverChallenge }\n    protection { \n      timeout ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[19]"}, {"position_id": 2910, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[20]"}, {"position_id": 2912, "txt": "5", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[21]"}, {"position_id": 2914, "txt": ".seconds\n      factors {\n        biometry ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[21]"}, {"position_id": 2916, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[22]"}, {"position_id": 2918, "txt": "true", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[23]"}, {"position_id": 2920, "txt": "\n        deviceLock ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[23]"}, {"position_id": 2922, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[24]"}, {"position_id": 2924, "txt": "false", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[25]"}, {"position_id": 2926, "txt": "\n      }  \n    }\n  }\n}", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[15]/pre/span[25]"}]}, "tags": [], "label": "code", "web_segment_id": 64, "global_sentence_id": 111, "edu_l1_label": "EDU_O"}, {"txt": "If this operation succeeds, it returns a Signer.", "language": "english", "position": {"atoms": [{"position_id": 2928, "txt": "If this operation succeeds, it returns a ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[15]"}, {"position_id": 2930, "txt": "Signer", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[15]/code[1]"}, {"position_id": 2932, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[15]/code[1]"}]}, "tags": [], "label": "content", "web_segment_id": 66, "global_sentence_id": 112, "edu_l1_label": "IOS"}, {"txt": " The same Signer could later be retrieved using PlatformSigningProvider.getSignerForKey(alias:", "language": "english", "position": {"atoms": [{"position_id": 2933, "txt": " The same ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[15]/code[1]"}, {"position_id": 2935, "txt": "Signer", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[15]/code[2]"}, {"position_id": 2937, "txt": " could later be retrieved using ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[15]/code[2]"}, {"position_id": 2939, "txt": "PlatformSigningProvider.getSignerForKey(alias:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[15]/code[3]"}]}, "tags": [], "label": "content", "web_segment_id": 66, "global_sentence_id": 113, "edu_l1_label": "IOS"}, {"txt": " String).", "language": "english", "position": {"atoms": [{"position_id": 2940, "txt": " String)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[15]/code[3]"}, {"position_id": 2942, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[15]/code[3]"}]}, "tags": [], "label": "content", "web_segment_id": 66, "global_sentence_id": 114, "edu_l1_label": "IOS"}, {"txt": "When you use this Signer to sign data, the user would be prompted to authorize the signature using an enrolled fingerprint, because that's what you specified when creating the key.", "language": "english", "position": {"atoms": [{"position_id": 2944, "txt": "When you use this ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[16]"}, {"position_id": 2946, "txt": "Signer", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[16]/code"}, {"position_id": 2948, "txt": " to sign data, the user would be prompted to authorize the signature using an enrolled fingerprint, because that's what you specified when creating the key.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[16]/code"}]}, "tags": [], "label": "content", "web_segment_id": 67, "global_sentence_id": 115, "edu_l1_label": "IOS"}, {"txt": " You can configure the authentication prompt:", "language": "english", "position": {"atoms": [{"position_id": 2949, "txt": " You can configure the authentication prompt:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[16]/code"}]}, "tags": [], "label": "content", "web_segment_id": 67, "global_sentence_id": 116, "edu_l1_label": "IOS"}, {"txt": "val plaintext =\"A message\".encodeToByteArray()val signature = signer.sign(plaintext) {   unlockPrompt {    message =\"Signing a message to Bobby\"  }}.signature", "language": "english", "position": {"atoms": [{"position_id": 2951, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[1]"}, {"position_id": 2953, "txt": " plaintext ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[1]"}, {"position_id": 2955, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[2]"}, {"position_id": 2957, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[3]/span[1]"}, {"position_id": 2959, "txt": "A message", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[3]/span[1]"}, {"position_id": 2961, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[3]/span[2]"}, {"position_id": 2963, "txt": ".encodeToByteArray()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[3]"}, {"position_id": 2965, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[4]"}, {"position_id": 2967, "txt": " signature ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[4]"}, {"position_id": 2969, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[5]"}, {"position_id": 2971, "txt": " signer.sign(plaintext) { \n  unlockPrompt {\n    message ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[5]"}, {"position_id": 2973, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[6]"}, {"position_id": 2975, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[7]/span[1]"}, {"position_id": 2977, "txt": "Signing a message to Bobby", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[7]/span[1]"}, {"position_id": 2979, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[7]/span[2]"}, {"position_id": 2981, "txt": "\n  }\n}.signature", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[16]/pre/span[7]"}]}, "tags": [], "label": "code", "web_segment_id": 68, "global_sentence_id": 117, "edu_l1_label": "EDU_O"}, {"txt": "... but you cannot change the fact that you configured this key to need biometry.", "language": "english", "position": {"atoms": [{"position_id": 2983, "txt": "... but you cannot change the fact that you configured this key to need biometry.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[17]"}]}, "tags": [], "label": "content", "web_segment_id": 70, "global_sentence_id": 118, "edu_l1_label": "IOS"}, {"txt": " Consider this when creating your keys.", "language": "english", "position": {"atoms": [{"position_id": 2984, "txt": " Consider this when creating your keys.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[17]"}]}, "tags": [], "label": "content", "web_segment_id": 70, "global_sentence_id": 119, "edu_l1_label": "EDU_O"}, {"txt": "On the JVM, no native secure hardware storage is available.", "language": "english", "position": {"atoms": [{"position_id": 2986, "txt": "On the JVM, no native secure hardware storage is available.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]"}]}, "tags": [], "label": "content", "web_segment_id": 71, "global_sentence_id": 120, "edu_l1_label": "IOS"}, {"txt": " File-based keystores can be accessed using JKSProvider { file { /* ... */ } }.", "language": "english", "position": {"atoms": [{"position_id": 2987, "txt": " File-based keystores can be accessed using ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]"}, {"position_id": 2989, "txt": "JKSProvider { file { /* ... */ } }", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]/code[1]"}, {"position_id": 2991, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]/code[1]"}]}, "tags": [], "label": "content", "web_segment_id": 71, "global_sentence_id": 121, "edu_l1_label": "IOS"}, {"txt": " Other keystores can be accessed using JKSProvider { withBackingObject{ /* ... */ } } or JksProvider { customAccessor{ /* ... */ } }.", "language": "english", "position": {"atoms": [{"position_id": 2992, "txt": " Other keystores can be accessed using ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]/code[1]"}, {"position_id": 2994, "txt": "JKSProvider { withBackingObject{ /* ... */ } }", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]/code[2]"}, {"position_id": 2996, "txt": " or ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]/code[2]"}, {"position_id": 2998, "txt": "JksProvider { customAccessor{ /* ... */ } }", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]/code[3]"}, {"position_id": 3000, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]/code[3]"}]}, "tags": [], "label": "content", "web_segment_id": 71, "global_sentence_id": 122, "edu_l1_label": "IOS"}, {"txt": " For more details, please refer to the provider's configuration options.", "language": "english", "position": {"atoms": [{"position_id": 3001, "txt": " For more details, please refer to the provider's ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]/code[3]"}, {"position_id": 3003, "txt": "configuration options", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]/a"}, {"position_id": 3005, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[18]/a"}]}, "tags": [], "label": "content", "web_segment_id": 71, "global_sentence_id": 123, "edu_l1_label": "IOS"}, {"txt": "Key Attestation", "language": "english", "position": {"atoms": [{"position_id": 3007, "txt": "Key Attestation", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[17]/h4"}]}, "tags": ["h4"], "label": "title3", "web_segment_id": 72, "global_sentence_id": 124, "edu_l1_label": "IOS"}, {"txt": "The Android KeyStore offers key attestation certificates for hardware-backed keys.", "language": "english", "position": {"atoms": [{"position_id": 3009, "txt": "The Android KeyStore offers key attestation certificates for hardware-backed keys.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[19]"}]}, "tags": [], "label": "content", "web_segment_id": 73, "global_sentence_id": 125, "edu_l1_label": "IOS"}, {"txt": " These certificates are exposed by the signer's .attestation property.", "language": "english", "position": {"atoms": [{"position_id": 3010, "txt": " These certificates are exposed by the signer's ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[19]"}, {"position_id": 3012, "txt": ".attestation", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[19]/code"}, {"position_id": 3014, "txt": " property.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[19]/code"}]}, "tags": [], "label": "content", "web_segment_id": 73, "global_sentence_id": 126, "edu_l1_label": "IOS"}, {"txt": "For iOS, Apple does not provide this capability.", "language": "english", "position": {"atoms": [{"position_id": 3016, "txt": "For iOS, Apple does not provide this capability.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[20]"}]}, "tags": [], "label": "content", "web_segment_id": 74, "global_sentence_id": 127, "edu_l1_label": "IOS"}, {"txt": " We instead piggy-back onto iOS App Attestation to provide a home-brew \"key attestation\" scheme.", "language": "english", "position": {"atoms": [{"position_id": 3017, "txt": " We instead piggy-back onto iOS App Attestation to provide a home-brew \"key attestation\" scheme.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[20]"}]}, "tags": [], "label": "content", "web_segment_id": 74, "global_sentence_id": 128, "edu_l1_label": "IOS"}, {"txt": " The guarantees are different:", "language": "english", "position": {"atoms": [{"position_id": 3018, "txt": " The guarantees are different:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[20]"}]}, "tags": [], "label": "content", "web_segment_id": 74, "global_sentence_id": 129, "edu_l1_label": "IOS"}, {"txt": " you are trusting the OS, not the actual secure hardware; and you are trusting that our library properly interfaces with the OS.", "language": "english", "position": {"atoms": [{"position_id": 3019, "txt": " you are trusting the OS, not the actual secure hardware; and you are trusting that our library properly interfaces with the OS.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[20]"}]}, "tags": [], "label": "content", "web_segment_id": 74, "global_sentence_id": 130, "edu_l1_label": "IOS"}, {"txt": " Attestation types are serializable for transfer, and correspond to those in Indispensable's attestation module.", "language": "english", "position": {"atoms": [{"position_id": 3020, "txt": " Attestation types are serializable for transfer, and correspond to those in Indispensable's attestation module.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[20]"}]}, "tags": [], "label": "content", "web_segment_id": 74, "global_sentence_id": 131, "edu_l1_label": "IOS"}, {"txt": "Signature Verification", "language": "english", "position": {"atoms": [{"position_id": 3022, "txt": "Signature Verification", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[18]/h3"}]}, "tags": ["h3"], "label": "title2", "web_segment_id": 75, "global_sentence_id": 132, "edu_l1_label": "IOS"}, {"txt": "To verify a signature, obtain a Verifier instance using verifierFor(k:", "language": "english", "position": {"atoms": [{"position_id": 3024, "txt": "To verify a signature, obtain a ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]"}, {"position_id": 3026, "txt": "Verifier", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[1]"}, {"position_id": 3028, "txt": " instance using ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[1]"}, {"position_id": 3030, "txt": "verifierFor(k:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[2]"}]}, "tags": [], "label": "content", "web_segment_id": 76, "global_sentence_id": 133, "edu_l1_label": "IOS"}, {"txt": " PublicKey), either directly on a SignatureAlgorithm, or on one of the specialized algorithms (X509SignatureAlgorithm, CoseAlgorithm, ...).", "language": "english", "position": {"atoms": [{"position_id": 3031, "txt": " PublicKey)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[2]"}, {"position_id": 3033, "txt": ", either directly on a ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[2]"}, {"position_id": 3035, "txt": "SignatureAlgorithm", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[3]"}, {"position_id": 3037, "txt": ", or on one of the specialized algorithms (", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[3]"}, {"position_id": 3039, "txt": "X509SignatureAlgorithm", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[4]"}, {"position_id": 3041, "txt": ", ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[4]"}, {"position_id": 3043, "txt": "CoseAlgorithm", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[5]"}, {"position_id": 3045, "txt": ", ...).", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[5]"}]}, "tags": [], "label": "content", "web_segment_id": 76, "global_sentence_id": 134, "edu_l1_label": "IOS"}, {"txt": " A variety of constants, resembling the well-known JCA names, are also available in SignatureAlgorithm's companion.", "language": "english", "position": {"atoms": [{"position_id": 3046, "txt": " A variety of constants, resembling the well-known JCA names, are also available in ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[5]"}, {"position_id": 3048, "txt": "SignatureAlgorithm", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[6]"}, {"position_id": 3050, "txt": "'s companion.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[21]/code[6]"}]}, "tags": [], "label": "content", "web_segment_id": 76, "global_sentence_id": 135, "edu_l1_label": "IOS"}, {"txt": "As an example, here's how to verify a basic signature using a public key:", "language": "english", "position": {"atoms": [{"position_id": 3052, "txt": "As an example, here's how to verify a basic signature using a public key:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[22]"}]}, "tags": [], "label": "content", "web_segment_id": 77, "global_sentence_id": 136, "edu_l1_label": "IOS"}, {"txt": "val publicKey:", "language": "english", "position": {"atoms": [{"position_id": 3054, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[1]"}, {"position_id": 3056, "txt": " publicKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[1]"}, {"position_id": 3058, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[2]"}]}, "tags": [], "label": "code", "web_segment_id": 78, "global_sentence_id": 137, "edu_l1_label": "EDU_O"}, {"txt": "CryptoPublicKey.EC=TODO(\"You have this and trust it.\")val plaintext =\"You want to trust this.\".encodeToByteArray()val signature:", "language": "english", "position": {"atoms": [{"position_id": 3060, "txt": "CryptoPublicKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[3]"}, {"position_id": 3062, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[3]"}, {"position_id": 3064, "txt": "EC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[4]"}, {"position_id": 3066, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[5]"}, {"position_id": 3068, "txt": "TODO", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[6]"}, {"position_id": 3070, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[6]"}, {"position_id": 3072, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[7]/span[1]"}, {"position_id": 3074, "txt": "You have this and trust it.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[7]/span[1]"}, {"position_id": 3076, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[7]/span[2]"}, {"position_id": 3078, "txt": ")\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[7]"}, {"position_id": 3080, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[8]"}, {"position_id": 3082, "txt": " plaintext ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[8]"}, {"position_id": 3084, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[9]"}, {"position_id": 3086, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[10]/span[1]"}, {"position_id": 3088, "txt": "You want to trust this.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[10]/span[1]"}, {"position_id": 3090, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[10]/span[2]"}, {"position_id": 3092, "txt": ".encodeToByteArray()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[10]"}, {"position_id": 3094, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[11]"}, {"position_id": 3096, "txt": " signature", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[11]"}, {"position_id": 3098, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[12]"}]}, "tags": [], "label": "code", "web_segment_id": 78, "global_sentence_id": 138, "edu_l1_label": "EDU_O"}, {"txt": "CryptoSignature=TODO(\"This was sent alongside the plaintext.\")val verifier =SignatureAlgorithm.ECDSAwithSHA256.verifierFor(publicKey).getOrThrow()val isValid = verifier.verify(plaintext, signature).isSuccessprintln(\"Looks good?", "language": "english", "position": {"atoms": [{"position_id": 3100, "txt": "CryptoSignature", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[13]"}, {"position_id": 3102, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[14]"}, {"position_id": 3104, "txt": "TODO", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[15]"}, {"position_id": 3106, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[15]"}, {"position_id": 3108, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[16]/span[1]"}, {"position_id": 3110, "txt": "This was sent alongside the plaintext.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[16]/span[1]"}, {"position_id": 3112, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[16]/span[2]"}, {"position_id": 3114, "txt": ")\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[16]"}, {"position_id": 3116, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[17]"}, {"position_id": 3118, "txt": " verifier ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[17]"}, {"position_id": 3120, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[18]"}, {"position_id": 3122, "txt": "SignatureAlgorithm", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[19]"}, {"position_id": 3124, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[19]"}, {"position_id": 3126, "txt": "ECDSAwithSHA256", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[20]"}, {"position_id": 3128, "txt": ".verifierFor(publicKey).getOrThrow()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[20]"}, {"position_id": 3130, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[21]"}, {"position_id": 3132, "txt": " isValid ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[21]"}, {"position_id": 3134, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[22]"}, {"position_id": 3136, "txt": " verifier.verify(plaintext, signature).isSuccess\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[22]"}, {"position_id": 3138, "txt": "println", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[23]"}, {"position_id": 3140, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[23]"}, {"position_id": 3142, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[24]/span[1]"}, {"position_id": 3144, "txt": "Looks good?", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[24]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 78, "global_sentence_id": 139, "edu_l1_label": "EDU_O"}, {"txt": " $isValid\")", "language": "english", "position": {"atoms": [{"position_id": 3145, "txt": " ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[24]/span[1]"}, {"position_id": 3147, "txt": "$isValid", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[24]/span[2]"}, {"position_id": 3149, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[24]/span[3]"}, {"position_id": 3151, "txt": ")", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[19]/pre/span[24]"}]}, "tags": [], "label": "code", "web_segment_id": 78, "global_sentence_id": 140, "edu_l1_label": "EDU_O"}, {"txt": "Or here's how to validate a X.509 certificate:", "language": "english", "position": {"atoms": [{"position_id": 3153, "txt": "Or here's how to validate a X.509 certificate:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[23]"}]}, "tags": [], "label": "content", "web_segment_id": 80, "global_sentence_id": 141, "edu_l1_label": "IOS"}, {"txt": "val rootCert:", "language": "english", "position": {"atoms": [{"position_id": 3155, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[1]"}, {"position_id": 3157, "txt": " rootCert", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[1]"}, {"position_id": 3159, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[2]"}]}, "tags": [], "label": "code", "web_segment_id": 81, "global_sentence_id": 142, "edu_l1_label": "EDU_O"}, {"txt": "X509Certificate=TODO(\"You have this and trust it.\")val untrustedCert:", "language": "english", "position": {"atoms": [{"position_id": 3161, "txt": "X509Certificate", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[3]"}, {"position_id": 3163, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[4]"}, {"position_id": 3165, "txt": "TODO", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[5]"}, {"position_id": 3167, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[5]"}, {"position_id": 3169, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[6]/span[1]"}, {"position_id": 3171, "txt": "You have this and trust it.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[6]/span[1]"}, {"position_id": 3173, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[6]/span[2]"}, {"position_id": 3175, "txt": ")\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[6]"}, {"position_id": 3177, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[7]"}, {"position_id": 3179, "txt": " untrustedCert", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[7]"}, {"position_id": 3181, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[8]"}]}, "tags": [], "label": "code", "web_segment_id": 81, "global_sentence_id": 143, "edu_l1_label": "EDU_O"}, {"txt": "X509Certificate=TODO(\"You want to verify that this is trustworthy.\")val verifier = untrustedCert.signatureAlgorithm.verifierFor(rootCert.publicKey).getOrThrow()val plaintext = untrustedCert.tbsCertificate.encodeToDer()val signature = untrustedCert.signatureval isValid = verifier.verify(plaintext, signature).isSuccessprintln(\"Certificate looks trustworthy:", "language": "english", "position": {"atoms": [{"position_id": 3183, "txt": "X509Certificate", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[9]"}, {"position_id": 3185, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[10]"}, {"position_id": 3187, "txt": "TODO", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[11]"}, {"position_id": 3189, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[11]"}, {"position_id": 3191, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[12]/span[1]"}, {"position_id": 3193, "txt": "You want to verify that this is trustworthy.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[12]/span[1]"}, {"position_id": 3195, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[12]/span[2]"}, {"position_id": 3197, "txt": ")\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[12]"}, {"position_id": 3199, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[13]"}, {"position_id": 3201, "txt": " verifier ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[13]"}, {"position_id": 3203, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[14]"}, {"position_id": 3205, "txt": " untrustedCert.signatureAlgorithm.verifierFor(rootCert.publicKey).getOrThrow()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[14]"}, {"position_id": 3207, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[15]"}, {"position_id": 3209, "txt": " plaintext ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[15]"}, {"position_id": 3211, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[16]"}, {"position_id": 3213, "txt": " untrustedCert.tbsCertificate.encodeToDer()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[16]"}, {"position_id": 3215, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[17]"}, {"position_id": 3217, "txt": " signature ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[17]"}, {"position_id": 3219, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[18]"}, {"position_id": 3221, "txt": " untrustedCert.signature\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[18]"}, {"position_id": 3223, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[19]"}, {"position_id": 3225, "txt": " isValid ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[19]"}, {"position_id": 3227, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[20]"}, {"position_id": 3229, "txt": " verifier.verify(plaintext, signature).isSuccess\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[20]"}, {"position_id": 3231, "txt": "println", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[21]"}, {"position_id": 3233, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[21]"}, {"position_id": 3235, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[22]/span[1]"}, {"position_id": 3237, "txt": "Certificate looks trustworthy:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[22]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 81, "global_sentence_id": 144, "edu_l1_label": "EDU_O"}, {"txt": " $isValid\")", "language": "english", "position": {"atoms": [{"position_id": 3238, "txt": " ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[22]/span[1]"}, {"position_id": 3240, "txt": "$isValid", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[22]/span[2]"}, {"position_id": 3242, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[22]/span[3]"}, {"position_id": 3244, "txt": ")", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[20]/pre/span[22]"}]}, "tags": [], "label": "code", "web_segment_id": 81, "global_sentence_id": 145, "edu_l1_label": "EDU_O"}, {"txt": "Platform Verifiers", "language": "english", "position": {"atoms": [{"position_id": 3246, "txt": "Platform Verifiers", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[21]/h4"}]}, "tags": ["h4"], "label": "title3", "web_segment_id": 83, "global_sentence_id": 146, "edu_l1_label": "IOS"}, {"txt": "Not every platform supports every algorithm parameter.", "language": "english", "position": {"atoms": [{"position_id": 3248, "txt": "Not every platform supports every algorithm parameter.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[24]"}]}, "tags": [], "label": "content", "web_segment_id": 84, "global_sentence_id": 147, "edu_l1_label": "IOS"}, {"txt": " For example, iOS does not support raw ECDSA verification (of pre-hashed data) for curve P-521.", "language": "english", "position": {"atoms": [{"position_id": 3249, "txt": " For example, iOS does not support raw ECDSA verification (of pre-hashed data) for curve P-521.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[24]"}]}, "tags": [], "label": "content", "web_segment_id": 84, "global_sentence_id": 148, "edu_l1_label": "IOS"}, {"txt": " If you use .verifierFor, and this happens, the library will transparently substitute a pure-Kotlin implementation.", "language": "english", "position": {"atoms": [{"position_id": 3250, "txt": " If you use ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[24]"}, {"position_id": 3252, "txt": ".verifierFor", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[24]/code"}, {"position_id": 3254, "txt": ", and this happens, the library will transparently substitute a pure-Kotlin implementation.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[24]/code"}]}, "tags": [], "label": "content", "web_segment_id": 84, "global_sentence_id": 149, "edu_l1_label": "IOS"}, {"txt": "If this is not desired, you can specifically enforce a platform verifier by using .platformVerifierFor.", "language": "english", "position": {"atoms": [{"position_id": 3256, "txt": "If this is not desired, you can specifically enforce a platform verifier by using ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[25]"}, {"position_id": 3258, "txt": ".platformVerifierFor", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[25]/code"}, {"position_id": 3260, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[25]/code"}]}, "tags": [], "label": "content", "web_segment_id": 85, "global_sentence_id": 150, "edu_l1_label": "IOS"}, {"txt": " That way, the library will only ever act as a proxy to platform APIs (JCA, CryptoKit, etc.), and will not use its own implementations.", "language": "english", "position": {"atoms": [{"position_id": 3261, "txt": " That way, the library will only ever act as a proxy to platform APIs (JCA, CryptoKit, etc.), and will not use its own implementations.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[25]/code"}]}, "tags": [], "label": "content", "web_segment_id": 85, "global_sentence_id": 151, "edu_l1_label": "IOS"}, {"txt": "You can also further configure the verifier, for example to specify the provider to use on the JVM.", "language": "english", "position": {"atoms": [{"position_id": 3263, "txt": "You can also further configure the verifier, for example to specify the ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[26]"}, {"position_id": 3265, "txt": "provider", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[26]/code[1]"}, {"position_id": 3267, "txt": " to use on the JVM.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[26]/code[1]"}]}, "tags": [], "label": "content", "web_segment_id": 86, "global_sentence_id": 152, "edu_l1_label": "IOS"}, {"txt": " To do this, pass a DSL configuration lambda to verifierFor/platformVerifierFor.", "language": "english", "position": {"atoms": [{"position_id": 3268, "txt": " To do this, pass a DSL configuration lambda to ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[26]/code[1]"}, {"position_id": 3270, "txt": "verifierFor", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[26]/code[2]"}, {"position_id": 3272, "txt": "/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[26]/code[2]"}, {"position_id": 3274, "txt": "platformVerifierFor", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[26]/code[3]"}, {"position_id": 3276, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[26]/code[3]"}]}, "tags": [], "label": "content", "web_segment_id": 86, "global_sentence_id": 153, "edu_l1_label": "IOS"}, {"txt": "val publicKey:", "language": "english", "position": {"atoms": [{"position_id": 3278, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[1]"}, {"position_id": 3280, "txt": " publicKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[1]"}, {"position_id": 3282, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[2]"}]}, "tags": [], "label": "code", "web_segment_id": 87, "global_sentence_id": 154, "edu_l1_label": "EDU_O"}, {"txt": "CryptoPublicKey.EC=TODO(\"You have this.\")val plaintext:", "language": "english", "position": {"atoms": [{"position_id": 3284, "txt": "CryptoPublicKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[3]"}, {"position_id": 3286, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[3]"}, {"position_id": 3288, "txt": "EC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[4]"}, {"position_id": 3290, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[5]"}, {"position_id": 3292, "txt": "TODO", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[6]"}, {"position_id": 3294, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[6]"}, {"position_id": 3296, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[7]/span[1]"}, {"position_id": 3298, "txt": "You have this.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[7]/span[1]"}, {"position_id": 3300, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[7]/span[2]"}, {"position_id": 3302, "txt": ")\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[7]"}, {"position_id": 3304, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[8]"}, {"position_id": 3306, "txt": " plaintext", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[8]"}, {"position_id": 3308, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[9]"}]}, "tags": [], "label": "code", "web_segment_id": 87, "global_sentence_id": 155, "edu_l1_label": "EDU_O"}, {"txt": "ByteArray=TODO(\"This is the message.\")val signature:", "language": "english", "position": {"atoms": [{"position_id": 3310, "txt": "ByteArray", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[10]"}, {"position_id": 3312, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[11]"}, {"position_id": 3314, "txt": "TODO", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[12]"}, {"position_id": 3316, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[12]"}, {"position_id": 3318, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[13]/span[1]"}, {"position_id": 3320, "txt": "This is the message.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[13]/span[1]"}, {"position_id": 3322, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[13]/span[2]"}, {"position_id": 3324, "txt": ")\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[13]"}, {"position_id": 3326, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[14]"}, {"position_id": 3328, "txt": " signature", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[14]"}, {"position_id": 3330, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[15]"}]}, "tags": [], "label": "code", "web_segment_id": 87, "global_sentence_id": 156, "edu_l1_label": "EDU_O"}, {"txt": "CryptoSignature.EC=TODO(\"And this is the signature.\")    val verifier =SignatureAlgorithm.ECDSAwithSHA512    .platformVerifierFor(publicKey) { provider =\"BC\"} /* specify BouncyCastle */    .getOrThrow()val isValid = verifier.verify(plaintext, signature).isSuccessprintln(\"Is it trustworthy?", "language": "english", "position": {"atoms": [{"position_id": 3332, "txt": "CryptoSignature", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[16]"}, {"position_id": 3334, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[16]"}, {"position_id": 3336, "txt": "EC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[17]"}, {"position_id": 3338, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[18]"}, {"position_id": 3340, "txt": "TODO", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[19]"}, {"position_id": 3342, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[19]"}, {"position_id": 3344, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[20]/span[1]"}, {"position_id": 3346, "txt": "And this is the signature.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[20]/span[1]"}, {"position_id": 3348, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[20]/span[2]"}, {"position_id": 3350, "txt": ")\n    \n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[20]"}, {"position_id": 3352, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[21]"}, {"position_id": 3354, "txt": " verifier ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[21]"}, {"position_id": 3356, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[22]"}, {"position_id": 3358, "txt": "SignatureAlgorithm", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[23]"}, {"position_id": 3360, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[23]"}, {"position_id": 3362, "txt": "ECDSAwithSHA512", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[24]"}, {"position_id": 3364, "txt": "\n    .platformVerifierFor(publicKey) { provider ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[24]"}, {"position_id": 3366, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[25]"}, {"position_id": 3368, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[26]/span[1]"}, {"position_id": 3370, "txt": "BC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[26]/span[1]"}, {"position_id": 3372, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[26]/span[2]"}, {"position_id": 3374, "txt": "} ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[26]"}, {"position_id": 3376, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[27]/span[1]"}, {"position_id": 3378, "txt": " specify BouncyCastle ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[27]/span[1]"}, {"position_id": 3380, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[27]/span[2]"}, {"position_id": 3382, "txt": "\n    .getOrThrow()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[27]"}, {"position_id": 3384, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[28]"}, {"position_id": 3386, "txt": " isValid ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[28]"}, {"position_id": 3388, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[29]"}, {"position_id": 3390, "txt": " verifier.verify(plaintext, signature).isSuccess\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[29]"}, {"position_id": 3392, "txt": "println", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[30]"}, {"position_id": 3394, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[30]"}, {"position_id": 3396, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[31]/span[1]"}, {"position_id": 3398, "txt": "Is it trustworthy?", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[31]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 87, "global_sentence_id": 157, "edu_l1_label": "EDU_O"}, {"txt": " $isValid\")", "language": "english", "position": {"atoms": [{"position_id": 3399, "txt": " ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[31]/span[1]"}, {"position_id": 3401, "txt": "$isValid", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[31]/span[2]"}, {"position_id": 3403, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[31]/span[3]"}, {"position_id": 3405, "txt": ")", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[22]/pre/span[31]"}]}, "tags": [], "label": "code", "web_segment_id": 87, "global_sentence_id": 158, "edu_l1_label": "EDU_O"}, {"txt": "Symmetric Encryption", "language": "english", "position": {"atoms": [{"position_id": 3407, "txt": "Symmetric Encryption", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[23]/h2"}]}, "tags": ["h2"], "label": "title1", "web_segment_id": 89, "global_sentence_id": 159, "edu_l1_label": "BOS"}, {"txt": "We currently support ChaCha20-Poly1503, AES-CBC, AES-GCM, AES-KW, AES-ECB, and a very flexible flavour of AES-CBC-HMAC.", "language": "english", "position": {"atoms": [{"position_id": 3409, "txt": "We currently support ChaCha20-Poly1503, AES-CBC, AES-GCM, AES-KW, AES-ECB, and a very flexible flavour of AES-CBC-HMAC.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[27]"}]}, "tags": [], "label": "content", "web_segment_id": 90, "global_sentence_id": 160, "edu_l1_label": "IOS"}, {"txt": " Every symmetric operation is rooted in an algorithm, since the algorithm defines characteristics, such as nonce requirement, authentication capabilities, etc.", "language": "english", "position": {"atoms": [{"position_id": 3410, "txt": " Every symmetric operation is rooted in an algorithm, since the algorithm defines characteristics, such as nonce requirement, authentication capabilities, etc.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[27]"}]}, "tags": [], "label": "content", "web_segment_id": 90, "global_sentence_id": 161, "edu_l1_label": "IOS"}, {"txt": " Hence, you need to know the algorithm.", "language": "english", "position": {"atoms": [{"position_id": 3411, "txt": " Hence, you need to know the algorithm.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[27]"}]}, "tags": [], "label": "content", "web_segment_id": 90, "global_sentence_id": 162, "edu_l1_label": "IOS"}, {"txt": "Baseline Usage", "language": "english", "position": {"atoms": [{"position_id": 3413, "txt": "Baseline Usage", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[24]/h3"}]}, "tags": ["h3"], "label": "title2", "web_segment_id": 91, "global_sentence_id": 163, "edu_l1_label": "IOS"}, {"txt": "Once you know decided on an encryption algorithm, encryption itself is straight-forward:", "language": "english", "position": {"atoms": [{"position_id": 3415, "txt": "Once you know decided on an encryption algorithm, encryption itself is straight-forward:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[28]"}]}, "tags": [], "label": "content", "web_segment_id": 92, "global_sentence_id": 164, "edu_l1_label": "IOS"}, {"txt": "val secret =\"Top Secret\".encodeToByteArray()val secretKey =SymmetricEncryptionAlgorithm.ChaCha20Poly1305.randomKey()val encrypted = secretKey.encrypt(secret).getOrThrow(/*handle error*/)encrypted.decrypt(secretKey).getOrThrow(/*handle error*/) shouldBe secret", "language": "english", "position": {"atoms": [{"position_id": 3417, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[1]"}, {"position_id": 3419, "txt": " secret ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[1]"}, {"position_id": 3421, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[2]"}, {"position_id": 3423, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[3]/span[1]"}, {"position_id": 3425, "txt": "Top Secret", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[3]/span[1]"}, {"position_id": 3427, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[3]/span[2]"}, {"position_id": 3429, "txt": ".encodeToByteArray()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[3]"}, {"position_id": 3431, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[4]"}, {"position_id": 3433, "txt": " secretKey ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[4]"}, {"position_id": 3435, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[5]"}, {"position_id": 3437, "txt": "SymmetricEncryptionAlgorithm", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[6]"}, {"position_id": 3439, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[6]"}, {"position_id": 3441, "txt": "ChaCha20Poly1305", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[7]"}, {"position_id": 3443, "txt": ".randomKey()\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[7]"}, {"position_id": 3445, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[8]"}, {"position_id": 3447, "txt": " encrypted ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[8]"}, {"position_id": 3449, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[9]"}, {"position_id": 3451, "txt": " secretKey.encrypt(secret).getOrThrow(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[9]"}, {"position_id": 3453, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[10]/span[1]"}, {"position_id": 3455, "txt": "handle error", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[10]/span[1]"}, {"position_id": 3457, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[10]/span[2]"}, {"position_id": 3459, "txt": ")\nencrypted.decrypt(secretKey).getOrThrow(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[10]"}, {"position_id": 3461, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[11]/span[1]"}, {"position_id": 3463, "txt": "handle error", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[11]/span[1]"}, {"position_id": 3465, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[11]/span[2]"}, {"position_id": 3467, "txt": ") shouldBe secret", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[25]/pre/span[11]"}]}, "tags": [], "label": "code", "web_segment_id": 93, "global_sentence_id": 165, "edu_l1_label": "EDU_O"}, {"txt": "Encrypted data is always structured and the individual components are easily accessible:", "language": "english", "position": {"atoms": [{"position_id": 3469, "txt": "Encrypted data is always structured and the individual components are easily accessible:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[29]"}]}, "tags": [], "label": "content", "web_segment_id": 95, "global_sentence_id": 166, "edu_l1_label": "IOS"}, {"txt": "val nonce = encrypted.nonceval ciphertext = encrypted.encryptedDataval authTag = encrypted.authTagval keyBytes = secretKey.secretKey.getOrThrow() /*for algorithms with a dedicated MAC key, there's encryptionKey and macKey*/", "language": "english", "position": {"atoms": [{"position_id": 3471, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[1]"}, {"position_id": 3473, "txt": " nonce ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[1]"}, {"position_id": 3475, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[2]"}, {"position_id": 3477, "txt": " encrypted.nonce\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[2]"}, {"position_id": 3479, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[3]"}, {"position_id": 3481, "txt": " ciphertext ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[3]"}, {"position_id": 3483, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[4]"}, {"position_id": 3485, "txt": " encrypted.encryptedData\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[4]"}, {"position_id": 3487, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[5]"}, {"position_id": 3489, "txt": " authTag ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[5]"}, {"position_id": 3491, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[6]"}, {"position_id": 3493, "txt": " encrypted.authTag\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[6]"}, {"position_id": 3495, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[7]"}, {"position_id": 3497, "txt": " keyBytes ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[7]"}, {"position_id": 3499, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[8]"}, {"position_id": 3501, "txt": " secretKey.secretKey.getOrThrow() ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[8]"}, {"position_id": 3503, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[9]/span[1]"}, {"position_id": 3505, "txt": "for algorithms with a dedicated MAC key, there's encryptionKey and macKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[9]/span[1]"}, {"position_id": 3507, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[26]/pre/span[9]/span[2]"}]}, "tags": [], "label": "code", "web_segment_id": 96, "global_sentence_id": 167, "edu_l1_label": "EDU_O"}, {"txt": "Decrypting data received from external sources is also straight-forward:", "language": "english", "position": {"atoms": [{"position_id": 3509, "txt": "Decrypting data received from external sources is also straight-forward:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[30]"}]}, "tags": [], "label": "content", "web_segment_id": 98, "global_sentence_id": 168, "edu_l1_label": "IOS"}, {"txt": "val box = algo.sealedBox.withNonce(nonce).from(ciphertext, authTag).getOrThrow(/*handle error*/)box.decrypt(preSharedKey, /*also pass AAD*/ externalAAD).getOrThrow(/*handle error*/) shouldBe secret//alternatively, pass raw data:", "language": "english", "position": {"atoms": [{"position_id": 3511, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[1]"}, {"position_id": 3513, "txt": " box ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[1]"}, {"position_id": 3515, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[2]"}, {"position_id": 3517, "txt": " algo.sealedBox.withNonce(nonce).from(ciphertext, authTag).getOrThrow(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[2]"}, {"position_id": 3519, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[3]/span[1]"}, {"position_id": 3521, "txt": "handle error", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[3]/span[1]"}, {"position_id": 3523, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[3]/span[2]"}, {"position_id": 3525, "txt": ")\nbox.decrypt(preSharedKey, ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[3]"}, {"position_id": 3527, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[4]/span[1]"}, {"position_id": 3529, "txt": "also pass AAD", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[4]/span[1]"}, {"position_id": 3531, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[4]/span[2]"}, {"position_id": 3533, "txt": " externalAAD).getOrThrow(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[4]"}, {"position_id": 3535, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[5]/span[1]"}, {"position_id": 3537, "txt": "handle error", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[5]/span[1]"}, {"position_id": 3539, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[5]/span[2]"}, {"position_id": 3541, "txt": ") shouldBe secret\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[5]"}, {"position_id": 3543, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[6]/span"}, {"position_id": 3545, "txt": "alternatively, pass raw data:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[6]/span"}]}, "tags": [], "label": "code", "web_segment_id": 99, "global_sentence_id": 169, "edu_l1_label": "EDU_O"}, {"txt": "preSharedKey.decrypt(nonce, ciphertext, authTag, externalAAD).getOrThrow(/*handle error*/) shouldBe secret", "language": "english", "position": {"atoms": [{"position_id": 3547, "txt": "\npreSharedKey.decrypt(nonce, ciphertext, authTag, externalAAD).getOrThrow(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[6]"}, {"position_id": 3549, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[7]/span[1]"}, {"position_id": 3551, "txt": "handle error", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[7]/span[1]"}, {"position_id": 3553, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[7]/span[2]"}, {"position_id": 3555, "txt": ") shouldBe secret", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[27]/pre/span[7]"}]}, "tags": [], "label": "code", "web_segment_id": 99, "global_sentence_id": 170, "edu_l1_label": "EDU_O"}, {"txt": "Custom AES-CBC-HMAC", "language": "english", "position": {"atoms": [{"position_id": 3557, "txt": "Custom AES-CBC-HMAC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[28]/h3"}]}, "tags": ["h3"], "label": "title2", "web_segment_id": 101, "global_sentence_id": 171, "edu_l1_label": "IOS"}, {"txt": "Supreme supports AES-CBC with customizable HMAC to provide AEAD.", "language": "english", "position": {"atoms": [{"position_id": 3559, "txt": "Supreme supports AES-CBC with customizable HMAC to provide AEAD.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[31]"}]}, "tags": [], "label": "content", "web_segment_id": 102, "global_sentence_id": 172, "edu_l1_label": "IOS"}, {"txt": " This is supported across all Supreme targets and works as follows:", "language": "english", "position": {"atoms": [{"position_id": 3560, "txt": " This is supported across all ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[31]"}, {"position_id": 3562, "txt": "Supreme", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[31]/em"}, {"position_id": 3564, "txt": " targets and works as follows:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[31]/em"}]}, "tags": ["em"], "label": "content", "web_segment_id": 102, "global_sentence_id": 173, "edu_l1_label": "IOS"}, {"txt": "val payload =\"More matter, with less art!\".encodeToByteArray()//define algorithm parametersval algorithm =SymmetricEncryptionAlgorithm.AES_192.CBC.HMAC.SHA_512//with a custom HMAC input calculation function  .Custom(32.bytes) { ciphertext, iv, aad ->//A shorter version of RFC 7518    aad + iv + ciphertext + aad.size.encodeTo4Bytes()  }//any size is fine, really.", "language": "english", "position": {"atoms": [{"position_id": 3566, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[1]"}, {"position_id": 3568, "txt": " payload ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[1]"}, {"position_id": 3570, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[2]"}, {"position_id": 3572, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[3]/span[1]"}, {"position_id": 3574, "txt": "More matter, with less art!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[3]/span[1]"}, {"position_id": 3576, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[3]/span[2]"}, {"position_id": 3578, "txt": ".encodeToByteArray()\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[3]"}, {"position_id": 3580, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[4]/span"}, {"position_id": 3582, "txt": "define algorithm parameters", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[4]/span"}, {"position_id": 3584, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[5]"}, {"position_id": 3586, "txt": " algorithm ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[5]"}, {"position_id": 3588, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[6]"}, {"position_id": 3590, "txt": "SymmetricEncryptionAlgorithm", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[7]"}, {"position_id": 3592, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[7]"}, {"position_id": 3594, "txt": "AES_192", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[8]"}, {"position_id": 3596, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[8]"}, {"position_id": 3598, "txt": "CBC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[9]"}, {"position_id": 3600, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[9]"}, {"position_id": 3602, "txt": "HMAC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[10]"}, {"position_id": 3604, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[10]"}, {"position_id": 3606, "txt": "SHA_512", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[11]"}, {"position_id": 3608, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[12]/span"}, {"position_id": 3610, "txt": "with a custom HMAC input calculation function", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[12]/span"}, {"position_id": 3612, "txt": "\n  .", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[12]"}, {"position_id": 3614, "txt": "Custom", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[13]"}, {"position_id": 3616, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[13]"}, {"position_id": 3618, "txt": "32", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[14]"}, {"position_id": 3620, "txt": ".bytes) { ciphertext, iv, aad ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[14]"}, {"position_id": 3622, "txt": "->", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[15]"}, {"position_id": 3624, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[16]/span"}, {"position_id": 3626, "txt": "A shorter version of RFC 7518", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[16]/span"}, {"position_id": 3628, "txt": "\n    aad ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[16]"}, {"position_id": 3630, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[17]"}, {"position_id": 3632, "txt": " iv ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[17]"}, {"position_id": 3634, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[18]"}, {"position_id": 3636, "txt": " ciphertext ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[18]"}, {"position_id": 3638, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[19]"}, {"position_id": 3640, "txt": " aad.size.encodeTo4Bytes()\n  }\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[19]"}, {"position_id": 3642, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[20]/span"}, {"position_id": 3644, "txt": "any size is fine, really.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[20]/span"}]}, "tags": [], "label": "code", "web_segment_id": 103, "global_sentence_id": 174, "edu_l1_label": "EDU_O"}, {"txt": " omitting the override generates a mac key of the same size as the encryption keyval key = algorithm.randomKey(macKeyLength =32.bit)val aad =Clock.System.now().toString().encodeToByteArray()val sealedBox = key.encrypt(  payload,  authenticatedData = aad,).getOrThrow(/*handle error*/)//because everything is structured, decryption is simpleval recovered = sealedBox.decrypt(key, aad).getOrThrow(/*handle error*/)recovered shouldBe payload //success!//we can also manually construct the sealed box, if we know the algorithm:", "language": "english", "position": {"atoms": [{"position_id": 3645, "txt": " omitting the override generates a mac key of the same size as the encryption key", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[20]/span"}, {"position_id": 3647, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[21]"}, {"position_id": 3649, "txt": " key ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[21]"}, {"position_id": 3651, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[22]"}, {"position_id": 3653, "txt": " algorithm.randomKey(macKeyLength ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[22]"}, {"position_id": 3655, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[23]"}, {"position_id": 3657, "txt": "32", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[24]"}, {"position_id": 3659, "txt": ".bit)\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[24]"}, {"position_id": 3661, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[25]"}, {"position_id": 3663, "txt": " aad ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[25]"}, {"position_id": 3665, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[26]"}, {"position_id": 3667, "txt": "Clock", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[27]"}, {"position_id": 3669, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[27]"}, {"position_id": 3671, "txt": "System", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[28]"}, {"position_id": 3673, "txt": ".now().toString().encodeToByteArray()\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[28]"}, {"position_id": 3675, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[29]"}, {"position_id": 3677, "txt": " sealedBox ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[29]"}, {"position_id": 3679, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[30]"}, {"position_id": 3681, "txt": " key.encrypt(\n  payload,\n  authenticatedData ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[30]"}, {"position_id": 3683, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[31]"}, {"position_id": 3685, "txt": " aad,\n).getOrThrow(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[31]"}, {"position_id": 3687, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[32]/span[1]"}, {"position_id": 3689, "txt": "handle error", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[32]/span[1]"}, {"position_id": 3691, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[32]/span[2]"}, {"position_id": 3693, "txt": ")\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[32]"}, {"position_id": 3695, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[33]/span"}, {"position_id": 3697, "txt": "because everything is structured, decryption is simple", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[33]/span"}, {"position_id": 3699, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[34]"}, {"position_id": 3701, "txt": " recovered ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[34]"}, {"position_id": 3703, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[35]"}, {"position_id": 3705, "txt": " sealedBox.decrypt(key, aad).getOrThrow(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[35]"}, {"position_id": 3707, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[36]/span[1]"}, {"position_id": 3709, "txt": "handle error", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[36]/span[1]"}, {"position_id": 3711, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[36]/span[2]"}, {"position_id": 3713, "txt": ")\n\nrecovered shouldBe payload ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[36]"}, {"position_id": 3715, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[37]/span"}, {"position_id": 3717, "txt": "success!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[37]/span"}, {"position_id": 3719, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[38]/span"}, {"position_id": 3721, "txt": "we can also manually construct the sealed box, if we know the algorithm:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[38]/span"}]}, "tags": [], "label": "code", "web_segment_id": 103, "global_sentence_id": 175, "edu_l1_label": "EDU_O"}, {"txt": "val reconstructed = algorithm.sealedBox.withNonce(sealedBox.nonce).from(  encryptedData = sealedBox.encryptedData, /*Could also access authenticatedCipherText*/  authTag = sealedBox.authTag,).getOrThrow()val manuallyRecovered = reconstructed.decrypt(  key,  authenticatedData = aad,).getOrThrow(/*handle error*/)manuallyRecovered shouldBe payload //great success!//if we just know algorithm and key bytes, we can also construct a symmetric keyreconstructed.decrypt(  algorithm.keyFrom(key.encryptionKey.getOrThrow(), key.macKey.getOrThrow()).getOrThrow(/*handle error*/),  aad).getOrThrow(/*handle error*/) shouldBe payload //greatest success!", "language": "english", "position": {"atoms": [{"position_id": 3723, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[39]"}, {"position_id": 3725, "txt": " reconstructed ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[39]"}, {"position_id": 3727, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[40]"}, {"position_id": 3729, "txt": " algorithm.sealedBox.withNonce(sealedBox.nonce).from(\n  encryptedData ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[40]"}, {"position_id": 3731, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[41]"}, {"position_id": 3733, "txt": " sealedBox.encryptedData, ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[41]"}, {"position_id": 3735, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[42]/span[1]"}, {"position_id": 3737, "txt": "Could also access authenticatedCipherText", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[42]/span[1]"}, {"position_id": 3739, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[42]/span[2]"}, {"position_id": 3741, "txt": "\n  authTag ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[42]"}, {"position_id": 3743, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[43]"}, {"position_id": 3745, "txt": " sealedBox.authTag,\n).getOrThrow()\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[43]"}, {"position_id": 3747, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[44]"}, {"position_id": 3749, "txt": " manuallyRecovered ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[44]"}, {"position_id": 3751, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[45]"}, {"position_id": 3753, "txt": " reconstructed.decrypt(\n  key,\n  authenticatedData ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[45]"}, {"position_id": 3755, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[46]"}, {"position_id": 3757, "txt": " aad,\n).getOrThrow(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[46]"}, {"position_id": 3759, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[47]/span[1]"}, {"position_id": 3761, "txt": "handle error", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[47]/span[1]"}, {"position_id": 3763, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[47]/span[2]"}, {"position_id": 3765, "txt": ")\n\nmanuallyRecovered shouldBe payload ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[47]"}, {"position_id": 3767, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[48]/span"}, {"position_id": 3769, "txt": "great success!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[48]/span"}, {"position_id": 3771, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[49]/span"}, {"position_id": 3773, "txt": "if we just know algorithm and key bytes, we can also construct a symmetric key", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[49]/span"}, {"position_id": 3775, "txt": "\nreconstructed.decrypt(\n  algorithm.keyFrom(key.encryptionKey.getOrThrow(), key.macKey.getOrThrow()).getOrThrow(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[49]"}, {"position_id": 3777, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[50]/span[1]"}, {"position_id": 3779, "txt": "handle error", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[50]/span[1]"}, {"position_id": 3781, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[50]/span[2]"}, {"position_id": 3783, "txt": "),\n  aad\n).getOrThrow(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[50]"}, {"position_id": 3785, "txt": "/*", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[51]/span[1]"}, {"position_id": 3787, "txt": "handle error", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[51]/span[1]"}, {"position_id": 3789, "txt": "*/", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[51]/span[2]"}, {"position_id": 3791, "txt": ") shouldBe payload ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[51]"}, {"position_id": 3793, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[52]/span"}, {"position_id": 3795, "txt": "greatest success!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[29]/pre/span[52]/span"}]}, "tags": [], "label": "code", "web_segment_id": 103, "global_sentence_id": 176, "edu_l1_label": "EDU_O"}, {"txt": "ASN.1 Demo Reel", "language": "english", "position": {"atoms": [{"position_id": 3797, "txt": "ASN.1 Demo Reel", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[30]/h2"}]}, "tags": ["h2"], "label": "title1", "web_segment_id": 105, "global_sentence_id": 177, "edu_l1_label": "BOS"}, {"txt": "Classes like CryptoPublicKey, X509Certificate, Pkcs10CertificationRequest, etc.", "language": "english", "position": {"atoms": [{"position_id": 3799, "txt": "Classes like ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]"}, {"position_id": 3801, "txt": "CryptoPublicKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[1]"}, {"position_id": 3803, "txt": ", ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[1]"}, {"position_id": 3805, "txt": "X509Certificate", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[2]"}, {"position_id": 3807, "txt": ", ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[2]"}, {"position_id": 3809, "txt": "Pkcs10CertificationRequest", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[3]"}, {"position_id": 3811, "txt": ", etc.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[3]"}]}, "tags": [], "label": "content", "web_segment_id": 106, "global_sentence_id": 178, "edu_l1_label": "IOS"}, {"txt": " all implement Asn1Encodable and their respective companions implement Asn1Decodable.", "language": "english", "position": {"atoms": [{"position_id": 3812, "txt": " all implement ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[3]"}, {"position_id": 3814, "txt": "Asn1Encodable", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[4]"}, {"position_id": 3816, "txt": " and their respective companions implement ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[4]"}, {"position_id": 3818, "txt": "Asn1Decodable", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[5]"}, {"position_id": 3820, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[5]"}]}, "tags": [], "label": "content", "web_segment_id": 106, "global_sentence_id": 179, "edu_l1_label": "IOS"}, {"txt": " Which means that you can do things like parsing and examining certificates, creating CSRs, or transferring key material.", "language": "english", "position": {"atoms": [{"position_id": 3821, "txt": " Which means that you can do things like parsing and examining certificates, creating CSRs, or transferring key material.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[32]/code[5]"}]}, "tags": [], "label": "content", "web_segment_id": 106, "global_sentence_id": 180, "edu_l1_label": "IOS"}, {"txt": "Certificate Parsing", "language": "english", "position": {"atoms": [{"position_id": 3823, "txt": "Certificate Parsing", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[31]/h3"}]}, "tags": ["h3"], "label": "title2", "web_segment_id": 107, "global_sentence_id": 181, "edu_l1_label": "IOS"}, {"txt": "val cert =X509Certificate.decodeFromDer(certBytes)when (val pk = cert.publicKey) {    isCryptoPublicKey.EC->println(        \"Certificate with serial no. ${            cert.tbsCertificate.serialNumber        } contains an EC public key using curve ${pk.curve}\"    )    isCryptoPublicKey.RSA->println(        \"Certificate with serial no. ${            cert.tbsCertificate.serialNumber        } contains a ${pk.bits.number} bit RSA public key\"    )}println(\"The full certificate is:", "language": "english", "position": {"atoms": [{"position_id": 3825, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[1]"}, {"position_id": 3827, "txt": " cert ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[1]"}, {"position_id": 3829, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[2]"}, {"position_id": 3831, "txt": "X509Certificate", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[3]"}, {"position_id": 3833, "txt": ".decodeFromDer(certBytes)\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[3]"}, {"position_id": 3835, "txt": "when", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[4]"}, {"position_id": 3837, "txt": " (", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[4]"}, {"position_id": 3839, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[5]"}, {"position_id": 3841, "txt": " pk ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[5]"}, {"position_id": 3843, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[6]"}, {"position_id": 3845, "txt": " cert.publicKey) {\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[6]"}, {"position_id": 3847, "txt": "is", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[7]"}, {"position_id": 3849, "txt": "CryptoPublicKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[8]"}, {"position_id": 3851, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[8]"}, {"position_id": 3853, "txt": "EC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[9]"}, {"position_id": 3855, "txt": "->", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[10]"}, {"position_id": 3857, "txt": "println", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[11]"}, {"position_id": 3859, "txt": "(\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[11]"}, {"position_id": 3861, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[12]/span[1]"}, {"position_id": 3863, "txt": "Certificate with serial no. ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[12]/span[1]"}, {"position_id": 3865, "txt": "${", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[12]/span[2]"}, {"position_id": 3867, "txt": "            cert.tbsCertificate.serialNumber", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[13]/span"}, {"position_id": 3869, "txt": "        }", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[14]/span[1]"}, {"position_id": 3871, "txt": " contains an EC public key using curve ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[14]/span[1]"}, {"position_id": 3873, "txt": "${pk.curve}", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[14]/span[2]"}, {"position_id": 3875, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[14]/span[3]"}, {"position_id": 3877, "txt": "\n    )\n\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[14]"}, {"position_id": 3879, "txt": "is", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[15]"}, {"position_id": 3881, "txt": "CryptoPublicKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[16]"}, {"position_id": 3883, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[16]"}, {"position_id": 3885, "txt": "RSA", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[17]"}, {"position_id": 3887, "txt": "->", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[18]"}, {"position_id": 3889, "txt": "println", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[19]"}, {"position_id": 3891, "txt": "(\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[19]"}, {"position_id": 3893, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[20]/span[1]"}, {"position_id": 3895, "txt": "Certificate with serial no. ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[20]/span[1]"}, {"position_id": 3897, "txt": "${", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[20]/span[2]"}, {"position_id": 3899, "txt": "            cert.tbsCertificate.serialNumber", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[21]/span"}, {"position_id": 3901, "txt": "        }", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[22]/span[1]"}, {"position_id": 3903, "txt": " contains a ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[22]/span[1]"}, {"position_id": 3905, "txt": "${pk.bits.number}", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[22]/span[2]"}, {"position_id": 3907, "txt": " bit RSA public key", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[22]/span[2]"}, {"position_id": 3909, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[22]/span[3]"}, {"position_id": 3911, "txt": "\n    )\n}\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[22]"}, {"position_id": 3913, "txt": "println", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[23]"}, {"position_id": 3915, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[23]"}, {"position_id": 3917, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[24]/span[1]"}, {"position_id": 3919, "txt": "The full certificate is:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[24]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 108, "global_sentence_id": 182, "edu_l1_label": "EDU_O"}, {"txt": "\\n${Json { prettyPrint =true }.encodeToString(cert)}\")println(\"Re-encoding it produces the same bytes?", "language": "english", "position": {"atoms": [{"position_id": 3921, "txt": "\\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[24]/span[2]"}, {"position_id": 3923, "txt": "${", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[24]/span[3]"}, {"position_id": 3925, "txt": "Json", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[24]/span[3]/span[1]"}, {"position_id": 3927, "txt": " { prettyPrint ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[24]/span[3]/span[1]"}, {"position_id": 3929, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[24]/span[3]/span[2]"}, {"position_id": 3931, "txt": "true", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[24]/span[3]/span[3]"}, {"position_id": 3933, "txt": " }.encodeToString(cert)}", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[24]/span[3]/span[3]"}, {"position_id": 3935, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[24]/span[4]"}, {"position_id": 3937, "txt": ")\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[24]"}, {"position_id": 3939, "txt": "println", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[25]"}, {"position_id": 3941, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[25]"}, {"position_id": 3943, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[26]/span[1]"}, {"position_id": 3945, "txt": "Re-encoding it produces the same bytes?", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[26]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 108, "global_sentence_id": 183, "edu_l1_label": "EDU_O"}, {"txt": " ${cert.encodeToDer() contentEquals certBytes}\")", "language": "english", "position": {"atoms": [{"position_id": 3946, "txt": " ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[26]/span[1]"}, {"position_id": 3948, "txt": "${cert.encodeToDer() contentEquals certBytes}", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[26]/span[2]"}, {"position_id": 3950, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[26]/span[3]"}, {"position_id": 3952, "txt": ")", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[32]/pre/span[26]"}]}, "tags": [], "label": "code", "web_segment_id": 108, "global_sentence_id": 184, "edu_l1_label": "EDU_O"}, {"txt": "Which produces the following output:", "language": "english", "position": {"atoms": [{"position_id": 3954, "txt": "Which produces the following output:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[33]"}]}, "tags": [], "label": "content", "web_segment_id": 110, "global_sentence_id": 185, "edu_l1_label": "IOS"}, {"txt": "Certificate with serial no. 19821EDCA68C59CF contains an EC public key using curve SECP_256_R_1", "language": "english", "position": {"atoms": [{"position_id": 3956, "txt": "Certificate with serial no. 19821EDCA68C59CF contains an EC public key using curve SECP_256_R_1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/blockquote[1]/p[1]"}]}, "tags": [], "label": "content", "web_segment_id": 111, "global_sentence_id": 186, "edu_l1_label": "IOS"}, {"txt": "The full certificate is:", "language": "english", "position": {"atoms": [{"position_id": 3958, "txt": "The full certificate is:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/blockquote[1]/p[2]"}]}, "tags": [], "label": "content", "web_segment_id": 112, "global_sentence_id": 187, "edu_l1_label": "IOS"}, {"txt": "{ \"tbsCertificate\":", "language": "english", "position": {"atoms": [{"position_id": 3960, "txt": "{ \"tbsCertificate\":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/summary"}]}, "tags": [], "label": "code", "web_segment_id": 31, "global_sentence_id": 188, "edu_l1_label": "EDU_O"}, {"txt": " {…", "language": "english", "position": {"atoms": [{"position_id": 3961, "txt": " {…", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/summary"}]}, "tags": [], "label": "code", "web_segment_id": 31, "global_sentence_id": 189, "edu_l1_label": "EDU_O"}, {"txt": "{  \"tbsCertificate\":", "language": "english", "position": {"atoms": [{"position_id": 3963, "txt": "{\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre"}, {"position_id": 3965, "txt": "\"tbsCertificate\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[1]"}, {"position_id": 3967, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 190, "edu_l1_label": "EDU_O"}, {"txt": " {    \"serialNumber\": \"", "language": "english", "position": {"atoms": [{"position_id": 3968, "txt": " {\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[1]"}, {"position_id": 3970, "txt": "\"serialNumber\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[2]"}, {"position_id": 3972, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[2]"}, {"position_id": 3974, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[3]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 191, "edu_l1_label": "EDU_O"}, {"txt": "GYIe3KaMWc8=\",    \"signatureAlgorithm\": \"", "language": "english", "position": {"atoms": [{"position_id": 3976, "txt": "GYIe3KaMWc8=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[3]/span[1]"}, {"position_id": 3978, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[3]/span[2]"}, {"position_id": 3980, "txt": ",\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[3]"}, {"position_id": 3982, "txt": "\"signatureAlgorithm\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[4]"}, {"position_id": 3984, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[4]"}, {"position_id": 3986, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[5]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 192, "edu_l1_label": "EDU_O"}, {"txt": "ES384\",    \"issuerName\":", "language": "english", "position": {"atoms": [{"position_id": 3988, "txt": "ES384", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[5]/span[1]"}, {"position_id": 3990, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[5]/span[2]"}, {"position_id": 3992, "txt": ",\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[5]"}, {"position_id": 3994, "txt": "\"issuerName\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[6]"}, {"position_id": 3996, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[6]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 193, "edu_l1_label": "EDU_O"}, {"txt": " [      {        \"type\": \"", "language": "english", "position": {"atoms": [{"position_id": 3997, "txt": " [\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[6]"}, {"position_id": 3999, "txt": "\"type\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[7]"}, {"position_id": 4001, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[7]"}, {"position_id": 4003, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[8]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 194, "edu_l1_label": "EDU_O"}, {"txt": "C\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4005, "txt": "C", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[8]/span[1]"}, {"position_id": 4007, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[8]/span[2]"}, {"position_id": 4009, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[8]"}, {"position_id": 4011, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[9]"}, {"position_id": 4013, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[9]"}, {"position_id": 4015, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[10]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 195, "edu_l1_label": "EDU_O"}, {"txt": "13024154\"      },      {        \"type\": \"", "language": "english", "position": {"atoms": [{"position_id": 4017, "txt": "13024154", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[10]/span[1]"}, {"position_id": 4019, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[10]/span[2]"}, {"position_id": 4021, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[10]"}, {"position_id": 4023, "txt": "\"type\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[11]"}, {"position_id": 4025, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[11]"}, {"position_id": 4027, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[12]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 196, "edu_l1_label": "EDU_O"}, {"txt": "O\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4029, "txt": "O", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[12]/span[1]"}, {"position_id": 4031, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[12]/span[2]"}, {"position_id": 4033, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[12]"}, {"position_id": 4035, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[13]"}, {"position_id": 4037, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[13]"}, {"position_id": 4039, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[14]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 197, "edu_l1_label": "EDU_O"}, {"txt": "133352657075626C696B204F65737465727265696368202876657274726574656E20647572636820424B4120756E6420424D445729\"      },      {        \"type\": \"", "language": "english", "position": {"atoms": [{"position_id": 4041, "txt": "133352657075626C696B204F65737465727265696368202876657274726574656E20647572636820424B4120756E6420424D445729", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[14]/span[1]"}, {"position_id": 4043, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[14]/span[2]"}, {"position_id": 4045, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[14]"}, {"position_id": 4047, "txt": "\"type\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[15]"}, {"position_id": 4049, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[15]"}, {"position_id": 4051, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[16]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 198, "edu_l1_label": "EDU_O"}, {"txt": "OU\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4053, "txt": "OU", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[16]/span[1]"}, {"position_id": 4055, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[16]/span[2]"}, {"position_id": 4057, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[16]"}, {"position_id": 4059, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[17]"}, {"position_id": 4061, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[17]"}, {"position_id": 4063, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[18]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 199, "edu_l1_label": "EDU_O"}, {"txt": "130A542D556D676562756E67\"      },      {        \"type\": \"", "language": "english", "position": {"atoms": [{"position_id": 4065, "txt": "130A542D556D676562756E67", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[18]/span[1]"}, {"position_id": 4067, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[18]/span[2]"}, {"position_id": 4069, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[18]"}, {"position_id": 4071, "txt": "\"type\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[19]"}, {"position_id": 4073, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[19]"}, {"position_id": 4075, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[20]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 200, "edu_l1_label": "EDU_O"}, {"txt": "CN\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4077, "txt": "CN", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[20]/span[1]"}, {"position_id": 4079, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[20]/span[2]"}, {"position_id": 4081, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[20]"}, {"position_id": 4083, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[21]"}, {"position_id": 4085, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[21]"}, {"position_id": 4087, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[22]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 201, "edu_l1_label": "EDU_O"}, {"txt": "132B542D52657075626C696B2D4F657374657272656963682D41757468656E746966697A696572756E672D3031\"      }    ],    \"validFrom\": \"", "language": "english", "position": {"atoms": [{"position_id": 4089, "txt": "132B542D52657075626C696B2D4F657374657272656963682D41757468656E746966697A696572756E672D3031", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[22]/span[1]"}, {"position_id": 4091, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[22]/span[2]"}, {"position_id": 4093, "txt": "\n      }\n    ],\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[22]"}, {"position_id": 4095, "txt": "\"validFrom\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[23]"}, {"position_id": 4097, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[23]"}, {"position_id": 4099, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[24]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 202, "edu_l1_label": "EDU_O"}, {"txt": "170D3233303932303132343135305A\",    \"validUntil\": \"", "language": "english", "position": {"atoms": [{"position_id": 4101, "txt": "170D3233303932303132343135305A", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[24]/span[1]"}, {"position_id": 4103, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[24]/span[2]"}, {"position_id": 4105, "txt": ",\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[24]"}, {"position_id": 4107, "txt": "\"validUntil\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[25]"}, {"position_id": 4109, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[25]"}, {"position_id": 4111, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[26]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 203, "edu_l1_label": "EDU_O"}, {"txt": "170D3233303932333132353134395A\",    \"subjectName\":", "language": "english", "position": {"atoms": [{"position_id": 4113, "txt": "170D3233303932333132353134395A", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[26]/span[1]"}, {"position_id": 4115, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[26]/span[2]"}, {"position_id": 4117, "txt": ",\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[26]"}, {"position_id": 4119, "txt": "\"subjectName\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[27]"}, {"position_id": 4121, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[27]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 204, "edu_l1_label": "EDU_O"}, {"txt": " [      {        \"type\": \"", "language": "english", "position": {"atoms": [{"position_id": 4122, "txt": " [\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[27]"}, {"position_id": 4124, "txt": "\"type\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[28]"}, {"position_id": 4126, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[28]"}, {"position_id": 4128, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[29]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 205, "edu_l1_label": "EDU_O"}, {"txt": "C\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4130, "txt": "C", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[29]/span[1]"}, {"position_id": 4132, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[29]/span[2]"}, {"position_id": 4134, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[29]"}, {"position_id": 4136, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[30]"}, {"position_id": 4138, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[30]"}, {"position_id": 4140, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[31]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 206, "edu_l1_label": "EDU_O"}, {"txt": "13024154\"      },      {        \"type\": \"", "language": "english", "position": {"atoms": [{"position_id": 4142, "txt": "13024154", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[31]/span[1]"}, {"position_id": 4144, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[31]/span[2]"}, {"position_id": 4146, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[31]"}, {"position_id": 4148, "txt": "\"type\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[32]"}, {"position_id": 4150, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[32]"}, {"position_id": 4152, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[33]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 207, "edu_l1_label": "EDU_O"}, {"txt": "O\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4154, "txt": "O", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[33]/span[1]"}, {"position_id": 4156, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[33]/span[2]"}, {"position_id": 4158, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[33]"}, {"position_id": 4160, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[34]"}, {"position_id": 4162, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[34]"}, {"position_id": 4164, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[35]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 208, "edu_l1_label": "EDU_O"}, {"txt": "133352657075626C696B204F65737465727265696368202876657274726574656E20647572636820424B4120756E6420424D445729\"      },      {        \"type\": \"", "language": "english", "position": {"atoms": [{"position_id": 4166, "txt": "133352657075626C696B204F65737465727265696368202876657274726574656E20647572636820424B4120756E6420424D445729", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[35]/span[1]"}, {"position_id": 4168, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[35]/span[2]"}, {"position_id": 4170, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[35]"}, {"position_id": 4172, "txt": "\"type\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[36]"}, {"position_id": 4174, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[36]"}, {"position_id": 4176, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[37]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 209, "edu_l1_label": "EDU_O"}, {"txt": "OU\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4178, "txt": "OU", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[37]/span[1]"}, {"position_id": 4180, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[37]/span[2]"}, {"position_id": 4182, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[37]"}, {"position_id": 4184, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[38]"}, {"position_id": 4186, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[38]"}, {"position_id": 4188, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[39]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 210, "edu_l1_label": "EDU_O"}, {"txt": "130A542D556D676562756E67\"      },      {        \"type\": \"", "language": "english", "position": {"atoms": [{"position_id": 4190, "txt": "130A542D556D676562756E67", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[39]/span[1]"}, {"position_id": 4192, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[39]/span[2]"}, {"position_id": 4194, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[39]"}, {"position_id": 4196, "txt": "\"type\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[40]"}, {"position_id": 4198, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[40]"}, {"position_id": 4200, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[41]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 211, "edu_l1_label": "EDU_O"}, {"txt": "CN\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4202, "txt": "CN", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[41]/span[1]"}, {"position_id": 4204, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[41]/span[2]"}, {"position_id": 4206, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[41]"}, {"position_id": 4208, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[42]"}, {"position_id": 4210, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[42]"}, {"position_id": 4212, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[43]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 212, "edu_l1_label": "EDU_O"}, {"txt": "1340542D42696E64756E67732D5A6572746966696B61742D4157502D3165306436383063656464613439636539313337386462613934326533663432346663663164\"      }    ],    \"publicKey\":", "language": "english", "position": {"atoms": [{"position_id": 4214, "txt": "1340542D42696E64756E67732D5A6572746966696B61742D4157502D3165306436383063656464613439636539313337386462613934326533663432346663663164", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[43]/span[1]"}, {"position_id": 4216, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[43]/span[2]"}, {"position_id": 4218, "txt": "\n      }\n    ],\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[43]"}, {"position_id": 4220, "txt": "\"publicKey\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[44]"}, {"position_id": 4222, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[44]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 213, "edu_l1_label": "EDU_O"}, {"txt": " {      \"type\": \"", "language": "english", "position": {"atoms": [{"position_id": 4223, "txt": " {\n      ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[44]"}, {"position_id": 4225, "txt": "\"type\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[45]"}, {"position_id": 4227, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[45]"}, {"position_id": 4229, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[46]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 214, "edu_l1_label": "EDU_O"}, {"txt": "EC\",      \"curve\": \"", "language": "english", "position": {"atoms": [{"position_id": 4231, "txt": "EC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[46]/span[1]"}, {"position_id": 4233, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[46]/span[2]"}, {"position_id": 4235, "txt": ",\n      ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[46]"}, {"position_id": 4237, "txt": "\"curve\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[47]"}, {"position_id": 4239, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[47]"}, {"position_id": 4241, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[48]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 215, "edu_l1_label": "EDU_O"}, {"txt": "P-256\",      \"x\": \"", "language": "english", "position": {"atoms": [{"position_id": 4243, "txt": "P-256", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[48]/span[1]"}, {"position_id": 4245, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[48]/span[2]"}, {"position_id": 4247, "txt": ",\n      ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[48]"}, {"position_id": 4249, "txt": "\"x\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[49]"}, {"position_id": 4251, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[49]"}, {"position_id": 4253, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[50]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 216, "edu_l1_label": "EDU_O"}, {"txt": "/wlkNNLhIKmO7tQY1824tD6FSf1/evXzQui1quzsSpw=\",      \"y\": \"", "language": "english", "position": {"atoms": [{"position_id": 4255, "txt": "/wlkNNLhIKmO7tQY1824tD6FSf1/evXzQui1quzsSpw=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[50]/span[1]"}, {"position_id": 4257, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[50]/span[2]"}, {"position_id": 4259, "txt": ",\n      ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[50]"}, {"position_id": 4261, "txt": "\"y\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[51]"}, {"position_id": 4263, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[51]"}, {"position_id": 4265, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[52]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 217, "edu_l1_label": "EDU_O"}, {"txt": "SggoS/B464PKcHXT9phYxBPOnMEwL/ZC+Q9vZXoxY/g=\"    },    \"extensions\":", "language": "english", "position": {"atoms": [{"position_id": 4267, "txt": "SggoS/B464PKcHXT9phYxBPOnMEwL/ZC+Q9vZXoxY/g=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[52]/span[1]"}, {"position_id": 4269, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[52]/span[2]"}, {"position_id": 4271, "txt": "\n    },\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[52]"}, {"position_id": 4273, "txt": "\"extensions\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[53]"}, {"position_id": 4275, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[53]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 218, "edu_l1_label": "EDU_O"}, {"txt": " [      {        \"id\": \"", "language": "english", "position": {"atoms": [{"position_id": 4276, "txt": " [\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[53]"}, {"position_id": 4278, "txt": "\"id\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[54]"}, {"position_id": 4280, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[54]"}, {"position_id": 4282, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[55]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 219, "edu_l1_label": "EDU_O"}, {"txt": "1.3.6.1.5.5.7.1.1\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4284, "txt": "1.3.6.1.5.5.7.1.1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[55]/span[1]"}, {"position_id": 4286, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[55]/span[2]"}, {"position_id": 4288, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[55]"}, {"position_id": 4290, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[56]"}, {"position_id": 4292, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[56]"}, {"position_id": 4294, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[57]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 220, "edu_l1_label": "EDU_O"}, {"txt": "MDEwLwYIKwYBBQUHMAGGI2h0dHA6Ly9vY3NwMy5vZXN0ZXJyZWljaC5ndi5hdC9vY3Nw\"      },      {        \"id\": \"", "language": "english", "position": {"atoms": [{"position_id": 4296, "txt": "MDEwLwYIKwYBBQUHMAGGI2h0dHA6Ly9vY3NwMy5vZXN0ZXJyZWljaC5ndi5hdC9vY3Nw", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[57]/span[1]"}, {"position_id": 4298, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[57]/span[2]"}, {"position_id": 4300, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[57]"}, {"position_id": 4302, "txt": "\"id\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[58]"}, {"position_id": 4304, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[58]"}, {"position_id": 4306, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[59]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 221, "edu_l1_label": "EDU_O"}, {"txt": "2.5.29.14\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4308, "txt": "2.5.29.14", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[59]/span[1]"}, {"position_id": 4310, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[59]/span[2]"}, {"position_id": 4312, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[59]"}, {"position_id": 4314, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[60]"}, {"position_id": 4316, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[60]"}, {"position_id": 4318, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[61]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 222, "edu_l1_label": "EDU_O"}, {"txt": "BBRQQnap5sOMkNX+lCHhWGstLkEe6Q==\"      },      {        \"id\": \"", "language": "english", "position": {"atoms": [{"position_id": 4320, "txt": "BBRQQnap5sOMkNX+lCHhWGstLkEe6Q==", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[61]/span[1]"}, {"position_id": 4322, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[61]/span[2]"}, {"position_id": 4324, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[61]"}, {"position_id": 4326, "txt": "\"id\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[62]"}, {"position_id": 4328, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[62]"}, {"position_id": 4330, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[63]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 223, "edu_l1_label": "EDU_O"}, {"txt": "2.5.29.35\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4332, "txt": "2.5.29.35", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[63]/span[1]"}, {"position_id": 4334, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[63]/span[2]"}, {"position_id": 4336, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[63]"}, {"position_id": 4338, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[64]"}, {"position_id": 4340, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[64]"}, {"position_id": 4342, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[65]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 224, "edu_l1_label": "EDU_O"}, {"txt": "MBaAFAgwoHa6fUvtsBT+jMHkTBAnomXU\"      },      {        \"id\": \"", "language": "english", "position": {"atoms": [{"position_id": 4344, "txt": "MBaAFAgwoHa6fUvtsBT+jMHkTBAnomXU", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[65]/span[1]"}, {"position_id": 4346, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[65]/span[2]"}, {"position_id": 4348, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[65]"}, {"position_id": 4350, "txt": "\"id\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[66]"}, {"position_id": 4352, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[66]"}, {"position_id": 4354, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[67]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 225, "edu_l1_label": "EDU_O"}, {"txt": "2.5.29.31\",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4356, "txt": "2.5.29.31", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[67]/span[1]"}, {"position_id": 4358, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[67]/span[2]"}, {"position_id": 4360, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[67]"}, {"position_id": 4362, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[68]"}, {"position_id": 4364, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[68]"}, {"position_id": 4366, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[69]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 226, "edu_l1_label": "EDU_O"}, {"txt": "MDQwMqAwoC6GLGh0dHA6Ly9jcmwzLm9lc3RlcnJlaWNoLmd2LmF0L2NybC9vZWd2LzFhY2Ex\"      },      {        \"id\": \"", "language": "english", "position": {"atoms": [{"position_id": 4368, "txt": "MDQwMqAwoC6GLGh0dHA6Ly9jcmwzLm9lc3RlcnJlaWNoLmd2LmF0L2NybC9vZWd2LzFhY2Ex", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[69]/span[1]"}, {"position_id": 4370, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[69]/span[2]"}, {"position_id": 4372, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[69]"}, {"position_id": 4374, "txt": "\"id\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[70]"}, {"position_id": 4376, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[70]"}, {"position_id": 4378, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[71]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 227, "edu_l1_label": "EDU_O"}, {"txt": "2.5.29.15\",        \"critical\":", "language": "english", "position": {"atoms": [{"position_id": 4380, "txt": "2.5.29.15", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[71]/span[1]"}, {"position_id": 4382, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[71]/span[2]"}, {"position_id": 4384, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[71]"}, {"position_id": 4386, "txt": "\"critical\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[72]"}, {"position_id": 4388, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[72]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 228, "edu_l1_label": "EDU_O"}, {"txt": " true,        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4389, "txt": " ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[72]"}, {"position_id": 4391, "txt": "true", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[73]"}, {"position_id": 4393, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[73]"}, {"position_id": 4395, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[74]"}, {"position_id": 4397, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[74]"}, {"position_id": 4399, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[75]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 229, "edu_l1_label": "EDU_O"}, {"txt": "AwIHgA==\"      },      {        \"id\": \"", "language": "english", "position": {"atoms": [{"position_id": 4401, "txt": "AwIHgA==", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[75]/span[1]"}, {"position_id": 4403, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[75]/span[2]"}, {"position_id": 4405, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[75]"}, {"position_id": 4407, "txt": "\"id\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[76]"}, {"position_id": 4409, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[76]"}, {"position_id": 4411, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[77]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 230, "edu_l1_label": "EDU_O"}, {"txt": "2.5.29.37\",        \"critical\":", "language": "english", "position": {"atoms": [{"position_id": 4413, "txt": "2.5.29.37", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[77]/span[1]"}, {"position_id": 4415, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[77]/span[2]"}, {"position_id": 4417, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[77]"}, {"position_id": 4419, "txt": "\"critical\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[78]"}, {"position_id": 4421, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[78]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 231, "edu_l1_label": "EDU_O"}, {"txt": " true,        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4422, "txt": " ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[78]"}, {"position_id": 4424, "txt": "true", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[79]"}, {"position_id": 4426, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[79]"}, {"position_id": 4428, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[80]"}, {"position_id": 4430, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[80]"}, {"position_id": 4432, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[81]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 232, "edu_l1_label": "EDU_O"}, {"txt": "MAoGCCsGAQUFBwMC\"      },      {        \"id\": \"", "language": "english", "position": {"atoms": [{"position_id": 4434, "txt": "MAoGCCsGAQUFBwMC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[81]/span[1]"}, {"position_id": 4436, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[81]/span[2]"}, {"position_id": 4438, "txt": "\n      },\n      {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[81]"}, {"position_id": 4440, "txt": "\"id\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[82]"}, {"position_id": 4442, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[82]"}, {"position_id": 4444, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[83]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 233, "edu_l1_label": "EDU_O"}, {"txt": "1.2.40.0.10.2.6.1.1\"", "language": "english", "position": {"atoms": [{"position_id": 4446, "txt": "1.2.40.0.10.2.6.1.1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[83]/span[1]"}, {"position_id": 4448, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[83]/span[2]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 234, "edu_l1_label": "EDU_O"}, {"txt": ",        \"value\": \"", "language": "english", "position": {"atoms": [{"position_id": 4450, "txt": ",\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[83]"}, {"position_id": 4452, "txt": "\"value\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[84]"}, {"position_id": 4454, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[84]"}, {"position_id": 4456, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[85]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 235, "edu_l1_label": "EDU_O"}, {"txt": "MA2gAwIBAIEGcmVhZGVy\"      }    ]  },  \"signatureAlgorithm\": \"", "language": "english", "position": {"atoms": [{"position_id": 4458, "txt": "MA2gAwIBAIEGcmVhZGVy", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[85]/span[1]"}, {"position_id": 4460, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[85]/span[2]"}, {"position_id": 4462, "txt": "\n      }\n    ]\n  },\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[85]"}, {"position_id": 4464, "txt": "\"signatureAlgorithm\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[86]"}, {"position_id": 4466, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[86]"}, {"position_id": 4468, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[87]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 236, "edu_l1_label": "EDU_O"}, {"txt": "ES384\",  \"signature\": \"", "language": "english", "position": {"atoms": [{"position_id": 4470, "txt": "ES384", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[87]/span[1]"}, {"position_id": 4472, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[87]/span[2]"}, {"position_id": 4474, "txt": ",\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[87]"}, {"position_id": 4476, "txt": "\"signature\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[88]"}, {"position_id": 4478, "txt": ": ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[88]"}, {"position_id": 4480, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[89]/span[1]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 237, "edu_l1_label": "EDU_O"}, {"txt": "MGQCMEAqUL8qRpPwDi7u1qeEXfJp7Pk4GE4diI9GTSTE/yzFEHJD/o6SRy+lCbJgo58+AwIwCTsMgGdWLIMkN9n1KsuLt6jD/FFF1qzHuj5cTH4JeY0bNwLPxvAUVk3V43pCfMgD\"}", "language": "english", "position": {"atoms": [{"position_id": 4482, "txt": "MGQCMEAqUL8qRpPwDi7u1qeEXfJp7Pk4GE4diI9GTSTE/yzFEHJD/o6SRy+lCbJgo58+AwIwCTsMgGdWLIMkN9n1KsuLt6jD/FFF1qzHuj5cTH4JeY0bNwLPxvAUVk3V43pCfMgD", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[89]/span[1]"}, {"position_id": 4484, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[89]/span[2]"}, {"position_id": 4486, "txt": "\n}", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/details[2]/div/pre/span[89]"}]}, "tags": [], "label": "code", "web_segment_id": 113, "global_sentence_id": 238, "edu_l1_label": "EDU_O"}, {"txt": "Re-encoding it produces the same bytes?", "language": "english", "position": {"atoms": [{"position_id": 4488, "txt": "Re-encoding it produces the same bytes?", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/blockquote[2]/p"}]}, "tags": [], "label": "content", "web_segment_id": 115, "global_sentence_id": 239, "edu_l1_label": "IOS"}, {"txt": " true", "language": "english", "position": {"atoms": [{"position_id": 4489, "txt": " true", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/blockquote[2]/p"}]}, "tags": [], "label": "content", "web_segment_id": 115, "global_sentence_id": 240, "edu_l1_label": "EDU_O"}, {"txt": "Creating a CSR", "language": "english", "position": {"atoms": [{"position_id": 4491, "txt": "Creating a CSR", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[33]/h3"}]}, "tags": ["h3"], "label": "title2", "web_segment_id": 116, "global_sentence_id": 241, "edu_l1_label": "IOS"}, {"txt": "val ecPublicKey:", "language": "english", "position": {"atoms": [{"position_id": 4493, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[1]"}, {"position_id": 4495, "txt": " ecPublicKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[1]"}, {"position_id": 4497, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[2]"}]}, "tags": [], "label": "code", "web_segment_id": 117, "global_sentence_id": 242, "edu_l1_label": "EDU_O"}, {"txt": "ECPublicKey=TODO(\"From platform-specific code\")val cryptoPublicKey =CryptoPublicKey.EC.fromJcaPublicKey(ecPublicKey).getOrThrow()val commonName =\"DefaultCryptoService\"val signatureAlgorithm =X509SignatureAlgorithm.ES256val tbsCsr =TbsCertificationRequest(    version =0,    subjectName =listOf(RelativeDistinguishedName(AttributeTypeAndValue.CommonName(Asn1String.UTF8(commonName)))),    publicKey = cryptoPublicKey)val signed:", "language": "english", "position": {"atoms": [{"position_id": 4499, "txt": "ECPublicKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[3]"}, {"position_id": 4501, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[4]"}, {"position_id": 4503, "txt": "TODO", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[5]"}, {"position_id": 4505, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[5]"}, {"position_id": 4507, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[6]/span[1]"}, {"position_id": 4509, "txt": "From platform-specific code", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[6]/span[1]"}, {"position_id": 4511, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[6]/span[2]"}, {"position_id": 4513, "txt": ")\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[6]"}, {"position_id": 4515, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[7]"}, {"position_id": 4517, "txt": " cryptoPublicKey ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[7]"}, {"position_id": 4519, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[8]"}, {"position_id": 4521, "txt": "CryptoPublicKey", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[9]"}, {"position_id": 4523, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[9]"}, {"position_id": 4525, "txt": "EC", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[10]"}, {"position_id": 4527, "txt": ".fromJcaPublicKey(ecPublicKey).getOrThrow()\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[10]"}, {"position_id": 4529, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[11]"}, {"position_id": 4531, "txt": " commonName ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[11]"}, {"position_id": 4533, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[12]"}, {"position_id": 4535, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[13]/span[1]"}, {"position_id": 4537, "txt": "DefaultCryptoService", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[13]/span[1]"}, {"position_id": 4539, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[13]/span[2]"}, {"position_id": 4541, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[14]"}, {"position_id": 4543, "txt": " signatureAlgorithm ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[14]"}, {"position_id": 4545, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[15]"}, {"position_id": 4547, "txt": "X509SignatureAlgorithm", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[16]"}, {"position_id": 4549, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[16]"}, {"position_id": 4551, "txt": "ES256", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[17]"}, {"position_id": 4553, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[18]"}, {"position_id": 4555, "txt": " tbsCsr ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[18]"}, {"position_id": 4557, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[19]"}, {"position_id": 4559, "txt": "TbsCertificationRequest", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[20]"}, {"position_id": 4561, "txt": "(\n    version ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[20]"}, {"position_id": 4563, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[21]"}, {"position_id": 4565, "txt": "0", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[22]"}, {"position_id": 4567, "txt": ",\n    subjectName ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[22]"}, {"position_id": 4569, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[23]"}, {"position_id": 4571, "txt": "listOf", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[24]"}, {"position_id": 4573, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[24]"}, {"position_id": 4575, "txt": "RelativeDistinguishedName", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[25]"}, {"position_id": 4577, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[25]"}, {"position_id": 4579, "txt": "AttributeTypeAndValue", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[26]"}, {"position_id": 4581, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[26]"}, {"position_id": 4583, "txt": "CommonName", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[27]"}, {"position_id": 4585, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[27]"}, {"position_id": 4587, "txt": "Asn1String", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[28]"}, {"position_id": 4589, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[28]"}, {"position_id": 4591, "txt": "UTF8", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[29]"}, {"position_id": 4593, "txt": "(commonName)))),\n    publicKey ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[29]"}, {"position_id": 4595, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[30]"}, {"position_id": 4597, "txt": " cryptoPublicKey\n)\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[30]"}, {"position_id": 4599, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[31]"}, {"position_id": 4601, "txt": " signed", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[31]"}, {"position_id": 4603, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[32]"}]}, "tags": [], "label": "code", "web_segment_id": 117, "global_sentence_id": 243, "edu_l1_label": "EDU_O"}, {"txt": "ByteArray=TODO(\"pass tbsCsr.encodeToDer() to platform code\")val csr =Pkcs10CertificationRequest(tbsCsr, signatureAlgorithm, signed)println(csr.encodeToDer())", "language": "english", "position": {"atoms": [{"position_id": 4605, "txt": "ByteArray", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[33]"}, {"position_id": 4607, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[34]"}, {"position_id": 4609, "txt": "TODO", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[35]"}, {"position_id": 4611, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[35]"}, {"position_id": 4613, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[36]/span[1]"}, {"position_id": 4615, "txt": "pass tbsCsr.encodeToDer() to platform code", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[36]/span[1]"}, {"position_id": 4617, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[36]/span[2]"}, {"position_id": 4619, "txt": ")\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[36]"}, {"position_id": 4621, "txt": "val", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[37]"}, {"position_id": 4623, "txt": " csr ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[37]"}, {"position_id": 4625, "txt": "=", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[38]"}, {"position_id": 4627, "txt": "Pkcs10CertificationRequest", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[39]"}, {"position_id": 4629, "txt": "(tbsCsr, signatureAlgorithm, signed)\n\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[39]"}, {"position_id": 4631, "txt": "println", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[40]"}, {"position_id": 4633, "txt": "(csr.encodeToDer())", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[34]/pre/span[40]"}]}, "tags": [], "label": "code", "web_segment_id": 117, "global_sentence_id": 244, "edu_l1_label": "EDU_O"}, {"txt": "Which results in the following output:", "language": "english", "position": {"atoms": [{"position_id": 4635, "txt": "Which results in the following output:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[34]"}]}, "tags": [], "label": "content", "web_segment_id": 119, "global_sentence_id": 245, "edu_l1_label": "IOS"}, {"txt": "3081D9308181020100301F311D301B06035504030C1444656661756C74437279 70746F536572766963653059301306072A8648CE3D020106082A8648CE3D0301 07034200043797E977E359AAABFC9177E7C95FD5B4BE4AC24C4FF13F3233F774 E8B65FE5FBA5057513BD076CFFB2E17567AC9BD43737FB6BDF496CC6DCB47194 BBE7512F0BA000300A06082A8648CE3D0403020347003044022079D188C09E20 C70AFF096B9484DDDE70484485FD551676273A517E818B94644E02206B222905 D343C1D6FC9319A364CECA7E67956E4B99D63537E17A9F5D4093D7AE", "language": "english", "position": {"atoms": [{"position_id": 4637, "txt": "3081D9308181020100301F311D301B06035504030C1444656661756C74437279 70746F536572766963653059301306072A8648CE3D020106082A8648CE3D0301 07034200043797E977E359AAABFC9177E7C95FD5B4BE4AC24C4FF13F3233F774 E8B65FE5FBA5057513BD076CFFB2E17567AC9BD43737FB6BDF496CC6DCB47194 BBE7512F0BA000300A06082A8648CE3D0403020347003044022079D188C09E20 C70AFF096B9484DDDE70484485FD551676273A517E818B94644E02206B222905 D343C1D6FC9319A364CECA7E67956E4B99D63537E17A9F5D4093D7AE", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/blockquote[3]/p/a"}]}, "tags": [], "label": "content", "web_segment_id": 120, "global_sentence_id": 246, "edu_l1_label": "IOS"}, {"txt": "Working with Generic ASN.1 Structures", "language": "english", "position": {"atoms": [{"position_id": 4639, "txt": "Working with Generic ASN.1 Structures", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[35]/h3"}]}, "tags": ["h3"], "label": "title2", "web_segment_id": 121, "global_sentence_id": 247, "edu_l1_label": "IOS"}, {"txt": "The magic shown above is based on a from-scratch 100% KMP implementation of an ASN.1 encoder and parser.", "language": "english", "position": {"atoms": [{"position_id": 4641, "txt": "The magic shown above is based on a from-scratch 100% KMP implementation of an ASN.1 encoder and parser.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[35]"}]}, "tags": [], "label": "content", "web_segment_id": 122, "global_sentence_id": 248, "edu_l1_label": "IOS"}, {"txt": " To parse any DER-encoded ASN.1 structure, call either:", "language": "english", "position": {"atoms": [{"position_id": 4642, "txt": " To parse any DER-encoded ASN.1 structure, call either:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[35]"}]}, "tags": [], "label": "content", "web_segment_id": 122, "global_sentence_id": 249, "edu_l1_label": "IOS"}, {"txt": "Asn1Element.parse(), which will consume all bytes and return the first parsed ASN.1 element.", "language": "english", "position": {"atoms": [{"position_id": 4644, "txt": "Asn1Element.parse()", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[2]/li[1]/code"}, {"position_id": 4646, "txt": ", which will consume all bytes and return the first parsed ASN.1 element.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[2]/li[1]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 123, "global_sentence_id": 250, "edu_l1_label": "IOS"}, {"txt": " This method throws if parsing errors occur or any trailing bytes are left after parsing the first element.", "language": "english", "position": {"atoms": [{"position_id": 4647, "txt": " This method throws if parsing errors occur or any trailing bytes are left after parsing the first element.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[2]/li[1]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 123, "global_sentence_id": 251, "edu_l1_label": "IOS"}, {"txt": "Asn1Element.parseFirst(), which will try to parse a single toplevel ASN.1 element.", "language": "english", "position": {"atoms": [{"position_id": 4649, "txt": "Asn1Element.parseFirst()", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[2]/li[2]/code"}, {"position_id": 4651, "txt": ", which will try to parse a single toplevel ASN.1 element.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[2]/li[2]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 124, "global_sentence_id": 252, "edu_l1_label": "IOS"}, {"txt": " Any remaining bytes can still be consumed from the iterator, as it will only be advanced to right after the first parsed element.", "language": "english", "position": {"atoms": [{"position_id": 4652, "txt": " Any remaining bytes can still be consumed from the iterator, as it will only be advanced to right after the first parsed element.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[2]/li[2]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 124, "global_sentence_id": 253, "edu_l1_label": "IOS"}, {"txt": "Asn1Element.parseAll(), wich consumes all bytes, parses all toplevel ASN.1 elements, and returns them as list.", "language": "english", "position": {"atoms": [{"position_id": 4654, "txt": "Asn1Element.parseAll()", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[2]/li[3]/code"}, {"position_id": 4656, "txt": ", wich consumes all bytes, parses all toplevel ASN.1 elements, and returns them as list.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[2]/li[3]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 125, "global_sentence_id": 254, "edu_l1_label": "IOS"}, {"txt": " Throws on any parsing error.", "language": "english", "position": {"atoms": [{"position_id": 4657, "txt": " Throws on any parsing error.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[2]/li[3]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 125, "global_sentence_id": 255, "edu_l1_label": "IOS"}, {"txt": "Asn1Elements can encoded by accessing the lazily evaluated .derEncoded property.", "language": "english", "position": {"atoms": [{"position_id": 4659, "txt": "Asn1Element", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[36]/code[1]"}, {"position_id": 4661, "txt": "s can encoded by accessing the lazily evaluated ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[36]/code[1]"}, {"position_id": 4663, "txt": ".derEncoded", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[36]/code[2]"}, {"position_id": 4665, "txt": " property.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[36]/code[2]"}]}, "tags": [], "label": "content", "web_segment_id": 126, "global_sentence_id": 256, "edu_l1_label": "IOS"}, {"txt": " Even for parsed elements, this is a true re-encoding.", "language": "english", "position": {"atoms": [{"position_id": 4666, "txt": " Even for parsed elements, this is a true re-encoding.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[36]/code[2]"}]}, "tags": [], "label": "content", "web_segment_id": 126, "global_sentence_id": 257, "edu_l1_label": "IOS"}, {"txt": " The original bytes are discarded after decoding.", "language": "english", "position": {"atoms": [{"position_id": 4667, "txt": " The original bytes are discarded after decoding.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[36]/code[2]"}]}, "tags": [], "label": "content", "web_segment_id": 126, "global_sentence_id": 258, "edu_l1_label": "IOS"}, {"txt": "Note that decoding operations will throw exceptions if invalid data is provided!", "language": "english", "position": {"atoms": [{"position_id": 4669, "txt": "Note that decoding operations will throw exceptions if invalid data is provided!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[37]/strong"}]}, "tags": ["strong"], "label": "content", "web_segment_id": 127, "global_sentence_id": 259, "edu_l1_label": "IOS"}, {"txt": "A parsed Asn1Element can either be a primitive (whose tag and value can be read) or a structure (like a set or sequence) whose child nodes can be processed as desired.", "language": "english", "position": {"atoms": [{"position_id": 4671, "txt": "A parsed ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[38]"}, {"position_id": 4673, "txt": "Asn1Element", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[38]/code[1]"}, {"position_id": 4675, "txt": " can either be a primitive (whose tag and value can be read) or a structure (like a set or sequence) whose child nodes can be processed as desired.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[38]/code[1]"}]}, "tags": [], "label": "content", "web_segment_id": 128, "global_sentence_id": 260, "edu_l1_label": "IOS"}, {"txt": " Subclasses of Asn1Element reflect this:", "language": "english", "position": {"atoms": [{"position_id": 4676, "txt": " Subclasses of ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[38]/code[1]"}, {"position_id": 4678, "txt": "Asn1Element", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[38]/code[2]"}, {"position_id": 4680, "txt": " reflect this:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[38]/code[2]"}]}, "tags": [], "label": "content", "web_segment_id": 128, "global_sentence_id": 261, "edu_l1_label": "IOS"}, {"txt": "Asn1Primitive", "language": "english", "position": {"atoms": [{"position_id": 4682, "txt": "Asn1Primitive", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[1]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 129, "global_sentence_id": 262, "edu_l1_label": "IOS"}, {"txt": "Asn1BitString (for convenience)", "language": "english", "position": {"atoms": [{"position_id": 4684, "txt": "Asn1BitString", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[1]/ul/li[1]/code"}, {"position_id": 4686, "txt": " (for convenience)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[1]/ul/li[1]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 130, "global_sentence_id": 263, "edu_l1_label": "IOS"}, {"txt": "Asn1PrimitiveOctetString (for convenience)", "language": "english", "position": {"atoms": [{"position_id": 4688, "txt": "Asn1PrimitiveOctetString", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[1]/ul/li[2]/code"}, {"position_id": 4690, "txt": " (for convenience)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[1]/ul/li[2]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 131, "global_sentence_id": 264, "edu_l1_label": "IOS"}, {"txt": "Asn1Structure", "language": "english", "position": {"atoms": [{"position_id": 4692, "txt": "Asn1Structure", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 132, "global_sentence_id": 265, "edu_l1_label": "IOS"}, {"txt": "Asn1Sequence and Asn1SequenceOf", "language": "english", "position": {"atoms": [{"position_id": 4694, "txt": "Asn1Sequence", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[1]/code[1]"}, {"position_id": 4696, "txt": " and ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[1]/code[1]"}, {"position_id": 4698, "txt": "Asn1SequenceOf", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[1]/code[2]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 133, "global_sentence_id": 266, "edu_l1_label": "IOS"}, {"txt": "Asn1Set and Asn1SetOf (sorting children by default)", "language": "english", "position": {"atoms": [{"position_id": 4700, "txt": "Asn1Set", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[2]/code[1]"}, {"position_id": 4702, "txt": " and ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[2]/code[1]"}, {"position_id": 4704, "txt": "Asn1SetOf", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[2]/code[2]"}, {"position_id": 4706, "txt": " (sorting children by default)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[2]/code[2]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 134, "global_sentence_id": 267, "edu_l1_label": "IOS"}, {"txt": "Asn1EncapsulatingOctetString (tagged as OCTET STRING, containing a valid ASN.1 structure or primitive)", "language": "english", "position": {"atoms": [{"position_id": 4708, "txt": "Asn1EncapsulatingOctetString", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[3]/code"}, {"position_id": 4710, "txt": " (tagged as OCTET STRING, containing a valid ASN.1 structure or primitive)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[3]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 135, "global_sentence_id": 268, "edu_l1_label": "IOS"}, {"txt": "Asn1ExplicitlyTagged (user-specified tag + CONTEXT_SPECIFIC + CONSTRUCTED)", "language": "english", "position": {"atoms": [{"position_id": 4712, "txt": "Asn1ExplicitlyTagged", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[4]/code"}, {"position_id": 4714, "txt": " (user-specified tag + CONTEXT_SPECIFIC + CONSTRUCTED)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[4]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 136, "global_sentence_id": 269, "edu_l1_label": "IOS"}, {"txt": "Asn1CustomStructure (any other CONSTRUCTED tag not fitting the above options.", "language": "english", "position": {"atoms": [{"position_id": 4716, "txt": "Asn1CustomStructure", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[5]/code"}, {"position_id": 4718, "txt": " (any other CONSTRUCTED tag not fitting the above options.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[5]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 137, "global_sentence_id": 270, "edu_l1_label": "IOS"}, {"txt": " CONSTRUCTED bit may be overridden)", "language": "english", "position": {"atoms": [{"position_id": 4719, "txt": " CONSTRUCTED bit may be overridden)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[3]/li[2]/ul/li[5]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 137, "global_sentence_id": 271, "edu_l1_label": "IOS"}, {"txt": "Convenience wrappers exist, to cast to any subtype (e.g. .asSequence()).", "language": "english", "position": {"atoms": [{"position_id": 4721, "txt": "Convenience wrappers exist, to cast to any subtype (e.g. ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[39]"}, {"position_id": 4723, "txt": ".asSequence()", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[39]/code[1]"}, {"position_id": 4725, "txt": ").", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[39]/code[1]"}]}, "tags": [], "label": "content", "web_segment_id": 138, "global_sentence_id": 272, "edu_l1_label": "IOS"}, {"txt": " These shorthand functions throw an Asn1Exception if a cast is not possible.", "language": "english", "position": {"atoms": [{"position_id": 4726, "txt": " These shorthand functions throw an ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[39]/code[1]"}, {"position_id": 4728, "txt": "Asn1Exception", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[39]/code[2]"}, {"position_id": 4730, "txt": " if a cast is not possible.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[39]/code[2]"}]}, "tags": [], "label": "content", "web_segment_id": 138, "global_sentence_id": 273, "edu_l1_label": "IOS"}, {"txt": " Any complex data structure (such as CSR, public key, certificate, …", "language": "english", "position": {"atoms": [{"position_id": 4732, "txt": " Any complex data structure (such as CSR, public key, certificate, …", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[39]/br"}]}, "tags": ["br"], "label": "content", "web_segment_id": 139, "global_sentence_id": 274, "edu_l1_label": "IOS"}, {"txt": ") implements ", "language": "english", "position": {"atoms": [{"position_id": 4733, "txt": ") implements ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[39]/br"}]}, "tags": ["br"], "label": "content", "web_segment_id": 139, "global_sentence_id": 275, "edu_l1_label": "IOS"}, {"txt": "Asn1Encodable, which means you can:", "language": "english", "position": {"atoms": [{"position_id": 4735, "txt": "Asn1Encodable", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[39]/code[3]"}, {"position_id": 4737, "txt": ", which means you can:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[39]/code[3]"}]}, "tags": [], "label": "content", "web_segment_id": 138, "global_sentence_id": 276, "edu_l1_label": "IOS"}, {"txt": "encapsulate it into an ASN.1 Tree by calling .encodeToTlv()", "language": "english", "position": {"atoms": [{"position_id": 4739, "txt": "encapsulate it into an ASN.1 Tree by calling ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[4]/li[1]"}, {"position_id": 4741, "txt": ".encodeToTlv()", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[4]/li[1]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 140, "global_sentence_id": 277, "edu_l1_label": "IOS"}, {"txt": "directly get a DER-encoded byte array through the .encodetoDer() function", "language": "english", "position": {"atoms": [{"position_id": 4743, "txt": "directly get a DER-encoded byte array through the ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[4]/li[2]"}, {"position_id": 4745, "txt": ".encodetoDer()", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[4]/li[2]/code"}, {"position_id": 4747, "txt": " function", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[4]/li[2]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 141, "global_sentence_id": 278, "edu_l1_label": "IOS"}, {"txt": "A tandem of helper functions is available for primitives (numbers, booleans, string, bigints):", "language": "english", "position": {"atoms": [{"position_id": 4749, "txt": "A tandem of helper functions is available for primitives (numbers, booleans, string, bigints):", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[40]"}]}, "tags": [], "label": "content", "web_segment_id": 142, "global_sentence_id": 279, "edu_l1_label": "IOS"}, {"txt": "encodeToAsn1Primitive to produce an Asn1Primitive that can directly be DER-encoded", "language": "english", "position": {"atoms": [{"position_id": 4751, "txt": "encodeToAsn1Primitive", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[5]/li[1]/code[1]"}, {"position_id": 4753, "txt": " to produce an ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[5]/li[1]/code[1]"}, {"position_id": 4755, "txt": "Asn1Primitive", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[5]/li[1]/code[2]"}, {"position_id": 4757, "txt": " that can directly be DER-encoded", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[5]/li[1]/code[2]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 143, "global_sentence_id": 280, "edu_l1_label": "IOS"}, {"txt": "encodeToAsn1ContentBytes to produce the content bytes of a TLV primitive (the V in TLV)", "language": "english", "position": {"atoms": [{"position_id": 4759, "txt": "encodeToAsn1ContentBytes", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[5]/li[2]/code"}, {"position_id": 4761, "txt": " to produce the content bytes of a TLV primitive (the ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[5]/li[2]/code"}, {"position_id": 4763, "txt": "V", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[5]/li[2]/em"}, {"position_id": 4765, "txt": " in TLV)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[5]/li[2]/em"}]}, "tags": ["li", "em"], "label": "content", "web_segment_id": 144, "global_sentence_id": 281, "edu_l1_label": "IOS"}, {"txt": "Variations of these exist for Instant and ByteArray.", "language": "english", "position": {"atoms": [{"position_id": 4767, "txt": "Variations of these exist for ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[41]"}, {"position_id": 4769, "txt": "Instant", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[41]/code[1]"}, {"position_id": 4771, "txt": " and ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[41]/code[1]"}, {"position_id": 4773, "txt": "ByteArray", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[41]/code[2]"}, {"position_id": 4775, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[41]/code[2]"}]}, "tags": [], "label": "content", "web_segment_id": 145, "global_sentence_id": 282, "edu_l1_label": "IOS"}, {"txt": "Check out Asn1Encoding.kt for a full list of helper functions.", "language": "english", "position": {"atoms": [{"position_id": 4777, "txt": "Check out ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[42]"}, {"position_id": 4779, "txt": "Asn1Encoding.kt", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[42]/a"}, {"position_id": 4781, "txt": " for a full list of helper functions.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[42]/a"}]}, "tags": [], "label": "content", "web_segment_id": 146, "global_sentence_id": 283, "edu_l1_label": "IOS"}, {"txt": "Decoding Values", "language": "english", "position": {"atoms": [{"position_id": 4783, "txt": "Decoding Values", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[36]/h4"}]}, "tags": ["h4"], "label": "title2", "web_segment_id": 147, "global_sentence_id": 284, "edu_l1_label": "IOS"}, {"txt": "Various helper functions exist to facilitate decoding the values contained in Asn1Primitives, such as readInt(), for example.", "language": "english", "position": {"atoms": [{"position_id": 4785, "txt": "Various helper functions exist to facilitate decoding the values contained in ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[43]"}, {"position_id": 4787, "txt": "Asn1Primitives", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[43]/code[1]"}, {"position_id": 4789, "txt": ", such as ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[43]/code[1]"}, {"position_id": 4791, "txt": "readInt()", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[43]/code[2]"}, {"position_id": 4793, "txt": ", for example.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[43]/code[2]"}]}, "tags": [], "label": "content", "web_segment_id": 148, "global_sentence_id": 285, "edu_l1_label": "IOS"}, {"txt": " To also support decoding more complex structures, the companion objects of complex classes (such as certificates, CSRs, …", "language": "english", "position": {"atoms": [{"position_id": 4794, "txt": " To also support decoding more complex structures, the companion objects of complex classes (such as certificates, CSRs, …", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[43]/code[2]"}]}, "tags": [], "label": "content", "web_segment_id": 148, "global_sentence_id": 286, "edu_l1_label": "IOS"}, {"txt": ") implement Asn1Decodable, which allows for:", "language": "english", "position": {"atoms": [{"position_id": 4795, "txt": ") implement ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[43]/code[2]"}, {"position_id": 4797, "txt": "Asn1Decodable", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[43]/code[3]"}, {"position_id": 4799, "txt": ", which allows for:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[43]/code[3]"}]}, "tags": [], "label": "content", "web_segment_id": 148, "global_sentence_id": 287, "edu_l1_label": "IOS"}, {"txt": "directly parsing DER-encoded byte arrays by calling .decodeFromDer(bytes) and .decodeFromDerHexString", "language": "english", "position": {"atoms": [{"position_id": 4801, "txt": "directly parsing DER-encoded byte arrays by calling ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[6]/li[1]"}, {"position_id": 4803, "txt": ".decodeFromDer(bytes)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[6]/li[1]/code[1]"}, {"position_id": 4805, "txt": " and ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[6]/li[1]/code[1]"}, {"position_id": 4807, "txt": ".decodeFromDerHexString", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[6]/li[1]/code[2]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 149, "global_sentence_id": 288, "edu_l1_label": "IOS"}, {"txt": "processing an Asn1Element by calling .decodefromTlv(src)", "language": "english", "position": {"atoms": [{"position_id": 4809, "txt": "processing an ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[6]/li[2]"}, {"position_id": 4811, "txt": "Asn1Element", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[6]/li[2]/code[1]"}, {"position_id": 4813, "txt": " by calling ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[6]/li[2]/code[1]"}, {"position_id": 4815, "txt": ".decodefromTlv(src)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[6]/li[2]/code[2]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 150, "global_sentence_id": 289, "edu_l1_label": "IOS"}, {"txt": "Both encoding and decoding functions come in two safe (i.e. non-throwing) variants:", "language": "english", "position": {"atoms": [{"position_id": 4817, "txt": "Both encoding and decoding functions come in two ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[44]"}, {"position_id": 4819, "txt": "safe", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[44]/em"}, {"position_id": 4821, "txt": " (i.e. non-throwing) variants:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[44]/em"}]}, "tags": ["em"], "label": "content", "web_segment_id": 151, "global_sentence_id": 290, "edu_l1_label": "IOS"}, {"txt": "…", "language": "english", "position": {"atoms": [{"position_id": 4823, "txt": "…", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[7]/li[1]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 152, "global_sentence_id": 291, "edu_l1_label": "IOS"}, {"txt": "Safe() which returns a KmmResult", "language": "english", "position": {"atoms": [{"position_id": 4824, "txt": "Safe()", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[7]/li[1]/code"}, {"position_id": 4826, "txt": " which returns a ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[7]/li[1]/code"}, {"position_id": 4828, "txt": "KmmResult", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[7]/li[1]/a"}]}, "tags": ["li"], "label": "content", "web_segment_id": 152, "global_sentence_id": 292, "edu_l1_label": "IOS"}, {"txt": "…", "language": "english", "position": {"atoms": [{"position_id": 4830, "txt": "…", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[7]/li[2]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 153, "global_sentence_id": 293, "edu_l1_label": "IOS"}, {"txt": "orNull() which returns null on error", "language": "english", "position": {"atoms": [{"position_id": 4831, "txt": "orNull()", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[7]/li[2]/code"}, {"position_id": 4833, "txt": " which returns null on error", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[7]/li[2]/code"}]}, "tags": ["li"], "label": "content", "web_segment_id": 153, "global_sentence_id": 294, "edu_l1_label": "IOS"}, {"txt": "Similarly to encoding, a tandem of decoding functions exists for primitives:", "language": "english", "position": {"atoms": [{"position_id": 4835, "txt": "Similarly to encoding, a tandem of decoding functions exists for primitives:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[45]"}]}, "tags": [], "label": "content", "web_segment_id": 154, "global_sentence_id": 295, "edu_l1_label": "IOS"}, {"txt": "decodeToXXX to be invoked on an Asn1Primitive to decode a DER-encoded primitive into the target type", "language": "english", "position": {"atoms": [{"position_id": 4837, "txt": "decodeToXXX", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[8]/li[1]/code[1]"}, {"position_id": 4839, "txt": " to be invoked on an ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[8]/li[1]/code[1]"}, {"position_id": 4841, "txt": "Asn1Primitive", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[8]/li[1]/code[2]"}, {"position_id": 4843, "txt": " to decode a DER-encoded primitive into the target type", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[8]/li[1]/code[2]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 155, "global_sentence_id": 296, "edu_l1_label": "IOS"}, {"txt": "decodeFromAsn1ContentBytes to be invoked on the companion of the target type to decode the content bytes of a TLV primitive (the V in TLV)", "language": "english", "position": {"atoms": [{"position_id": 4845, "txt": "decodeFromAsn1ContentBytes", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[8]/li[2]/code"}, {"position_id": 4847, "txt": " to be invoked on the companion of the target type to decode the content bytes of a TLV primitive (the ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[8]/li[2]/code"}, {"position_id": 4849, "txt": "V", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[8]/li[2]/em"}, {"position_id": 4851, "txt": " in TLV)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[8]/li[2]/em"}]}, "tags": ["li", "em"], "label": "content", "web_segment_id": 156, "global_sentence_id": 297, "edu_l1_label": "IOS"}, {"txt": "However, anything can be decoded and tagged at will.", "language": "english", "position": {"atoms": [{"position_id": 4853, "txt": "However, anything can be decoded and tagged at will.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[46]"}]}, "tags": [], "label": "content", "web_segment_id": 157, "global_sentence_id": 298, "edu_l1_label": "IOS"}, {"txt": " Therefore, a generic decoding function exists, which has the following signature:", "language": "english", "position": {"atoms": [{"position_id": 4854, "txt": " Therefore, a generic decoding function exists, which has the following signature:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[46]"}]}, "tags": [], "label": "content", "web_segment_id": 157, "global_sentence_id": 299, "edu_l1_label": "IOS"}, {"txt": "inlinefun <reifiedT> Asn1Primitive.decode(assertTag:", "language": "english", "position": {"atoms": [{"position_id": 4856, "txt": "inline", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[1]"}, {"position_id": 4858, "txt": "fun", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[2]"}, {"position_id": 4860, "txt": " <", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[2]"}, {"position_id": 4862, "txt": "reified", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[3]"}, {"position_id": 4864, "txt": "T", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[4]"}, {"position_id": 4866, "txt": "> Asn1Primitive.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[4]"}, {"position_id": 4868, "txt": "decode", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[5]"}, {"position_id": 4870, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[5]"}, {"position_id": 4872, "txt": "assertTag", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[6]"}, {"position_id": 4874, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[7]"}]}, "tags": [], "label": "code", "web_segment_id": 158, "global_sentence_id": 300, "edu_l1_label": "EDU_O"}, {"txt": "Asn1Element.Tag, decode:", "language": "english", "position": {"atoms": [{"position_id": 4876, "txt": "Asn1Element", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[8]"}, {"position_id": 4878, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[8]"}, {"position_id": 4880, "txt": "Tag", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[9]"}, {"position_id": 4882, "txt": ", ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[9]"}, {"position_id": 4884, "txt": "decode", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[10]"}, {"position_id": 4886, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[11]"}]}, "tags": [], "label": "code", "web_segment_id": 158, "global_sentence_id": 301, "edu_l1_label": "EDU_O"}, {"txt": " (content:", "language": "english", "position": {"atoms": [{"position_id": 4888, "txt": " (content:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[11]"}]}, "tags": [], "label": "code", "web_segment_id": 158, "global_sentence_id": 302, "edu_l1_label": "EDU_O"}, {"txt": " ByteArray) ->T) ", "language": "english", "position": {"atoms": [{"position_id": 4889, "txt": " ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[11]"}, {"position_id": 4891, "txt": "ByteArray", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[12]"}, {"position_id": 4893, "txt": ") ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[12]"}, {"position_id": 4895, "txt": "->", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[13]"}, {"position_id": 4897, "txt": "T", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[14]"}, {"position_id": 4899, "txt": ") ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[37]/pre/span[14]"}]}, "tags": [], "label": "code", "web_segment_id": 158, "global_sentence_id": 303, "edu_l1_label": "EDU_O"}, {"txt": "Check out Asn1Decoding.kt for a full list of helper functions.", "language": "english", "position": {"atoms": [{"position_id": 4901, "txt": "Check out ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[47]"}, {"position_id": 4903, "txt": "Asn1Decoding.kt", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[47]/a"}, {"position_id": 4905, "txt": " for a full list of helper functions.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[47]/a"}]}, "tags": [], "label": "content", "web_segment_id": 160, "global_sentence_id": 304, "edu_l1_label": "IOS"}, {"txt": "ASN1 DSL for Creating ASN.1 Structures", "language": "english", "position": {"atoms": [{"position_id": 4907, "txt": "ASN1 DSL for Creating ASN.1 Structures", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[38]/h4"}]}, "tags": ["h4"], "label": "content", "web_segment_id": 161, "global_sentence_id": 305, "edu_l1_label": "IOS"}, {"txt": "While it is perfectly possible to manually construct a hierarchy of Asn1Element objects, we provide a more convenient DSL, which returns an Asn1Structure:", "language": "english", "position": {"atoms": [{"position_id": 4909, "txt": "While it is perfectly possible to manually construct a hierarchy of ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[48]"}, {"position_id": 4911, "txt": "Asn1Element", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[48]/code[1]"}, {"position_id": 4913, "txt": " objects, we provide a more convenient DSL, which returns an ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[48]/code[1]"}, {"position_id": 4915, "txt": "Asn1Structure", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[48]/code[2]"}, {"position_id": 4917, "txt": ":", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[48]/code[2]"}]}, "tags": [], "label": "content", "web_segment_id": 162, "global_sentence_id": 306, "edu_l1_label": "IOS"}, {"txt": "Asn1.Sequence {  +ExplicitlyTagged(1uL) {    +Asn1Primitive(Asn1Element.Tag.BOOL, byteArrayOf(0x00)) //or +Asn1.Bool(false)  }  +Asn1.Set {    +Asn1.Sequence {      +Asn1.SetOf {        +PrintableString(\"World\")        +PrintableString(\"Hello\")      }      +Asn1.Set {        +PrintableString(\"World\")        +PrintableString(\"Hello\")        +Utf8String(\"!!!\")      }    }  }  +Asn1.Null()  +ObjectIdentifier(\"1.2.603.624.97\")  +(Utf8String(\"Foo\") withImplicitTag (0xCAFEuL withClass TagClass.PRIVATE))  +PrintableString(\"Bar\")  //fake Primitive+(Asn1.Sequence { +Asn1.Int(42) } withImplicitTag (0x5EUL without CONSTRUCTED))  +Asn1.Set {    +Asn1.Int(3)    +Asn1.Int(-65789876543L)    +Asn1.Bool(false)    +Asn1.Bool(true)  }  +Asn1.Sequence {    +Asn1.Null()    +Asn1String.Numeric(\"12345\")    +UtcTime(Clock.System.now())  }} withImplicitTag (1337uL withClass TagClass.APPLICATION)", "language": "english", "position": {"atoms": [{"position_id": 4919, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[1]"}, {"position_id": 4921, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[1]"}, {"position_id": 4923, "txt": "Sequence", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[2]"}, {"position_id": 4925, "txt": " {\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[2]"}, {"position_id": 4927, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[3]"}, {"position_id": 4929, "txt": "ExplicitlyTagged", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[4]"}, {"position_id": 4931, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[4]"}, {"position_id": 4933, "txt": "1uL", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[5]"}, {"position_id": 4935, "txt": ") {\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[5]"}, {"position_id": 4937, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[6]"}, {"position_id": 4939, "txt": "Asn1Primitive", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[7]"}, {"position_id": 4941, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[7]"}, {"position_id": 4943, "txt": "Asn1Element", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[8]"}, {"position_id": 4945, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[8]"}, {"position_id": 4947, "txt": "Tag", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[9]"}, {"position_id": 4949, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[9]"}, {"position_id": 4951, "txt": "BOOL", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[10]"}, {"position_id": 4953, "txt": ", byteArrayOf(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[10]"}, {"position_id": 4955, "txt": "0x00", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[11]"}, {"position_id": 4957, "txt": ")) ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[11]"}, {"position_id": 4959, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[12]/span"}, {"position_id": 4961, "txt": "or +Asn1.Bool(false)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[12]/span"}, {"position_id": 4963, "txt": "\n  }\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[12]"}, {"position_id": 4965, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[13]"}, {"position_id": 4967, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[14]"}, {"position_id": 4969, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[14]"}, {"position_id": 4971, "txt": "Set", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[15]"}, {"position_id": 4973, "txt": " {\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[15]"}, {"position_id": 4975, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[16]"}, {"position_id": 4977, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[17]"}, {"position_id": 4979, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[17]"}, {"position_id": 4981, "txt": "Sequence", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[18]"}, {"position_id": 4983, "txt": " {\n      ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[18]"}, {"position_id": 4985, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[19]"}, {"position_id": 4987, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[20]"}, {"position_id": 4989, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[20]"}, {"position_id": 4991, "txt": "SetOf", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[21]"}, {"position_id": 4993, "txt": " {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[21]"}, {"position_id": 4995, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[22]"}, {"position_id": 4997, "txt": "PrintableString", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[23]"}, {"position_id": 4999, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[23]"}, {"position_id": 5001, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[24]/span[1]"}, {"position_id": 5003, "txt": "World", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[24]/span[1]"}, {"position_id": 5005, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[24]/span[2]"}, {"position_id": 5007, "txt": ")\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[24]"}, {"position_id": 5009, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[25]"}, {"position_id": 5011, "txt": "PrintableString", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[26]"}, {"position_id": 5013, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[26]"}, {"position_id": 5015, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[27]/span[1]"}, {"position_id": 5017, "txt": "Hello", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[27]/span[1]"}, {"position_id": 5019, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[27]/span[2]"}, {"position_id": 5021, "txt": ")\n      }\n      ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[27]"}, {"position_id": 5023, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[28]"}, {"position_id": 5025, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[29]"}, {"position_id": 5027, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[29]"}, {"position_id": 5029, "txt": "Set", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[30]"}, {"position_id": 5031, "txt": " {\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[30]"}, {"position_id": 5033, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[31]"}, {"position_id": 5035, "txt": "PrintableString", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[32]"}, {"position_id": 5037, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[32]"}, {"position_id": 5039, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[33]/span[1]"}, {"position_id": 5041, "txt": "World", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[33]/span[1]"}, {"position_id": 5043, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[33]/span[2]"}, {"position_id": 5045, "txt": ")\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[33]"}, {"position_id": 5047, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[34]"}, {"position_id": 5049, "txt": "PrintableString", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[35]"}, {"position_id": 5051, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[35]"}, {"position_id": 5053, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[36]/span[1]"}, {"position_id": 5055, "txt": "Hello", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[36]/span[1]"}, {"position_id": 5057, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[36]/span[2]"}, {"position_id": 5059, "txt": ")\n        ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[36]"}, {"position_id": 5061, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[37]"}, {"position_id": 5063, "txt": "Utf8String", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[38]"}, {"position_id": 5065, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[38]"}, {"position_id": 5067, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[39]/span[1]"}, {"position_id": 5069, "txt": "!!!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[39]/span[1]"}, {"position_id": 5071, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[39]/span[2]"}, {"position_id": 5073, "txt": ")\n      }\n\n    }\n  }\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[39]"}, {"position_id": 5075, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[40]"}, {"position_id": 5077, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[41]"}, {"position_id": 5079, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[41]"}, {"position_id": 5081, "txt": "Null", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[42]"}, {"position_id": 5083, "txt": "()\n\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[42]"}, {"position_id": 5085, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[43]"}, {"position_id": 5087, "txt": "ObjectIdentifier", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[44]"}, {"position_id": 5089, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[44]"}, {"position_id": 5091, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[45]/span[1]"}, {"position_id": 5093, "txt": "1.2.603.624.97", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[45]/span[1]"}, {"position_id": 5095, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[45]/span[2]"}, {"position_id": 5097, "txt": ")\n\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[45]"}, {"position_id": 5099, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[46]"}, {"position_id": 5101, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[46]"}, {"position_id": 5103, "txt": "Utf8String", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[47]"}, {"position_id": 5105, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[47]"}, {"position_id": 5107, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[48]/span[1]"}, {"position_id": 5109, "txt": "Foo", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[48]/span[1]"}, {"position_id": 5111, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[48]/span[2]"}, {"position_id": 5113, "txt": ") withImplicitTag (", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[48]"}, {"position_id": 5115, "txt": "0xCAFEuL", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[49]"}, {"position_id": 5117, "txt": " withClass ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[49]"}, {"position_id": 5119, "txt": "TagClass", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[50]"}, {"position_id": 5121, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[50]"}, {"position_id": 5123, "txt": "PRIVATE", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[51]"}, {"position_id": 5125, "txt": "))\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[51]"}, {"position_id": 5127, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[52]"}, {"position_id": 5129, "txt": "PrintableString", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[53]"}, {"position_id": 5131, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[53]"}, {"position_id": 5133, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[54]/span[1]"}, {"position_id": 5135, "txt": "Bar", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[54]/span[1]"}, {"position_id": 5137, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[54]/span[2]"}, {"position_id": 5139, "txt": ")\n\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[54]"}, {"position_id": 5141, "txt": "//", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[55]/span"}, {"position_id": 5143, "txt": "fake Primitive", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[55]/span"}, {"position_id": 5145, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[56]"}, {"position_id": 5147, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[56]"}, {"position_id": 5149, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[57]"}, {"position_id": 5151, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[57]"}, {"position_id": 5153, "txt": "Sequence", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[58]"}, {"position_id": 5155, "txt": " { ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[58]"}, {"position_id": 5157, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[59]"}, {"position_id": 5159, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[60]"}, {"position_id": 5161, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[60]"}, {"position_id": 5163, "txt": "Int", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[61]"}, {"position_id": 5165, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[61]"}, {"position_id": 5167, "txt": "42", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[62]"}, {"position_id": 5169, "txt": ") } withImplicitTag (", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[62]"}, {"position_id": 5171, "txt": "0x5EUL", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[63]"}, {"position_id": 5173, "txt": " without ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[63]"}, {"position_id": 5175, "txt": "CONSTRUCTED", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[64]"}, {"position_id": 5177, "txt": "))\n\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[64]"}, {"position_id": 5179, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[65]"}, {"position_id": 5181, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[66]"}, {"position_id": 5183, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[66]"}, {"position_id": 5185, "txt": "Set", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[67]"}, {"position_id": 5187, "txt": " {\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[67]"}, {"position_id": 5189, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[68]"}, {"position_id": 5191, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[69]"}, {"position_id": 5193, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[69]"}, {"position_id": 5195, "txt": "Int", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[70]"}, {"position_id": 5197, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[70]"}, {"position_id": 5199, "txt": "3", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[71]"}, {"position_id": 5201, "txt": ")\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[71]"}, {"position_id": 5203, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[72]"}, {"position_id": 5205, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[73]"}, {"position_id": 5207, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[73]"}, {"position_id": 5209, "txt": "Int", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[74]"}, {"position_id": 5211, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[74]"}, {"position_id": 5213, "txt": "-", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[75]"}, {"position_id": 5215, "txt": "65789876543L", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[76]"}, {"position_id": 5217, "txt": ")\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[76]"}, {"position_id": 5219, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[77]"}, {"position_id": 5221, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[78]"}, {"position_id": 5223, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[78]"}, {"position_id": 5225, "txt": "Bool", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[79]"}, {"position_id": 5227, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[79]"}, {"position_id": 5229, "txt": "false", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[80]"}, {"position_id": 5231, "txt": ")\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[80]"}, {"position_id": 5233, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[81]"}, {"position_id": 5235, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[82]"}, {"position_id": 5237, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[82]"}, {"position_id": 5239, "txt": "Bool", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[83]"}, {"position_id": 5241, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[83]"}, {"position_id": 5243, "txt": "true", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[84]"}, {"position_id": 5245, "txt": ")\n  }\n  ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[84]"}, {"position_id": 5247, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[85]"}, {"position_id": 5249, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[86]"}, {"position_id": 5251, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[86]"}, {"position_id": 5253, "txt": "Sequence", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[87]"}, {"position_id": 5255, "txt": " {\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[87]"}, {"position_id": 5257, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[88]"}, {"position_id": 5259, "txt": "Asn1", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[89]"}, {"position_id": 5261, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[89]"}, {"position_id": 5263, "txt": "Null", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[90]"}, {"position_id": 5265, "txt": "()\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[90]"}, {"position_id": 5267, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[91]"}, {"position_id": 5269, "txt": "Asn1String", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[92]"}, {"position_id": 5271, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[92]"}, {"position_id": 5273, "txt": "Numeric", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[93]"}, {"position_id": 5275, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[93]"}, {"position_id": 5277, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[94]/span[1]"}, {"position_id": 5279, "txt": "12345", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[94]/span[1]"}, {"position_id": 5281, "txt": "\"", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[94]/span[2]"}, {"position_id": 5283, "txt": ")\n    ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[94]"}, {"position_id": 5285, "txt": "+", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[95]"}, {"position_id": 5287, "txt": "UtcTime", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[96]"}, {"position_id": 5289, "txt": "(", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[96]"}, {"position_id": 5291, "txt": "Clock", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[97]"}, {"position_id": 5293, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[97]"}, {"position_id": 5295, "txt": "System", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[98]"}, {"position_id": 5297, "txt": ".now())\n  }\n} withImplicitTag (", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[98]"}, {"position_id": 5299, "txt": "1337uL", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[99]"}, {"position_id": 5301, "txt": " withClass ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[99]"}, {"position_id": 5303, "txt": "TagClass", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[100]"}, {"position_id": 5305, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[100]"}, {"position_id": 5307, "txt": "APPLICATION", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[101]"}, {"position_id": 5309, "txt": ")", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[39]/pre/span[101]"}]}, "tags": [], "label": "code", "web_segment_id": 163, "global_sentence_id": 307, "edu_l1_label": "EDU_O"}, {"txt": "In accordance with DER-Encoding, this produces the following ASN.1 structure:", "language": "english", "position": {"atoms": [{"position_id": 5311, "txt": "In accordance with DER-Encoding, this produces the following ASN.1 structure:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[49]"}]}, "tags": [], "label": "content", "web_segment_id": 165, "global_sentence_id": 308, "edu_l1_label": "IOS"}, {"txt": "Application 1337 (9 elem)    [1] (1 elem)        BOOLEAN false    SET (1 elem)        SEQUENCE (2 elem)            SET (2 elem)                PrintableString World                PrintableString Hello            SET (3 elem)                UTF8String !!!", "language": "english", "position": {"atoms": [{"position_id": 5313, "txt": "Application 1337 (9 elem)\n\n    [1] (1 elem)\n        BOOLEAN false\n    SET (1 elem)\n        SEQUENCE (2 elem)\n            SET (2 elem)\n                PrintableString World\n                PrintableString Hello\n            SET (3 elem)\n                UTF8String !!!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[40]/pre/code"}]}, "tags": [], "label": "content", "web_segment_id": 166, "global_sentence_id": 309, "edu_l1_label": "IOS"}, {"txt": "                PrintableString World                PrintableString Hello    NULL    OBJECT IDENTIFIER 1.2.603.624.97", "language": "english", "position": {"atoms": [{"position_id": 5314, "txt": "\n                PrintableString World\n                PrintableString Hello\n    NULL\n    OBJECT IDENTIFIER 1.2.603.624.97", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[40]/pre/code"}]}, "tags": [], "label": "code", "web_segment_id": 166, "global_sentence_id": 310, "edu_l1_label": "EDU_O"}, {"txt": "    Private 51966 (3 byte) Foo    PrintableString Bar    [94] (3 byte) 02012A    SET (4 elem)        BOOLEAN false        BOOLEAN true        INTEGER 3        INTEGER (36 bit) -65789876543    SEQUENCE (3 elem)        NULL        NumericString 12345        UTCTime 2024-09-16 11:53:51", "language": "english", "position": {"atoms": [{"position_id": 5315, "txt": "\n    Private 51966 (3 byte) Foo\n    PrintableString Bar\n    [94] (3 byte) 02012A\n    SET (4 elem)\n        BOOLEAN false\n        BOOLEAN true\n        INTEGER 3\n        INTEGER (36 bit) -65789876543\n    SEQUENCE (3 elem)\n        NULL\n        NumericString 12345\n        UTCTime 2024-09-16 11:53:51", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[40]/pre/code"}]}, "tags": [], "label": "code", "web_segment_id": 166, "global_sentence_id": 311, "edu_l1_label": "EDU_O"}, {"txt": " UTC", "language": "english", "position": {"atoms": [{"position_id": 5316, "txt": " UTC\n", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[40]/pre/code"}]}, "tags": [], "label": "code", "web_segment_id": 166, "global_sentence_id": 312, "edu_l1_label": "EDU_O"}, {"txt": "Limitations", "language": "english", "position": {"atoms": [{"position_id": 5318, "txt": "Limitations", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[41]/h2"}]}, "tags": ["h2"], "label": "title1", "web_segment_id": 168, "global_sentence_id": 313, "edu_l1_label": "BOS"}, {"txt": "Only DER encoding and parsing of ASN.1 structures is supported", "language": "english", "position": {"atoms": [{"position_id": 5320, "txt": "Only DER encoding and parsing of ASN.1 structures is supported", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[1]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 169, "global_sentence_id": 314, "edu_l1_label": "IOS"}, {"txt": "Higher-level abstractions (such as X509Certificate) are too lenient in some aspects and too strict in others.", "language": "english", "position": {"atoms": [{"position_id": 5322, "txt": "Higher-level abstractions (such as ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[2]"}, {"position_id": 5324, "txt": "X509Certificate", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[2]/code[1]"}, {"position_id": 5326, "txt": ") are too lenient in some aspects and too strict in others.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[2]/code[1]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 170, "global_sentence_id": 315, "edu_l1_label": "IOS"}, {"txt": " For example:", "language": "english", "position": {"atoms": [{"position_id": 5327, "txt": " For example:", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[2]/code[1]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 170, "global_sentence_id": 316, "edu_l1_label": "IOS"}, {"txt": " DSA-signed certificates will not parse to an instance of X509Certificate.", "language": "english", "position": {"atoms": [{"position_id": 5328, "txt": " DSA-signed certificates will not parse to an instance of ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[2]/code[1]"}, {"position_id": 5330, "txt": "X509Certificate", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[2]/code[2]"}, {"position_id": 5332, "txt": ".", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[2]/code[2]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 170, "global_sentence_id": 317, "edu_l1_label": "IOS"}, {"txt": " At the same time, certificates containing the same extension multiple times will work fine, even though they violate the spec.", "language": "english", "position": {"atoms": [{"position_id": 5333, "txt": " At the same time, certificates containing the same extension multiple times will work fine, even though they violate the spec.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[2]/code[2]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 170, "global_sentence_id": 318, "edu_l1_label": "IOS"}, {"txt": " This is irrelevant in practice, since platform-specific code will perform the actual cryptographic operations on these data structures and complain anyway, if something is off.", "language": "english", "position": {"atoms": [{"position_id": 5334, "txt": " This is irrelevant in practice, since platform-specific code will perform the actual cryptographic operations on these data structures and complain anyway, if something is off.", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[2]/code[2]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 170, "global_sentence_id": 319, "edu_l1_label": "IOS"}, {"txt": "No OCSP and CRL Checks (though it is perfectly possible to parse this data from a certificate and implement the checks)", "language": "english", "position": {"atoms": [{"position_id": 5336, "txt": "No OCSP and CRL Checks (though it is perfectly possible to parse this data from a certificate and implement the checks)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[3]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 171, "global_sentence_id": 320, "edu_l1_label": "IOS"}, {"txt": "Number of supported Algorithms is limited to the usual suspects (sorry, no Bernstein curves )-:)", "language": "english", "position": {"atoms": [{"position_id": 5338, "txt": "Number of supported Algorithms is limited to the usual suspects (sorry, no Bernstein curves )-:)", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/ul[9]/li[4]"}]}, "tags": ["li"], "label": "content", "web_segment_id": 172, "global_sentence_id": 321, "edu_l1_label": "IOS"}, {"txt": "Contributing", "language": "english", "position": {"atoms": [{"position_id": 5340, "txt": "Contributing", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/div[42]/h2"}]}, "tags": ["h2"], "label": "title1", "web_segment_id": 173, "global_sentence_id": 322, "edu_l1_label": "EDU_O"}, {"txt": "External contributions are greatly appreciated!", "language": "english", "position": {"atoms": [{"position_id": 5342, "txt": "External contributions are greatly appreciated!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[50]"}]}, "tags": [], "label": "content", "web_segment_id": 174, "global_sentence_id": 323, "edu_l1_label": "EDU_O"}, {"txt": " Be sure to observe the contribution guidelines (see CONTRIBUTING.md).", "language": "english", "position": {"atoms": [{"position_id": 5343, "txt": " Be sure to observe the contribution guidelines (see ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[50]"}, {"position_id": 5345, "txt": "CONTRIBUTING.md", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[50]/a[1]"}, {"position_id": 5347, "txt": ").", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[50]/a[1]"}]}, "tags": [], "label": "content", "web_segment_id": 174, "global_sentence_id": 324, "edu_l1_label": "EDU_O"}, {"txt": " In particular, external contributions to this project are subject to the A-SIT Plus Contributor License Agreement (see also CONTRIBUTING.md).", "language": "english", "position": {"atoms": [{"position_id": 5348, "txt": " In particular, external contributions to this project are subject to the A-SIT Plus Contributor License Agreement (see also ", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[50]/a[1]"}, {"position_id": 5350, "txt": "CONTRIBUTING.md", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[50]/a[2]"}, {"position_id": 5352, "txt": ").", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[50]/a[2]"}]}, "tags": [], "label": "content", "web_segment_id": 174, "global_sentence_id": 325, "edu_l1_label": "EDU_O"}, {"txt": "<table <table position_id=\"2433\"><thead position_id=\"2434\"><tr position_id=\"2435\"><th align=\"center\" position_id=\"2436\"><a rel=\"noopener noreferrer\" href=\"/a-sit-plus/signum/blob/main/docs/docs/assets/eu.svg\" target=\"_blank\" position_id=\"2437\"><img style=\"max-width: 100%;\" alt=\"eu.svg\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/eu.svg\" position_id=\"2438\"/></a> <br position_id=\"2439\"/> Co‑Funded by the<br position_id=\"2440\"/>European Union</th><th align=\"left\" position_id=\"2441\">This project has received funding from the European Union’s <a href=\"https://digital-strategy.ec.europa.eu/en/activities/digital-programme\" rel=\"nofollow\" position_id=\"2442\">Digital Europe Programme (DIGITAL)</a>, Project 101102655 — POTENTIAL.</th></tr></thead></table>", "language": "english", "position": {"atoms": [{"position_id": 2433, "txt": "<table <table position_id=\"2433\"><thead position_id=\"2434\"><tr position_id=\"2435\"><th align=\"center\" position_id=\"2436\"><a rel=\"noopener noreferrer\" href=\"/a-sit-plus/signum/blob/main/docs/docs/assets/eu.svg\" target=\"_blank\" position_id=\"2437\"><img style=\"max-width: 100%;\" alt=\"eu.svg\" src=\"/a-sit-plus/signum/raw/main/docs/docs/assets/eu.svg\" position_id=\"2438\"/></a> <br position_id=\"2439\"/> Co‑Funded by the<br position_id=\"2440\"/>European Union</th><th align=\"left\" position_id=\"2441\">This project has received funding from the European Union’s <a href=\"https://digital-strategy.ec.europa.eu/en/activities/digital-programme\" rel=\"nofollow\" position_id=\"2442\">Digital Europe Programme (DIGITAL)</a>, Project 101102655 — POTENTIAL.</th></tr></thead></table>", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/markdown-accessiblity-table[3]/table"}]}, "tags": ["table"], "label": "O", "web_segment_id": 31, "global_sentence_id": 326, "edu_l1_label": "EDU_O"}, {"txt": "The Apache License does not apply to the logos, (including the A-SIT logo) and the project/module name(s), as these are the sole property of A-SIT/A-SIT Plus GmbH and may not be used in derivative works without explicit permission!", "language": "english", "position": {"atoms": [{"position_id": 5354, "txt": "The Apache License does not apply to the logos, (including the A-SIT logo) and the project/module name(s), as these are the sole property of A-SIT/A-SIT Plus GmbH and may not be used in derivative works without explicit permission!", "x": "/html/body/div[1]/div[4]/div/main/turbo-frame/div/div/div/div/div[1]/react-partial/div/div/div[3]/div[2]/div/div[2]/article/p[51]"}]}, "tags": [], "label": "O", "web_segment_id": 175, "global_sentence_id": 327, "edu_l1_label": "EDU_O"}], "type": "WEB"}
# GitHub asitplus/signum: Kotlin Multiplatform Crypto/PKI/ASN.1 Library with Attestation and Hardware
## Using it in your Projects
## Rationale
## Supreme Demo Reel
### Signature Creation
#### Platform Signers
#### Key Attestation
### Signature Verification
#### Platform Verifiers
## Symmetric Encryption
### Baseline Usage
### Custom AES-CBC-HMAC
## ASN.1 Demo Reel
### Certificate Parsing
### Creating a CSR
### Working with Generic ASN.1 Structures
#### Decoding Values
#### ASN1 DSL for Creating ASN.1 Structures
## Limitations
## Contributing