From e81db1f0bda930f50b5c3e47627770299ec3e19b Mon Sep 17 00:00:00 2001 From: Andrea Franz Date: Thu, 27 Sep 2018 11:39:35 +0200 Subject: [PATCH] add appendDESPadding function --- globalplatform/crypto/crypto.go | 12 ++++++++++++ globalplatform/crypto/crypto_test.go | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/globalplatform/crypto/crypto.go b/globalplatform/crypto/crypto.go index 2e37402..e362a58 100644 --- a/globalplatform/crypto/crypto.go +++ b/globalplatform/crypto/crypto.go @@ -37,3 +37,15 @@ func resizeKey24(key []byte) []byte { return data } + +func appendDESPadding(data []byte) []byte { + length := len(data) + 1 + for ; length%8 != 0; length++ { + } + + newData := make([]byte, length) + copy(newData, data) + copy(newData[len(data):], []byte{0x80}) + + return newData +} diff --git a/globalplatform/crypto/crypto_test.go b/globalplatform/crypto/crypto_test.go index bbf40b4..3378266 100644 --- a/globalplatform/crypto/crypto_test.go +++ b/globalplatform/crypto/crypto_test.go @@ -24,3 +24,10 @@ func TestResizeKey24(t *testing.T) { expected := "404142434445464748494A4B4C4D4E4F4041424344454647" assert.Equal(t, expected, hexutils.BytesToHex(resized)) } + +func TestAppendDESPadding(t *testing.T) { + data := hexutils.HexToBytes("AABB") + result := appendDESPadding(data) + expected := "AABB800000000000" + assert.Equal(t, expected, hexutils.BytesToHex(result)) +}