directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From plusplusjia...@apache.org
Subject directory-kerby git commit: DIRKRB-503 Add tests of decoding mit rsa protocal pkinit AsReq and AsRep.
Date Thu, 17 Dec 2015 03:19:27 GMT
Repository: directory-kerby
Updated Branches:
  refs/heads/master c69285a1a -> e2c97d279


DIRKRB-503 Add tests of decoding mit rsa protocal pkinit AsReq and AsRep.


Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/e2c97d27
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/e2c97d27
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/e2c97d27

Branch: refs/heads/master
Commit: e2c97d2794a38c85af8c87d97fcd735d92657e8c
Parents: c69285a
Author: plusplusjiajia <jiajia.li@intel.com>
Authored: Thu Dec 17 11:26:08 2015 +0800
Committer: plusplusjiajia <jiajia.li@intel.com>
Committed: Thu Dec 17 11:26:08 2015 +0800

----------------------------------------------------------------------
 .../kerb/codec/TestPkinitRsaAsRepCodec.java     |  65 +++++++++++
 .../kerb/codec/TestPkinitRsaAsReqCodec.java     | 113 +++++++++++++++++++
 .../main/test/resources/pkinit_rsa_asrep.token  |   1 +
 .../main/test/resources/pkinit_rsa_asreq.token  |   1 +
 4 files changed, 180 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e2c97d27/kerby-kerb/kerb-core/src/main/test/java/org/apache/kerby/kerberos/kerb/codec/TestPkinitRsaAsRepCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/test/java/org/apache/kerby/kerberos/kerb/codec/TestPkinitRsaAsRepCodec.java
