Commit 4b93825f authored by pengjun's avatar pengjun

add paillier testcase

parent e43e8e02
......@@ -165,6 +165,28 @@ func TestStorage(t *testing.T) {
assert.Equal(t, common.Sha256(contents[0]), reply.GetEncryptStorage().ContentHash)
assert.Equal(t, crypted, reply.GetEncryptStorage().EncryptContent)
assert.Equal(t, ivs[0], reply.GetEncryptStorage().Nonce)
// 同态加密
c1, _ := common.FromHex("010076833cbc35c9b7a87eda9aab7aafec45bd7eb8c0e9306141e7d1e84ecd87a5cb9f80343551bd9b0d04669fd74d020fca8837d9b3b471e3e13c125a06663d820cabb36c243747a11ea2601a9cb32e61c697dcdc846c492d954fa8c3ca2be662e8c0142138b647ce5d9e7c4c4d2ace8ba3c5699fbec98beef24e3c740967ec0b72b1626ecd4a7ce54960ae9bc1e2ea5594b05778f4f772aa213a06421744ed8dd775fb8f212bcc7e0da5fe4949051e6aa09d47db7e8d5028ecc41cea2aed4e23aefd80714519662fae980e3a6ca3defc0dd5596cb7e90da29e1bdd84db82603aed78fb8f98687898cd675da74452052ff1761446bf2ee922fc8c56b7e1beb2d4b91042742837052b340e4afce1836badf4a56ef775bb6a94fd91686a44122543fdab3ee90488160068769fbce2e74ffd5e052bb4c651969c4755f6eb5d7ea0cee3e7fa58f4b38b1722535909bd0f325a0b8d0797c15300ab06095b305f46497bbd75c3682d379387f55f638cd10639db1f050090bfd5d291718cee9fc6894d04ba6ef0acb477184512984f435b13e9bffe630bbc8ceade6d269487bf219e25b3beecc46afb98fb8e1fec1a9ad0af0a16e70611f9a4337af05a2ff82d7c9dcebeea9d8e2070413e49e29ff564e6dcee5696e39dc590ff8f8f553834c66c5ae730d05441e3fcc59de0d6efb12fd8852e19f2e309e4ac4cbf0634655fcaab5a70b4eab49829190ea2862c2568e8b69ff0324055f92275de05f2de1d6a8a78333370da754708f7a827f5e9bbe2e58d58294cafef37898a5a5a4866678b6e07941a3bfcb3c3f2d150f830a12d8e0dd20d756099be48f10d51521b3ba0c49f2ab139724ae3962999d75b88bf572fbfd86b6eef3bad5a446b97949d95f9e742500f8609ecfe189d2b4d5a47ea997164f48b3872ec525f16ec23fa5700d10d3385019edfabfec780f15b639f6863332c69fe6b17895620821fe6aaf94caab29c0fec19ff1bebc59f5ed8f973a3b720257cce803541406ae8e75163cf0049f8fbf14d239e86089cdefba8bcbb03db284283a1ff572320aeb7d4a139d4429e00c8bb196539d7")
c2, _ := common.FromHex("010076833cbc35c9b7a87eda9aab7aafec45bd7eb8c0e9306141e7d1e84ecd87a5cb9f80343551bd9b0d04669fd74d020fca8837d9b3b471e3e13c125a06663d820cabb36c243747a11ea2601a9cb32e61c697dcdc846c492d954fa8c3ca2be662e8c0142138b647ce5d9e7c4c4d2ace8ba3c5699fbec98beef24e3c740967ec0b72b1626ecd4a7ce54960ae9bc1e2ea5594b05778f4f772aa213a06421744ed8dd775fb8f212bcc7e0da5fe4949051e6aa09d47db7e8d5028ecc41cea2aed4e23aefd80714519662fae980e3a6ca3defc0dd5596cb7e90da29e1bdd84db82603aed78fb8f98687898cd675da74452052ff1761446bf2ee922fc8c56b7e1beb2d4b9338ddba1f37e26ef7e0b9cb3bec18dc4b450d91a1a0901a3aca75000b58dd639635dce66553945a698b186c89443361ab4c1d3525de6bace217cd27fce0c8f6efc9e7c95269139487b5772182d8276ed6edfe0560537d18330aae4191af1dfae0a430b2021401bc17a111730f7114f514b7b84cb09bf717c67bb25c21a31b3a062f32dceb99103cdd622242148ec1799d04f4f3f4fc5af9e18cfaf356388b1413cc95b6f5bc0c293acf09ad0513e15d2ea525f120930e6072e0cf750e4e03bbf65b278ad92476f5e507bb51f01c3d2797931794cad156b5980fb5ec51fc82e99fde99e81dd85e9dba1d549aa8768c609e46171750b7bc636b709e47c92b076f1b7f71bff1fd690f8bfcdbf48559f777017b9ad300cbb3a1089f3eb6fed5632be9edecc33be09da7d43275640a097114f8f9e529289cce15d7b4ba613feda9e4d818743bf2741c5cd2aaaec7cc96ed835ee909ea0e9675f57bad4ad01688cc2a77e6181a0bca9a46d0ca160a1d94771e24db357e861e1f029104782445413c6d4861404df9ec3140b895083ebbb8a92bbc7decc8990353e9347a7933f85ef94ed325a331b3e6e6c752086adc7926abac3dfd8c8f3d7add64c80f327c1c4d74fde7a6c8981f79ede165f0584e5d6317d7272d9836098cd8ef82fbe85770962b709dfe1f2ae3454ac471e6ea24c6545f332a3eb4eecbc09e2276748d484a5216361")
c3, _ := common.FromHex("010076833cbc35c9b7a87eda9aab7aafec45bd7eb8c0e9306141e7d1e84ecd87a5cb9f80343551bd9b0d04669fd74d020fca8837d9b3b471e3e13c125a06663d820cabb36c243747a11ea2601a9cb32e61c697dcdc846c492d954fa8c3ca2be662e8c0142138b647ce5d9e7c4c4d2ace8ba3c5699fbec98beef24e3c740967ec0b72b1626ecd4a7ce54960ae9bc1e2ea5594b05778f4f772aa213a06421744ed8dd775fb8f212bcc7e0da5fe4949051e6aa09d47db7e8d5028ecc41cea2aed4e23aefd80714519662fae980e3a6ca3defc0dd5596cb7e90da29e1bdd84db82603aed78fb8f98687898cd675da74452052ff1761446bf2ee922fc8c56b7e1beb2d4b90a734625f41c1709ad56e8a801346d70f190e7080c805de1e380198a4ebaf86ca6e5b9dbdc6eacad7c545f78c718a6e0262bc61d68244f99255d0fc8126cfbc0449e935bf5ee81af5e600f7d5b23b4b2d1f48482e037642690035f0289d4d3c72662d63e958edf8d566c765bcbc44cedc618b31db5eebdc6fd5848d53161e3e01c6c73010c32391db709a71cedb4c45fb71ec85de48ace0cba009ef2c0a88386e62b9607faf36c9b219508281267c0df2a182a88ad8fd146101564f5a14c7fd5ed2d4ae547c8741a31c560501230edd5417c622a7aba8d7efb08c08d5b7c45508c766353f2d43bd092834461f0673196abc8ef56b9fd54bdf82c2a392ff8dedcef3d90d3e47370d31083c2d19cefe2ce83936fd881f4a38ef3e5aaf3b0d48842ded5e6a16fc2fb7b5379406c2889e1d9de1fe611645310ba5b5048e817f44c451b5ec557c0e3b8e64049a437b82f901866ba4c1994d3c3caf02f81582f7409d10480df2c353eb63db4ec57671b2ac6c28fce842c605bae902ac5bb649f08199307458b542849d663809c9980a7c939b4f1f6d2eddf3dfe02f70ee4cf8956bf7a6a29a307939cd17eebdbcc80fb830bd545351a12c275375feaf3f690c52cc76dc7521ce87f621163b551a70e06d5bd3274bdc144f61f4ff8f1cdb2fcf97c67df1935057fdadaa23bf675892b4db841a63d49cd788c34498c70fb4ea787f3f8c1")
tx, err = CreateTx("EncryptStorage", &oty.EncryptNotaryStorage{ContentHash: common.Sha256(c1), EncryptContent: c1, Nonce: ivs[0]}, PrivKeyA, cfg)
assert.Nil(t, err)
Exec_Block(t, stateDB, kvdb, env, tx)
txhash = common.ToHex(tx.Hash())
reply, err = QueryStorageByKey(stateDB, kvdb, txhash, cfg)
assert.Nil(t, err)
assert.Equal(t, common.Sha256(c1), reply.GetEncryptStorage().ContentHash)
assert.Equal(t, c1, reply.GetEncryptStorage().EncryptContent)
tx, err = CreateTx("EncryptAdd", &oty.EncryptNotaryAdd{Key: txhash, EncryptAdd: c2}, PrivKeyA, cfg)
assert.Nil(t, err)
Exec_Block(t, stateDB, kvdb, env, tx)
reply, err = QueryStorageByKey(stateDB, kvdb, txhash, cfg)
assert.Nil(t, err)
assert.Equal(t, c3, reply.GetEncryptStorage().EncryptContent)
}
func signTx(tx *types.Transaction, hexPrivKey string) (*types.Transaction, error) {
......
......@@ -197,7 +197,7 @@ func (s *StorageAction) EncryptAdd(payload *ety.EncryptNotaryAdd) (*types.Receip
var kvs []*types.KeyValue
cfg := s.api.GetConfig()
store, err := QueryStorage(s.db, s.localdb, payload.ContentHash)
store, err := QueryStorage(s.db, s.localdb, payload.Key)
if err != nil {
fmt.Errorf("EncryptAdd.QueryStorage. err:%v", err)
return nil, err
......@@ -227,7 +227,7 @@ func (s *StorageAction) EncryptAdd(payload *ety.EncryptNotaryAdd) (*types.Receip
} else {
log := &types.ReceiptLog{Ty: ety.TyEncryptAddLog}
logs = append(logs, log)
kvs = append(kvs, &types.KeyValue{Key: Key(payload.ContentHash), Value: types.Encode(newStore)})
kvs = append(kvs, &types.KeyValue{Key: Key(payload.Key), Value: types.Encode(newStore)})
}
receipt := &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs}
......
......@@ -89,8 +89,8 @@ message EncryptShareNotaryStorage {
// 加密存证数据运算
message EncryptNotaryAdd {
//存证明文内容的hash值,推荐使用sha256哈希,限制256位得摘要值
string contentHash = 1;
//源操作数存证索引
string key = 1;
//待操作数据
bytes encryptAdd = 2;
}
......
......@@ -668,8 +668,8 @@ func (m *EncryptShareNotaryStorage) GetValue() string {
// 加密存证数据运算
type EncryptNotaryAdd struct {
//存证明文内容的hash值,推荐使用sha256哈希,限制256位得摘要值
ContentHash string `protobuf:"bytes,1,opt,name=contentHash,proto3" json:"contentHash,omitempty"`
//源操作数存证索引
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
//待操作数据
EncryptAdd []byte `protobuf:"bytes,2,opt,name=encryptAdd,proto3" json:"encryptAdd,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
......@@ -702,9 +702,9 @@ func (m *EncryptNotaryAdd) XXX_DiscardUnknown() {
var xxx_messageInfo_EncryptNotaryAdd proto.InternalMessageInfo
func (m *EncryptNotaryAdd) GetContentHash() string {
func (m *EncryptNotaryAdd) GetKey() string {
if m != nil {
return m.ContentHash
return m.Key
}
return ""
}
......@@ -884,39 +884,38 @@ func init() {
func init() { proto.RegisterFile("storage.proto", fileDescriptor_0d2c4ccf1453ffdb) }
var fileDescriptor_0d2c4ccf1453ffdb = []byte{
// 530 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x95, 0xd1, 0x8a, 0xd3, 0x4c,
0x14, 0xc7, 0x37, 0x49, 0xd3, 0x7c, 0x39, 0xe9, 0x86, 0xee, 0x7c, 0xeb, 0x1a, 0x51, 0x34, 0xe4,
0x62, 0x29, 0x82, 0xbd, 0xa8, 0x57, 0x82, 0xa0, 0x5d, 0x59, 0xa8, 0x28, 0x8a, 0xb3, 0xfb, 0x02,
0xd9, 0x74, 0x30, 0xa5, 0x61, 0x26, 0x24, 0x53, 0x31, 0x2f, 0xe3, 0x9d, 0x8f, 0xe2, 0x95, 0x2f,
0x25, 0x99, 0x9c, 0x64, 0x93, 0x76, 0x16, 0xbc, 0xf0, 0x46, 0xf0, 0x6e, 0xe6, 0x9c, 0x33, 0xbf,
0xf3, 0x9f, 0xf3, 0x9f, 0x36, 0x70, 0x5c, 0x4a, 0x51, 0xc4, 0x9f, 0xd9, 0x3c, 0x2f, 0x84, 0x14,
0xc4, 0x96, 0x55, 0xce, 0xca, 0xe8, 0x87, 0x05, 0xce, 0x55, 0x93, 0x20, 0x6f, 0xc1, 0x4f, 0x04,
0x97, 0x8c, 0x4b, 0x8c, 0x04, 0x46, 0x68, 0xcc, 0xbc, 0xc5, 0x93, 0xb9, 0xaa, 0x9d, 0xbf, 0x69,
0x92, 0x1f, 0x79, 0x56, 0x7d, 0x10, 0x32, 0x2e, 0x2a, 0x2c, 0x5b, 0x1d, 0xd1, 0xbd, 0x83, 0xe4,
0x35, 0x78, 0x69, 0x5c, 0xa6, 0x2d, 0xc7, 0x54, 0x9c, 0x47, 0xc8, 0x59, 0xc5, 0x65, 0xaa, 0x83,
0xf4, 0x8f, 0x90, 0x97, 0xe0, 0x65, 0x1b, 0xbe, 0x6d, 0x09, 0x96, 0x22, 0x04, 0x48, 0x78, 0xbf,
0xe1, 0xdb, 0x83, 0xd3, 0xbd, 0x72, 0x72, 0x09, 0x3e, 0xe3, 0x49, 0x51, 0xe5, 0xdd, 0x55, 0x46,
0x0a, 0xf0, 0x10, 0x01, 0x97, 0x4d, 0xf2, 0xe0, 0x1a, 0xc3, 0x43, 0xe4, 0x1a, 0xfe, 0x6f, 0x23,
0x69, 0x5c, 0xb0, 0x96, 0x65, 0x2b, 0x56, 0x38, 0x64, 0xa9, 0x8a, 0x7d, 0xa0, 0xee, 0x38, 0x79,
0x01, 0x80, 0xe1, 0xe5, 0x7a, 0x1d, 0x8c, 0x15, 0xec, 0xbe, 0x4e, 0xd8, 0x72, 0xbd, 0x5e, 0x1d,
0xd1, 0x5e, 0x31, 0xf1, 0xc1, 0x94, 0x55, 0xe0, 0x84, 0xc6, 0xcc, 0xa6, 0xa6, 0xac, 0x2e, 0x1c,
0xb0, 0xbf, 0xc4, 0xd9, 0x8e, 0x45, 0x3f, 0x2d, 0x38, 0x46, 0xfe, 0x32, 0x91, 0x1b, 0xc1, 0xff,
0xb9, 0xf9, 0x17, 0xbb, 0x99, 0x41, 0x70, 0x97, 0x3d, 0x24, 0x00, 0x07, 0xed, 0x51, 0x86, 0x4e,
0x68, 0xbb, 0x25, 0x53, 0xb0, 0xb6, 0xac, 0x52, 0xf6, 0xb8, 0xb4, 0x5e, 0xd6, 0x0d, 0x44, 0xae,
0xa6, 0x6d, 0x53, 0x53, 0xe4, 0xe4, 0x14, 0x1b, 0xa8, 0xf9, 0xb9, 0x14, 0xbb, 0x5d, 0xc1, 0x3d,
0xad, 0x89, 0x84, 0xc0, 0xa8, 0x36, 0x11, 0xfb, 0xa8, 0xb5, 0xa6, 0x49, 0x07, 0xb5, 0xfa, 0xd0,
0x04, 0x4e, 0x0e, 0x7c, 0xad, 0x81, 0xb5, 0xaf, 0x2d, 0xb0, 0x5e, 0x77, 0x4d, 0xcc, 0xc3, 0x26,
0x96, 0xa6, 0xc9, 0x40, 0xf9, 0x37, 0x03, 0x4e, 0x75, 0xe6, 0x93, 0x10, 0x3c, 0x9c, 0xca, 0xea,
0xf6, 0x02, 0xfd, 0x10, 0x39, 0xef, 0xde, 0x14, 0x4e, 0x1a, 0x05, 0xec, 0x45, 0xeb, 0xc6, 0x5c,
0xf0, 0xa4, 0xb9, 0xdd, 0x84, 0x36, 0x9b, 0x56, 0xe0, 0x48, 0x23, 0xd0, 0xee, 0x0b, 0xfc, 0x6e,
0xc0, 0x83, 0x3b, 0x5f, 0xd4, 0x1f, 0x54, 0x79, 0x06, 0xe3, 0x7c, 0x77, 0xf3, 0x0e, 0x67, 0x36,
0xa1, 0xb8, 0xfb, 0x6d, 0x9d, 0xd7, 0x30, 0xdd, 0x7f, 0xab, 0x3a, 0x75, 0xee, 0x50, 0xdd, 0xe3,
0xc1, 0xd3, 0x6f, 0x94, 0xf5, 0x22, 0xd1, 0x39, 0x4c, 0x3e, 0xed, 0xd8, 0xed, 0x7d, 0xcf, 0x60,
0x2c, 0xbf, 0xf6, 0x60, 0xb8, 0x8b, 0x9e, 0xc1, 0xc9, 0x45, 0x2c, 0x93, 0x74, 0x50, 0x1c, 0x80,
0xd3, 0xa4, 0xcb, 0xc0, 0x08, 0xad, 0x99, 0x4b, 0xdb, 0x6d, 0xf4, 0x0a, 0xcb, 0x29, 0xcb, 0xb3,
0xae, 0xfc, 0x29, 0xfc, 0x87, 0x1f, 0xb8, 0xa6, 0xde, 0x5b, 0xf8, 0xf8, 0x23, 0xc4, 0x0a, 0xda,
0xe5, 0xa3, 0x29, 0xf8, 0x94, 0x25, 0x6c, 0xd3, 0xfd, 0x35, 0x2c, 0x5c, 0x70, 0x30, 0x7b, 0x33,
0x56, 0xdf, 0xc7, 0xe7, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0x5c, 0x62, 0x13, 0xfb, 0x30, 0x07,
0x00, 0x00,
// 528 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x95, 0x4d, 0x8b, 0xd3, 0x40,
0x18, 0xc7, 0x37, 0x4d, 0xd3, 0x98, 0x27, 0xdd, 0xd0, 0x1d, 0xd7, 0x35, 0xa2, 0x68, 0xc8, 0x61,
0x29, 0x82, 0x3d, 0xd4, 0x93, 0x20, 0x68, 0x57, 0x17, 0x2a, 0x8a, 0xe2, 0xac, 0x5f, 0x20, 0x9b,
0x0e, 0xa6, 0x34, 0xcc, 0x84, 0x64, 0x2a, 0xe6, 0xcb, 0x78, 0xf3, 0xa3, 0x78, 0xf2, 0x4b, 0x49,
0x26, 0xcf, 0xa4, 0x49, 0x9b, 0x05, 0x0f, 0x5e, 0x84, 0xbd, 0xcd, 0x3c, 0x2f, 0xbf, 0xe7, 0xe5,
0x3f, 0x6d, 0xe0, 0xb8, 0x90, 0x22, 0x8f, 0xbe, 0xb2, 0x59, 0x96, 0x0b, 0x29, 0x88, 0x25, 0xcb,
0x8c, 0x15, 0xe1, 0x2f, 0x13, 0xec, 0xab, 0xda, 0x41, 0xde, 0x81, 0x17, 0x0b, 0x2e, 0x19, 0x97,
0x68, 0xf1, 0x8d, 0xc0, 0x98, 0xba, 0xf3, 0x27, 0x33, 0x15, 0x3b, 0x7b, 0x53, 0x3b, 0x3f, 0xf1,
0xb4, 0xfc, 0x28, 0x64, 0x94, 0x97, 0x18, 0xb6, 0x3c, 0xa2, 0x7b, 0x89, 0xe4, 0x35, 0xb8, 0x49,
0x54, 0x24, 0x9a, 0x33, 0x50, 0x9c, 0x47, 0xc8, 0x59, 0x46, 0x45, 0xd2, 0x07, 0x69, 0xa7, 0x90,
0x97, 0xe0, 0xa6, 0x6b, 0xbe, 0xd1, 0x04, 0x53, 0x11, 0x7c, 0x24, 0x7c, 0x58, 0xf3, 0xcd, 0x41,
0x76, 0x2b, 0x9c, 0x5c, 0x82, 0xc7, 0x78, 0x9c, 0x97, 0x59, 0x33, 0xca, 0x50, 0x01, 0x1e, 0x22,
0xe0, 0xb2, 0x76, 0x1e, 0x8c, 0xd1, 0x4d, 0x22, 0x5f, 0xe0, 0xae, 0xb6, 0x24, 0x51, 0xce, 0x34,
0xcb, 0x52, 0xac, 0xa0, 0xcb, 0x52, 0x11, 0xfb, 0xc0, 0xbe, 0x74, 0xf2, 0x02, 0x00, 0xcd, 0x8b,
0xd5, 0xca, 0x1f, 0x29, 0xd8, 0xfd, 0xbe, 0xc6, 0x16, 0xab, 0xd5, 0xf2, 0x88, 0xb6, 0x82, 0x89,
0x07, 0x03, 0x59, 0xfa, 0x76, 0x60, 0x4c, 0x2d, 0x3a, 0x90, 0xe5, 0x85, 0x0d, 0xd6, 0xb7, 0x28,
0xdd, 0xb2, 0xf0, 0xb7, 0x09, 0xc7, 0xc8, 0x5f, 0xc4, 0x72, 0x2d, 0xf8, 0xad, 0x9a, 0xff, 0xb1,
0x9a, 0x29, 0xf8, 0x37, 0xc9, 0x43, 0x7c, 0xb0, 0x51, 0x1e, 0x25, 0xe8, 0x98, 0xea, 0x2b, 0x99,
0x80, 0xb9, 0x61, 0xa5, 0x92, 0xc7, 0xa1, 0xd5, 0xb1, 0x2a, 0x20, 0x32, 0xb5, 0x6d, 0x8b, 0x0e,
0x44, 0x46, 0x4e, 0xb1, 0x80, 0xda, 0x9f, 0x43, 0xb1, 0xda, 0x15, 0xdc, 0xeb, 0x15, 0x91, 0x10,
0x18, 0x56, 0x22, 0x62, 0x1d, 0x75, 0xee, 0x29, 0xd2, 0x40, 0xcd, 0x36, 0x34, 0x86, 0x93, 0x03,
0x5d, 0x2b, 0x60, 0xa5, 0xab, 0x06, 0x56, 0xe7, 0xa6, 0xc8, 0xe0, 0xb0, 0x88, 0xd9, 0x53, 0xa4,
0xd3, 0xf9, 0x0f, 0x03, 0x4e, 0xfb, 0xc4, 0x27, 0x01, 0xb8, 0xb8, 0x95, 0xe5, 0x6e, 0x80, 0xb6,
0x89, 0x9c, 0x37, 0x6f, 0x0a, 0x37, 0x8d, 0x0d, 0xec, 0x59, 0xab, 0xc2, 0x5c, 0xf0, 0xb8, 0x9e,
0x6e, 0x4c, 0xeb, 0x8b, 0x6e, 0x70, 0xd8, 0xd3, 0xa0, 0xd5, 0x6e, 0xf0, 0xa7, 0x01, 0x0f, 0x6e,
0x7c, 0x51, 0xff, 0xb0, 0xcb, 0x33, 0x18, 0x65, 0xdb, 0xeb, 0xf7, 0xb8, 0xb3, 0x31, 0xc5, 0xdb,
0x5f, 0xf7, 0xf9, 0x16, 0x26, 0xfb, 0x6f, 0x55, 0xe7, 0x1a, 0xbb, 0xdc, 0xc7, 0x9d, 0xa7, 0x5e,
0x77, 0xd2, 0xb2, 0x84, 0xe7, 0x30, 0xfe, 0xbc, 0x65, 0xbb, 0xf9, 0xce, 0x60, 0x24, 0xbf, 0x37,
0xa3, 0x39, 0x14, 0x6f, 0xe1, 0x33, 0x38, 0xb9, 0x88, 0x64, 0x9c, 0x74, 0x82, 0x7d, 0xb0, 0x6b,
0x77, 0xe1, 0x1b, 0x81, 0x39, 0x75, 0xa8, 0xbe, 0x86, 0xaf, 0x30, 0x9c, 0xb2, 0x2c, 0x6d, 0xc2,
0x9f, 0xc2, 0x1d, 0xfc, 0xa0, 0xd5, 0xf1, 0xee, 0xdc, 0xc3, 0x1f, 0x1d, 0x46, 0xd0, 0xc6, 0x1f,
0x4e, 0xc0, 0xa3, 0x2c, 0x66, 0xeb, 0xe6, 0xaf, 0x60, 0xee, 0x80, 0x8d, 0xde, 0xeb, 0x91, 0xfa,
0x1e, 0x3e, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x66, 0xc3, 0x4e, 0x48, 0x20, 0x07, 0x00, 0x00,
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment