Home
last modified time | relevance | path

Searched refs:certs (Results 1 - 25 of 530) sorted by relevance

12345678910>>...22

/third_party/openssl/test/
H A Dcmp_protect_test.c28 STACK_OF(X509) *certs;
45 sk_X509_free(fixture->certs); in tear_down()
330 /* The cert chain tests use EC certs so we skip them in no-ec builds */
337 X509_build_chain(fixture->cert, fixture->certs, NULL, in execute_cmp_build_cert_chain_test()
352 chain = X509_build_chain(fixture->cert, fixture->certs, store, in execute_cmp_build_cert_chain_test()
371 if (!TEST_ptr(fixture->certs = sk_X509_new_null()) in test_cmp_build_cert_chain()
373 || !TEST_true(sk_X509_push(fixture->certs, endentity1)) in test_cmp_build_cert_chain()
374 || !TEST_true(sk_X509_push(fixture->certs, root)) in test_cmp_build_cert_chain()
375 || !TEST_true(sk_X509_push(fixture->certs, intermediate)) in test_cmp_build_cert_chain()
397 if (!TEST_ptr(fixture->certs in test_cmp_build_cert_chain_missing_intermediate()
[all...]
/third_party/node/deps/openssl/openssl/crypto/ocsp/
H A Docsp_vfy.c17 STACK_OF(X509) *certs, unsigned long flags);
18 static X509 *ocsp_find_signer_sk(STACK_OF(X509) *certs, OCSP_RESPID *id);
26 const X509_NAME *nm, STACK_OF(X509) *certs,
98 int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, in OCSP_basic_verify() argument
104 int ret = ocsp_find_signer(&signer, bs, certs, flags); in OCSP_basic_verify()
118 if ((untrusted = sk_X509_dup(bs->certs)) == NULL) in OCSP_basic_verify()
120 if (!X509_add_certs(untrusted, certs, X509_ADD_FLAG_DEFAULT)) in OCSP_basic_verify()
169 STACK_OF(X509) *certs, unsigned long flags) in ocsp_find_signer()
174 if ((signer = ocsp_find_signer_sk(certs, rid)) != NULL) { in ocsp_find_signer()
179 (signer = ocsp_find_signer_sk(bs->certs, ri in ocsp_find_signer()
168 ocsp_find_signer(X509 **psigner, OCSP_BASICRESP *bs, STACK_OF(X509) *certs, unsigned long flags) ocsp_find_signer() argument
385 OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, X509_STORE *store, unsigned long flags) OCSP_request_verify() argument
421 ocsp_req_find_signer(X509 **psigner, OCSP_REQUEST *req, const X509_NAME *nm, STACK_OF(X509) *certs, unsigned long flags) ocsp_req_find_signer() argument
[all...]
/third_party/openssl/crypto/ocsp/
H A Docsp_vfy.c17 STACK_OF(X509) *certs, unsigned long flags);
18 static X509 *ocsp_find_signer_sk(STACK_OF(X509) *certs, OCSP_RESPID *id);
26 const X509_NAME *nm, STACK_OF(X509) *certs,
98 int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, in OCSP_basic_verify() argument
104 int ret = ocsp_find_signer(&signer, bs, certs, flags); in OCSP_basic_verify()
118 if ((untrusted = sk_X509_dup(bs->certs)) == NULL) in OCSP_basic_verify()
120 if (!X509_add_certs(untrusted, certs, X509_ADD_FLAG_DEFAULT)) in OCSP_basic_verify()
169 STACK_OF(X509) *certs, unsigned long flags) in ocsp_find_signer()
174 if ((signer = ocsp_find_signer_sk(certs, rid)) != NULL) { in ocsp_find_signer()
179 (signer = ocsp_find_signer_sk(bs->certs, ri in ocsp_find_signer()
168 ocsp_find_signer(X509 **psigner, OCSP_BASICRESP *bs, STACK_OF(X509) *certs, unsigned long flags) ocsp_find_signer() argument
385 OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, X509_STORE *store, unsigned long flags) OCSP_request_verify() argument
421 ocsp_req_find_signer(X509 **psigner, OCSP_REQUEST *req, const X509_NAME *nm, STACK_OF(X509) *certs, unsigned long flags) ocsp_req_find_signer() argument
[all...]
/third_party/rust/crates/rust-openssl/openssl/src/
H A Dpkcs7.rs97 /// `certs` is a list of recipient certificates. `input` is the content to be
102 certs: &StackRef<X509>, in encrypt()
111 certs.as_ptr(), in encrypt()
123 /// private key. `certs` is an optional additional set of certificates to
130 certs: &StackRef<X509>, in sign()
142 certs.as_ptr(), in sign()
216 /// `certs` is a set of certificates in which to search for the signer's
223 certs: &StackRef<X509>, in verify()
240 certs.as_ptr(), in verify()
261 certs in signers()
298 let mut certs = Stack::new().unwrap(); encrypt_decrypt_test() variables
[all...]
/third_party/wpa_supplicant/wpa_supplicant-2.9/src/crypto/
H A Dtls_openssl_ocsp.c160 * certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }
166 STACK_OF(X509) *certs;
214 ASN1_EXP_SEQUENCE_OF_OPT(BasicOCSPResponse, certs, X509, 0)
460 static X509 * ocsp_find_signer(STACK_OF(X509) *certs, ResponderID *rid) in STACK_OF()
467 return X509_find_by_subject(certs, rid->value.byName); in STACK_OF()
473 for (i = 0; i < sk_X509_num(certs); i++) { in STACK_OF()
474 X509 *x = sk_X509_value(certs, i); in STACK_OF()
504 STACK_OF(X509) *untrusted = NULL, *certs = NULL, *chain = NULL; in check_ocsp_resp()
564 if (basic->certs) { in check_ocsp_resp()
565 untrusted = sk_X509_dup(basic->certs); in check_ocsp_resp()
[all...]
/third_party/wpa_supplicant/wpa_supplicant-2.9_standard/src/crypto/
H A Dtls_openssl_ocsp.c160 * certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }
166 STACK_OF(X509) *certs;
214 ASN1_EXP_SEQUENCE_OF_OPT(BasicOCSPResponse, certs, X509, 0)
460 static X509 * ocsp_find_signer(STACK_OF(X509) *certs, ResponderID *rid) in STACK_OF()
467 return X509_find_by_subject(certs, rid->value.byName); in STACK_OF()
473 for (i = 0; i < sk_X509_num(certs); i++) { in STACK_OF()
474 X509 *x = sk_X509_value(certs, i); in STACK_OF()
504 STACK_OF(X509) *untrusted = NULL, *certs = NULL, *chain = NULL; in check_ocsp_resp()
564 if (basic->certs) { in check_ocsp_resp()
565 untrusted = sk_X509_dup(basic->certs); in check_ocsp_resp()
[all...]
/third_party/node/deps/openssl/openssl/crypto/pkcs7/
H A Dpk7_smime.c23 PKCS7 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, in PKCS7_sign_ex() argument
47 for (i = 0; i < sk_X509_num(certs); i++) { in PKCS7_sign_ex()
48 if (!PKCS7_add_certificate(p7, sk_X509_value(certs, i))) in PKCS7_sign_ex()
67 PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, in PKCS7_sign() argument
70 return PKCS7_sign_ex(signcert, pkey, certs, data, flags, NULL, NULL); in PKCS7_sign()
213 int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, in PKCS7_verify() argument
264 signers = PKCS7_get0_signers(p7, certs, flags); in PKCS7_verify()
382 STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, in STACK_OF()
421 if (certs) in STACK_OF()
422 signer = X509_find_by_issuer_and_serial(certs, in STACK_OF()
[all...]
/third_party/openssl/crypto/pkcs7/
H A Dpk7_smime.c23 PKCS7 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, in PKCS7_sign_ex() argument
47 for (i = 0; i < sk_X509_num(certs); i++) { in PKCS7_sign_ex()
48 if (!PKCS7_add_certificate(p7, sk_X509_value(certs, i))) in PKCS7_sign_ex()
67 PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, in PKCS7_sign() argument
70 return PKCS7_sign_ex(signcert, pkey, certs, data, flags, NULL, NULL); in PKCS7_sign()
213 int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, in PKCS7_verify() argument
264 signers = PKCS7_get0_signers(p7, certs, flags); in PKCS7_verify()
382 STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, in STACK_OF()
421 if (certs) in STACK_OF()
422 signer = X509_find_by_issuer_and_serial(certs, in STACK_OF()
[all...]
/third_party/node/deps/npm/node_modules/@sigstore/verify/dist/key/
H A Dcertificate.js195 function dedupeCertificates(certs) {
196 for (let i = 0; i < certs.length; i++) {
197 for (let j = i + 1; j < certs.length; j++) {
198 if (certs[i].equals(certs[j])) {
199 certs.splice(j, 1);
204 return certs;
/third_party/node/deps/openssl/openssl/fuzz/
H A Dx509.c45 STACK_OF(X509) *certs = NULL; in FuzzerTestOneInput()
117 certs = sk_X509_new_null(); in FuzzerTestOneInput()
118 if (certs == NULL) in FuzzerTestOneInput()
121 sk_X509_push(certs, x509_1); in FuzzerTestOneInput()
122 sk_X509_push(certs, x509_2); in FuzzerTestOneInput()
124 OCSP_basic_verify(bs, certs, store, OCSP_PARTIAL_CHAIN); in FuzzerTestOneInput()
144 sk_X509_free(certs); in FuzzerTestOneInput()
/third_party/node/deps/openssl/openssl/apps/
H A Dnseq.c91 seq->certs = sk_X509_new_null(); in nseq_main()
92 if (seq->certs == NULL) in nseq_main()
95 if (!sk_X509_push(seq->certs, x509)) in nseq_main()
99 if (!sk_X509_num(seq->certs)) { in nseq_main()
100 BIO_printf(bio_err, "%s: Error reading certs file %s\n", in nseq_main()
118 for (i = 0; i < sk_X509_num(seq->certs); i++) { in nseq_main()
119 x509 = sk_X509_value(seq->certs, i); in nseq_main()
H A Dpkcs7.c48 "Print_certs print any certs or crl in the input"},
147 STACK_OF(X509) *certs = NULL; in pkcs7_main()
154 certs = p7->d.sign->cert; in pkcs7_main()
160 certs = p7->d.signed_and_enveloped->cert; in pkcs7_main()
168 if (certs != NULL) { in pkcs7_main()
171 for (i = 0; i < sk_X509_num(certs); i++) { in pkcs7_main()
172 x = sk_X509_value(certs, i); in pkcs7_main()
/third_party/openssl/test/testutil/
H A Dload.c35 STACK_OF(X509) *certs; in STACK_OF()
42 certs = sk_X509_new_null(); in STACK_OF()
43 if (certs == NULL) { in STACK_OF()
51 if (x != NULL && !sk_X509_push(certs, x)) { in STACK_OF()
52 sk_X509_pop_free(certs, X509_free); in STACK_OF()
57 * We probably just ran out of certs, so ignore any errors in STACK_OF()
66 return certs; in STACK_OF()
/third_party/openssl/apps/
H A Dnseq.c91 seq->certs = sk_X509_new_null(); in nseq_main()
92 if (seq->certs == NULL) in nseq_main()
95 if (!sk_X509_push(seq->certs, x509)) in nseq_main()
99 if (!sk_X509_num(seq->certs)) { in nseq_main()
100 BIO_printf(bio_err, "%s: Error reading certs file %s\n", in nseq_main()
118 for (i = 0; i < sk_X509_num(seq->certs); i++) { in nseq_main()
119 x509 = sk_X509_value(seq->certs, i); in nseq_main()
H A Dpkcs7.c48 "Print_certs print any certs or crl in the input"},
147 STACK_OF(X509) *certs = NULL; in pkcs7_main()
154 certs = p7->d.sign->cert; in pkcs7_main()
160 certs = p7->d.signed_and_enveloped->cert; in pkcs7_main()
168 if (certs != NULL) { in pkcs7_main()
171 for (i = 0; i < sk_X509_num(certs); i++) { in pkcs7_main()
172 x = sk_X509_value(certs, i); in pkcs7_main()
/third_party/node/deps/openssl/openssl/crypto/ess/
H A Dess_lib.c25 const STACK_OF(X509) *certs, in OSSL_ESS_signing_cert_new_init()
41 for (i = 0; i < sk_X509_num(certs); ++i) { in OSSL_ESS_signing_cert_new_init()
42 X509 *cert = sk_X509_value(certs, i); in OSSL_ESS_signing_cert_new_init()
102 STACK_OF(X509) *certs, in OSSL_ESS_signing_cert_v2_new_init()
118 for (i = 0; i < sk_X509_num(certs); ++i) { in OSSL_ESS_signing_cert_v2_new_init()
119 X509 *cert = sk_X509_value(certs, i); in OSSL_ESS_signing_cert_v2_new_init()
213 * Find the cert in |certs| referenced by |cid| if not NULL, else by |cid_v2|.
214 * The cert must be the first one in |certs| if and only if |index| is 0.
215 * Return 0 on not found, -1 on error, else 1 + the position in |certs|.
218 int index, const STACK_OF(X509) *certs) in find()
24 OSSL_ESS_signing_cert_new_init(const X509 *signcert, const STACK_OF(X509) *certs, int set_issuer_serial) OSSL_ESS_signing_cert_new_init() argument
99 OSSL_ESS_signing_cert_v2_new_init(const EVP_MD *hash_alg, const X509 *signcert, const STACK_OF(X509) *certs, int set_issuer_serial) OSSL_ESS_signing_cert_v2_new_init() argument
217 find(const ESS_CERT_ID *cid, const ESS_CERT_ID_V2 *cid_v2, int index, const STACK_OF(X509) *certs) find() argument
[all...]
/third_party/openssl/crypto/ess/
H A Dess_lib.c25 const STACK_OF(X509) *certs, in OSSL_ESS_signing_cert_new_init()
41 for (i = 0; i < sk_X509_num(certs); ++i) { in OSSL_ESS_signing_cert_new_init()
42 X509 *cert = sk_X509_value(certs, i); in OSSL_ESS_signing_cert_new_init()
102 STACK_OF(X509) *certs, in OSSL_ESS_signing_cert_v2_new_init()
118 for (i = 0; i < sk_X509_num(certs); ++i) { in OSSL_ESS_signing_cert_v2_new_init()
119 X509 *cert = sk_X509_value(certs, i); in OSSL_ESS_signing_cert_v2_new_init()
213 * Find the cert in |certs| referenced by |cid| if not NULL, else by |cid_v2|.
214 * The cert must be the first one in |certs| if and only if |index| is 0.
215 * Return 0 on not found, -1 on error, else 1 + the position in |certs|.
218 int index, const STACK_OF(X509) *certs) in find()
24 OSSL_ESS_signing_cert_new_init(const X509 *signcert, const STACK_OF(X509) *certs, int set_issuer_serial) OSSL_ESS_signing_cert_new_init() argument
99 OSSL_ESS_signing_cert_v2_new_init(const EVP_MD *hash_alg, const X509 *signcert, const STACK_OF(X509) *certs, int set_issuer_serial) OSSL_ESS_signing_cert_v2_new_init() argument
217 find(const ESS_CERT_ID *cid, const ESS_CERT_ID_V2 *cid_v2, int index, const STACK_OF(X509) *certs) find() argument
[all...]
/third_party/node/deps/openssl/openssl/crypto/ts/
H A Dts_verify_ctx.c64 STACK_OF(X509) *certs) in STACK_OF()
66 ctx->certs = certs; in STACK_OF()
67 return ctx->certs; in STACK_OF()
85 sk_X509_pop_free(ctx->certs, X509_free); in TS_VERIFY_CTX_cleanup()
H A Dts_rsp_sign.c150 sk_X509_pop_free(ctx->certs, X509_free); in TS_RESP_CTX_free()
198 int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs) in TS_RESP_CTX_set_certs() argument
200 sk_X509_pop_free(ctx->certs, X509_free); in TS_RESP_CTX_set_certs()
201 ctx->certs = NULL; in TS_RESP_CTX_set_certs()
203 return certs == NULL || (ctx->certs = X509_chain_up_ref(certs)) != NULL; in TS_RESP_CTX_set_certs()
680 STACK_OF(X509) *certs; /* Certificates to include in sc. */ in ts_RESP_sign()
704 if (ctx->certs) { in ts_RESP_sign()
705 for (i = 0; i < sk_X509_num(ctx->certs); in ts_RESP_sign()
[all...]
/third_party/openssl/crypto/ts/
H A Dts_verify_ctx.c64 STACK_OF(X509) *certs) in STACK_OF()
66 ctx->certs = certs; in STACK_OF()
67 return ctx->certs; in STACK_OF()
85 sk_X509_pop_free(ctx->certs, X509_free); in TS_VERIFY_CTX_cleanup()
H A Dts_rsp_sign.c150 sk_X509_pop_free(ctx->certs, X509_free); in TS_RESP_CTX_free()
198 int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs) in TS_RESP_CTX_set_certs() argument
200 sk_X509_pop_free(ctx->certs, X509_free); in TS_RESP_CTX_set_certs()
201 ctx->certs = NULL; in TS_RESP_CTX_set_certs()
203 return certs == NULL || (ctx->certs = X509_chain_up_ref(certs)) != NULL; in TS_RESP_CTX_set_certs()
680 STACK_OF(X509) *certs; /* Certificates to include in sc. */ in ts_RESP_sign()
704 if (ctx->certs) { in ts_RESP_sign()
705 for (i = 0; i < sk_X509_num(ctx->certs); in ts_RESP_sign()
[all...]
/third_party/node/deps/openssl/openssl/crypto/cms/
H A Dcms_smime.c262 STACK_OF(X509) *certs, in cms_signerinfo_verify_cert()
278 if (!X509_STORE_CTX_init(ctx, store, signer, certs)) { in cms_signerinfo_verify_cert()
304 int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs, in CMS_verify() argument
344 scount += CMS_set1_signers_certs(cms, certs, flags); in CMS_verify()
351 /* Attempt to verify all signers certs */ in CMS_verify()
492 STACK_OF(X509) *certs, in CMS_verify_receipt()
498 r = CMS_verify(rcms, certs, store, NULL, NULL, flags); in CMS_verify_receipt()
505 STACK_OF(X509) *certs, BIO *data, in CMS_sign_ex()
525 for (i = 0; i < sk_X509_num(certs); i++) { in CMS_sign_ex()
526 X509 *x = sk_X509_value(certs, in CMS_sign_ex()
260 cms_signerinfo_verify_cert(CMS_SignerInfo *si, X509_STORE *store, STACK_OF(X509) *certs, STACK_OF(X509_CRL) *crls, STACK_OF(X509) **chain, const CMS_CTX *cms_ctx) cms_signerinfo_verify_cert() argument
491 CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms, STACK_OF(X509) *certs, X509_STORE *store, unsigned int flags) CMS_verify_receipt() argument
504 CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq) CMS_sign_ex() argument
549 CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags) CMS_sign() argument
555 CMS_sign_receipt(CMS_SignerInfo *si, X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, unsigned int flags) CMS_sign_receipt() argument
[all...]
/third_party/openssl/crypto/cms/
H A Dcms_smime.c263 STACK_OF(X509) *certs, in cms_signerinfo_verify_cert()
279 if (!X509_STORE_CTX_init(ctx, store, signer, certs)) { in cms_signerinfo_verify_cert()
305 int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs, in CMS_verify() argument
345 scount += CMS_set1_signers_certs(cms, certs, flags); in CMS_verify()
352 /* Attempt to verify all signers certs */ in CMS_verify()
493 STACK_OF(X509) *certs, in CMS_verify_receipt()
499 r = CMS_verify(rcms, certs, store, NULL, NULL, flags); in CMS_verify_receipt()
506 STACK_OF(X509) *certs, BIO *data, in CMS_sign_ex()
526 for (i = 0; i < sk_X509_num(certs); i++) { in CMS_sign_ex()
527 X509 *x = sk_X509_value(certs, in CMS_sign_ex()
261 cms_signerinfo_verify_cert(CMS_SignerInfo *si, X509_STORE *store, STACK_OF(X509) *certs, STACK_OF(X509_CRL) *crls, STACK_OF(X509) **chain, const CMS_CTX *cms_ctx) cms_signerinfo_verify_cert() argument
492 CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms, STACK_OF(X509) *certs, X509_STORE *store, unsigned int flags) CMS_verify_receipt() argument
505 CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq) CMS_sign_ex() argument
550 CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags) CMS_sign() argument
556 CMS_sign_receipt(CMS_SignerInfo *si, X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, unsigned int flags) CMS_sign_receipt() argument
[all...]
/third_party/wpa_supplicant/wpa_supplicant-2.9_standard/hs20/client/
H A Dest.c40 STACK_OF(X509) *certs; in pkcs7_to_cert()
45 certs = sk_X509_new_null(); in pkcs7_to_cert()
46 if (!certs) in pkcs7_to_cert()
49 if (!PKCS7_get_certificates(certs, &pkcs7_cbs)) { in pkcs7_to_cert()
66 certs = p7->d.sign->cert; in pkcs7_to_cert()
69 certs = p7->d.signed_and_enveloped->cert; in pkcs7_to_cert()
72 certs = NULL; in pkcs7_to_cert()
77 if (!certs || ((num = sk_X509_num(certs)) == 0)) { in pkcs7_to_cert()
87 i2d_X509_fp(f, sk_X509_value(certs, in pkcs7_to_cert()
[all...]
/third_party/wpa_supplicant/wpa_supplicant-2.9/hs20/client/
H A Dest.c40 STACK_OF(X509) *certs; in pkcs7_to_cert()
45 certs = sk_X509_new_null(); in pkcs7_to_cert()
46 if (!certs) in pkcs7_to_cert()
49 if (!PKCS7_get_certificates(certs, &pkcs7_cbs)) { in pkcs7_to_cert()
66 certs = p7->d.sign->cert; in pkcs7_to_cert()
69 certs = p7->d.signed_and_enveloped->cert; in pkcs7_to_cert()
72 certs = NULL; in pkcs7_to_cert()
77 if (!certs || ((num = sk_X509_num(certs)) == 0)) { in pkcs7_to_cert()
87 i2d_X509_fp(f, sk_X509_value(certs, in pkcs7_to_cert()
[all...]

Completed in 14 milliseconds

12345678910>>...22