b/kerby-kerb/kerb-core/src/main/test/java/org/apache/kerby/kerberos/kerb/codec/TestPkinitRsaAsRepCodec.java
new file mode 100644
index 0000000..94b0d1d
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/test/java/org/apache/kerby/kerberos/kerb/codec/TestPkinitRsaAsRepCodec.java
@@ -0,0 +1,65 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+package org.apache.kerby.kerberos.kerb.codec;
+
+import org.apache.kerby.cms.type.ContentInfo;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.kdc.AsRep;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.PaPkAsRep;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class TestPkinitRsaAsRepCodec {
+    @Test
+    public void test() throws IOException {
+        byte[] bytes = CodecTestUtil.readDataFile("/pkinit_rsa_asrep.token");
+        ByteBuffer asRepToken = ByteBuffer.wrap(bytes);
+
+        AsRep asRep = new AsRep();
+        asRep.decode(asRepToken);
+
+        assertThat(asRep.getPvno()).isEqualTo(5);
+        assertThat(asRep.getMsgType()).isEqualTo(KrbMessageType.AS_REP);
+        PaData paData = asRep.getPaData();
+
+        PaDataEntry pkAsRepEntry = paData.findEntry(PaDataType.PK_AS_REP);
+        assertThat(pkAsRepEntry.getPaDataType()).isEqualTo(PaDataType.PK_AS_REP);
+
+        PaPkAsRep paPkAsRep = new PaPkAsRep();
+        byte[] padataValue = pkAsRepEntry.getPaDataValue();
+        paPkAsRep.decode(padataValue);
+
+        assertThat(paPkAsRep.getEncKeyPack()).isNotNull();
+
+        byte[] encKeyPack = paPkAsRep.getEncKeyPack();
+
+        ContentInfo contentInfo = new ContentInfo();
+        contentInfo.decode(encKeyPack);
+        assertThat(contentInfo.getContentType().getValue()).isEqualTo("1.2.840.113549.1.7.3");
+//        EnvelopedData envelopedData = contentInfo.getContentAs(EnvelopedData.class);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e2c97d27/kerby-kerb/kerb-core/src/main/test/java/org/apache/kerby/kerberos/kerb/codec/TestPkinitRsaAsReqCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/test/java/org/apache/kerby/kerberos/kerb/codec/TestPkinitRsaAsReqCodec.java
b/kerby-kerb/kerb-core/src/main/test/java/org/apache/kerby/kerberos/kerb/codec/TestPkinitRsaAsReqCodec.java
new file mode 100644
index 0000000..2bdac18
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/test/java/org/apache/kerby/kerberos/kerb/codec/TestPkinitRsaAsReqCodec.java
@@ -0,0 +1,113 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+package org.apache.kerby.kerberos.kerb.codec;
+
+import org.apache.kerby.asn1.Asn1;
+import org.apache.kerby.cms.type.ContentInfo;
+import org.apache.kerby.cms.type.SignedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.base.NameType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.AsReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.PaPkAsReq;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class TestPkinitRsaAsReqCodec {
+    @Test
+    public void test() throws IOException, ParseException {
+        byte[] bytes = CodecTestUtil.readDataFile("/pkinit_rsa_asreq.token");
+        Asn1.dump(bytes, true);
+        ByteBuffer asReqToken = ByteBuffer.wrap(bytes);
+
+        AsReq asReq = new AsReq();
+        asReq.decode(asReqToken);
+        //Asn1.dump(asReq, false);
+
+        assertThat(asReq.getPvno()).isEqualTo(5);
+        assertThat(asReq.getMsgType()).isEqualTo(KrbMessageType.AS_REQ);
+
+        PaData paData = asReq.getPaData();
+
+        PaDataEntry paFxCookieEntry = paData.findEntry(PaDataType.FX_COOKIE);
+        assertThat(paFxCookieEntry.getPaDataType()).isEqualTo(PaDataType.FX_COOKIE);
+        assertThat(paFxCookieEntry.getPaDataValue()).isEqualTo(Arrays.copyOfRange(bytes,
38, 41));
+
+        PaDataEntry pkAsReqEntry = paData.findEntry(PaDataType.PK_AS_REQ);
+        assertThat(pkAsReqEntry.getPaDataType()).isEqualTo(PaDataType.PK_AS_REQ);
+        assertThat(pkAsReqEntry.getPaDataValue()).isEqualTo(Arrays.copyOfRange(bytes, 58,
2138));
+
+        PaPkAsReq paPkAsReq = new PaPkAsReq();
+        paPkAsReq.decode(pkAsReqEntry.getPaDataValue());
+        ContentInfo contentInfo = new ContentInfo();
+//        Asn1.dump(paPkAsReq.getSignedAuthPack(), true);
+        contentInfo.decode(paPkAsReq.getSignedAuthPack());
+        assertThat(contentInfo.getContentType().getValue()).isEqualTo("1.2.840.113549.1.7.2");
+//        Asn1.dump(contentInfo);
+
+        SignedData signedData = contentInfo.getContentAs(SignedData.class);
+        assertThat(signedData.getCertificates().getElements().size()).isEqualTo(1);
+        assertThat(signedData.getEncapContentInfo().getContentType().getValue()).isEqualTo("1.3.6.1.5.2.3.1");
+
+        PaDataEntry encpaEntry = paData.findEntry(PaDataType.ENCPADATA_REQ_ENC_PA_REP);
+        assertThat(encpaEntry.getPaDataType()).isEqualTo(PaDataType.ENCPADATA_REQ_ENC_PA_REP);
+        assertThat(encpaEntry.getPaDataValue()).isEqualTo(Arrays.copyOfRange(bytes, 2148,
2148));
+
+        KdcReqBody body = asReq.getReqBody();
+        assertThat(body.getKdcOptions().getPadding()).isEqualTo(0);
+        assertThat(body.getKdcOptions().getValue()).isEqualTo(Arrays.copyOfRange(bytes, 2161,
2165));
+        PrincipalName cName = body.getCname();
+        assertThat(cName.getNameType()).isEqualTo(NameType.NT_PRINCIPAL);
+        assertThat(body.getRealm()).isEqualTo("EXAMPLE.COM");
+        PrincipalName sName = body.getSname();
+        assertThat(sName.getNameType()).isEqualTo(NameType.NT_SRV_INST);
+        assertThat(sName.getNameStrings()).hasSize(2)
+                .contains("krbtgt", "EXAMPLE.COM");
+
+        assertThat(body.getNonce()).isEqualTo(658979657);
+
+        List<EncryptionType> types = body.getEtypes();
+        assertThat(types).hasSize(6);
+        assertThat(types.get(0).getValue()).isEqualTo(0x0012);
+        assertThat(types.get(1).getValue()).isEqualTo(0x0011);
+        assertThat(types.get(2).getValue()).isEqualTo(0x0010);
+        assertThat(types.get(3).getValue()).isEqualTo(0x0017);
+        assertThat(types.get(4).getValue()).isEqualTo(0x0019);
+        assertThat(types.get(5).getValue()).isEqualTo(0x001A);
+
+        // Test encode PaPkAsReq
+        //TO BE FIXED
+//        byte[] encodedPaPkAsReq = paPkAsReq.encode();
+//        PaPkAsReq decodedPaPkAsReq = new PaPkAsReq();
+//        decodedPaPkAsReq.decode(encodedPaPkAsReq);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e2c97d27/kerby-kerb/kerb-core/src/main/test/resources/pkinit_rsa_asrep.token
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/test/resources/pkinit_rsa_asrep.token b/kerby-kerb/kerb-core/src/main/test/resources/pkinit_rsa_asrep.token
new file mode 100644
index 0000000..6d647de
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/test/resources/pkinit_rsa_asrep.token
@@ -0,0 +1 @@
+6b820b4530820b41a003020105a10302010ba28208ae308208aa308208a6a103020111a282089d04820899818208953082089106092a864886f70d010703a08208823082087e020100318201a6308201a2020100308189307c310b300906035504061302434e310b300906035504080c025348310b300906035504070c025348310e300c060355040a0c05494e54454c310e300c060355040b0c05494e54454c310f300d06035504030c064a49414a49413122302006092a864886f70d01090116134a49414a49412e4c4940494e54454c2e434f4d020900957b3b7d599fdde2300d06092a864886f70d0101010500048201001d63284bd7dbe9f46b42fdf40c1e5267e2860b5d872669622cfd7ff339008670e2a6ed0919b4da5bf99bfc93724249ff9f8adc72fa8a407c68153b40a607ff657103e8b9c8260ce2e3082fe3d91aad81ee61ebcdf0c6fec9db0d3dc2ea2895e57230a963818743457f704ed57087ecfba58b86d54f94622b89a66de024c9139004d32132a46a35e54bba070c2b6bc20eb01772436ef868c9cb16e73c9a1b00cbe0922f857271f28e1180cfda9a2c8703b185e9fd34aa2c7a83dd0f797dc75465210920272377753a82bafd382a949a19e0a7ea60aec456986e050a060620b8ec71138e362e6fdb8fd4cba99f0c2082dbb17e858a96839cf39381f41316b8b3d
 1308206cd06092a864886f70d010702301406082a864886f70d03070408aac7b1e3f23bda60808206a8b8d542124bbd8c777a18dc50ccb2d5c5f8079a28351905e2db02597cbe6937283886e37ffaa97dcd455d2bd2a19dd2463ef0e5583abc93b356c953bb165327fd35d8776c6ff57e5767f51e8277ee84b58fb18762f3d326bd4eab70e434c5128d94e39633cfe6243c4224f6ab9df155af10cc0c038075e3d321e8ccbda4712b48f5cac6a0803e931ce4742fd4efaa3bd9975dc4f62fef96c116a93c5cd6fe1a9045450357f483c352bb16e1ccd1502cc02cd45ea66a6279ae593a2cc604a4204b0431ad64006c5fd4505109550bc47f23969e4b822c8eba6448f4b92bfc6df61c349ee8a30aa3c86aedc165116314b77673877299bc58245419f32de685735fdb69f51cfeee6f825ab489f8bf3ef86549d745a3b3f6039c26312b47a26a9e4217ab3f0e2500acf0a2c4069087091ba408808501d348585ff7732edc1fa8f7d7eb38d7b208a39c347557712214b26f98ab8f68fe0a2ebab643779e2216d5e78d69779b37730d80510152f1b7de1abbd0ec09fe623e35b16fff7fdef02bc51173ccc9a2ea1fedfe115b35da21b86072f384cce741470e8c8ff25dcf313b08c8b4bbd7384580a8a3a229f930bce5ebf41bac5b0cabc36fb190b18aa0ad25e114f807adb45c789745b51d9e
 5cd52f139c3ae890681ddd89b34fac0f09afa9ab6ef0c2e21f266507cb2c820cf9e2fc24bde9f9a15892b8c9a5fd7d277c6d87e9b3c215f3f712a9ff3db3f3f2a6c9bef2f8a7066544b90a28e1e6f5c717c8bfee38f65c2bb816bb488a54b164d4d43c8524a98ee9e2bc7c1b85bf4abb93ece192438747277756d3c07840ff55625d310164aae88ed93df37e160a12940241c3b23009e096a5321e859e109ed50c5bd954e769518477cc67fd1321af7ecc345973f798969eff2f15577f3fc556d0a7e646e8eadf91b78d5ae563c781ebf8754deebc54aa69165a4f88efbfb4a19f101e5b72fd8247dae768e95f0fb072ac594bb9ed7d33e2b2f21e2ad2e6324a114700dcfb532988811faf2e180baa0fdb6b53e8955decbc0ae82e47630196f7b825cdf6876ef9ecda9bc6d0f46b11a688ea275afc1118ab72fbd983df2f8817c4415582b905d9e76eb472ac82b2568e3a3a653949e08c87fd19a7f4f2533bfdd121064f8abec63badf845db4ef9d215c4ca66e61d22ac636db6bfb0988f0ec8d3181d0dfe9a569e590e3fa006c88080ec58093a07d7b550a7186e8cdd02aac9f2d2d4a1b0d34d76a69d8c2d1a757bed099fc30a14cea6c585f26c619090ba597e46fcc8c60ae7f2e8d30ad8a2996e7e8f2838ab31855a09404dc5b499184fc48ef4854d6914f53b21829e0350a851569f155
 2420c4372e246ead39945f96efd04471cf6f81ee1430118181d118007bded3d9d42bf03cf8c156e0f27f77ed4c6aaebdcb95b27f79503ba5fc2deea6822c2e4998c3dbd73b063dc992ae98f4928bdbf6f56718df014fdbe1bf634e1dc3cbc877c1dde9acf622cdf1894984fe8739bfd6d1ce77309352e99fb947641d90941d38dcf9c9db43929c9f30f881eb6ab5755f9c8bc912f222a9c17785aad26587e5919af9be2847dcfa9202fddd045ad579f27b075b15590154a444d01cd96a63840c7c4bb7d4554da83e1180f914b0e3679c013f804b71df34f5e238ed82890c97f3170966607512a6871989a03294d81ca9fb3c1e57f801c807eaee97613c451deef82499fda1edf8837afc51273f2857760a111e7a4dba8f5ce4aecdb9332d0629d4f5d1fd84c77d7c0adba18e2c9b25c764f656121452f914b8e7dd715a4fe50b76f95ef619894a2081f17e1ebab9db5af4e257bf363884a6b762f56d42ac9359e84f8d7c774ea5315381ee28bf11153bb9c705941b2a40ffe553d9fb3605985ccac44c475e1bcc38adba2b6de41bc3da6a8ae7126816a57dc9ce2b644cd3e71c19508de9465b7ecf24bdebd32a232358901df9c112e08b0fb23590c66d77c2b7cb7e9600117eecc1375b592d3b8bc7c3c660cba398b7e82ff02693af3096ff7bf894b4d52cfc6a3ef4d74483b71f215996b9b
 9bab982f4927409316d0dc5cf64c7d33e772a117a3a4fcb449e0a8445b8b98c4035e56c000db33a8719c6cbb8e4775b2775fcb0b7261a98282461d7d1ede20f6e7f4f3e0e1c0bc1b92332053c70a0d69c94568c54a84f4795a32eba0ccefc08e6cc83e46821a6445c5b90cde8a658916133109db2a90e94edcc8389eb810d3d65bb8de628ebcab33877578bb0f6d5b80a9dfc1e2c8cc31033b78dfa8541205cac94bdf78e88c91f1261b4e654e9f737c137e317b9e91d05ceca45a26a7a7f9a5cd703a8e13d3868935ae5959792128ef9877b0a8c6fbae29874f4838ed0967b11f39337a43ab0bc8ee7163aceeebdbe4ffc6574b461c0158c8eea30d1b0b4558414d504c452e434f4da4133011a003020101a10a30081b066a69616a6961a58201406182013c30820138a003020105a10d1b0b4558414d504c452e434f4da220301ea003020102a11730151b066b72627467741b0b4558414d504c452e434f4da381ff3081fca003020112a103020101a281ef0481ecbf4cd0902315c4bf005955384ccec42bdbc4c310e483aedcba9e8f0f32c6612e2c70f5cbe703f57b223da8d7f2abb4ed8a97a65b2df4a117a4017c78ab627f97886b8a29e6a7f3bc7333bf0c7ae9f936899379243c490f6f796f1c5668501faa5a8203d9006c76dbc0495db1ea26bf358b46bf49be2b9ede331965f72
 fe01676815a5013e7cb94d5cb1b693ef147e12e6146887dcfd7b683618c7d907f00bfc3970ebf97a4659d9095714ac760eaa6481e4b1357598d8e3f5179e13bc7b566178c7b354e86d49d4460bb021991156817eb0237f63431742fb7c2457aafcc09022de7c7b975faed36e78f7fa3a682011930820115a003020112a282010c04820108b0b22e40b0910f9d18428c1d444054ce7b2d249c8a5896bbd80ed16cf880386d48e41880f2a579addae3573514c8877bbb6beb12bba0dcdc1171044332dc50816c8d70b5b1b9610281f53b2d5297e5977f4bf589e7c8eecdcd5b4bcbe2e05ad1183d8c1b3b23d650970c8e57f330d9eb307dddf1be513f427cd11cf8acf897e18fc792b94b6d8fcc81ee72602d7778905ee7a65e1112500d8bf8670da1342006afbc46fd0e406233afa3850d759d889832d5e28f56744cca4d806c740b8fbee2951a2945888298478005b68c4c6d9f86482583caefb46895e0b6b4727266d79ad09bafa483ea26e9515068e22c945dac1be7bdd0ae3475572d1962b5e44ab0bf53123225fb122882
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e2c97d27/kerby-kerb/kerb-core/src/main/test/resources/pkinit_rsa_asreq.token
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/test/resources/pkinit_rsa_asreq.token b/kerby-kerb/kerb-core/src/main/test/resources/pkinit_rsa_asreq.token
new file mode 100644
index 0000000..3e54cb3
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/test/resources/pkinit_rsa_asreq.token
@@ -0,0 +1 @@
+6a8208e8308208e4a103020105a20302010aa38208503082084c300da10402020085a20504034d49543082082da103020110a2820824048208203082081c808206e5308206e106092a864886f70d010702a08206d2308206ce020103310b300906052b0e03021a050030818c06072b060105020301a08180047e307ca03c303aa00502030af6e8a111180f32303135313231373032313233355aa206020427473b49a316041450cfad80b9dcaf2021e8563b335f91de58b201f9a20e300c300a06082a864886f70d0307a42c302a300ca00a06082b06010502030602300ca00a06082b06010502030601300ca00a06082b06010502030603a0820437308204333082031ba003020102020900957b3b7d599fdde2300d06092a864886f70d0101050500307c310b300906035504061302434e310b300906035504080c025348310b300906035504070c025348310e300c060355040a0c05494e54454c310e300c060355040b0c05494e54454c310f300d06035504030c064a49414a49413122302006092a864886f70d01090116134a49414a49412e4c4940494e54454c2e434f4d301e170d3135303931353032323134385a170d3136303931343032323134385a307c310b300906035504061302434e310b300906035504080c025348310b300906035504070c025348310e300c060355040
 a0c05494e54454c310e300c060355040b0c05494e54454c310f300d06035504030c064a49414a49413122302006092a864886f70d01090116134a49414a49412e4c4940494e54454c2e434f4d30820122300d06092a864886f70d01010105000382010f003082010a02820101009e17eda99c0bd68ac7d2859c0c1f6a3556c62ff12b289d4067b0d01bb2a647be4741909a2b83994c4d02edba7208fc7b99d2a2c1d6845ac7a0ab9aeca5f1aeea712339f4644538b1abb4f4a693303c48cd1e6915b8307b630ba2e2b1ae5083df33385d6264cf7f999c8162951afcc38478c1f996733d048c87a23185951b50ff790a048428263f47547f8cb2e6a914915491443909ae9b77fb2c02794c28af2938afce86b70a2f80cb4ba5111d51c34f6c760c82d6589d3d763a032e3b6887db3b3b5bfaa3d2bef5df044cce76701ffb6f8582e4e9a86dad9b640b57b763379564c3161d301be17cfd04a6fc3eae9a07e5cf4630c4f34ab0fe48af1aaf57f6970203010001a381b73081b430090603551d1304023000300b0603551d0f0404030203a830120603551d25040b300906072b060105020304301d0603551d0e0416041464fddc08dfafd2c04ec64865d73e0d2f4a6fbd91301f0603551d23041830168014423d560a460d97a08abad00436f8a4d42661d7b030090603551d1204023000303b06
 03551d1104343032a03006062b0601050202a0263024a00d1b0b4558414d504c452e434f4da1133011a003020101a10a30081b066a69616a6961300d06092a864886f70d0101050500038201010094685852d004eb658edfb2bc96fb9754361dbbfbb06e83ee770baf2500a2cabfec736fe7f45d283d0270a9a826dbe945f4d036befb15afd8ea0af070c428332a0f375e86fea27e0f3416f2d44b8328d77d7b33af08c3c3443e8618a4eb52d5d4e1c8dddf6cb320c3643e75a0b05156f08e4c219ee89e6df8915d7272676710caae1f37f5cf002898383881d7fee3873b1cad07a117a9e2c9db6f1bbae32f188a4f51383681d917eb8ea78ba67b979e7bcef09adfb01c9b9739be9246eee8423895f11c0ba5d4946f18cfaad348795c9efc7fedfeb8eec5447cc156301cc618eb220955ce02d445b9f0403bfd3dfc4940358dd9a095429a9f885bd908c8c96671318201f0308201ec020101308189307c310b300906035504061302434e310b300906035504080c025348310b300906035504070c025348310e300c060355040a0c05494e54454c310e300c060355040b0c05494e54454c310f300d06035504030c064a49414a49413122302006092a864886f70d01090116134a49414a49412e4c4940494e54454c2e434f4d020900957b3b7d599fdde2300906052b0e03021a0500a03d3
 01606092a864886f70d010903310906072b060105020301302306092a864886f70d01090431160414c231f11c62b4f747fe33023a9be475902f6ad068300d06092a864886f70d0101050500048201002f1e046ff68a8554c6a988b7a82975a6dd908cb633fae367c2960b7c62a50d814f132fd3ec381f9d59800ad58654fe4c3de1cc9ab3ae3cd183cb737530609ab3487a2fda32897ab8e8a4c264b5cc2be03c38b25593ddd787477daa324116ab11d143610b657f5bed5b2bd5a111f4dbf887a356a0049265ec3728c08e4d568b834000e931a3b722ed6a27096a21c4301686920ba3195ccc9b203a9287c880a1068701c5b3d66f35abc5097ebdea93a9b6a85f147391057913da62d9b4600a0f585b9bef11381432f3837173a82d7762e7bf1984e454c3e91f378459852ae9751d496e185ab8a659f9d8ba0cab7fcd210176fc6bfb55d9004a49b06f634279c9ffa182012f3082012b30820127807e307c310b300906035504061302434e310b300906035504080c025348310b300906035504070c025348310e300c060355040a0c05494e54454c310e300c060355040b0c05494e54454c310f300d06035504030c064a49414a49413122302006092a864886f70d01090116134a49414a49412e4c4940494e54454c2e434f4d81818c308189307c310b300906035504061302434e310b
 300906035504080c025348310b300906035504070c025348310e300c060355040a0c05494e54454c310e300c060355040b0c05494e54454c310f300d06035504030c064a49414a49413122302006092a864886f70d01090116134a49414a49412e4c4940494e54454c2e434f4d0209009f561dd97cee1bf982160414423d560a460d97a08abad00436f8a4d42661d7b0300aa10402020095a2020400a48183308180a00703050000000010a1133011a003020101a10a30081b066a69616a6961a20d1b0b4558414d504c452e434f4da320301ea003020102a11730151b066b72627467741b0b4558414d504c452e434f4da511180f32303135313231383032313233355aa706020427473b49a814301202011202011102011002011702011902011a
\ No newline at end of file


Mime
View raw message