diff options
Diffstat (limited to 'wallet/src/commonTest/kotlin/net/taler/lib/wallet/crypto/EllipticCurveTest.kt')
-rw-r--r-- | wallet/src/commonTest/kotlin/net/taler/lib/wallet/crypto/EllipticCurveTest.kt | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/crypto/EllipticCurveTest.kt b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/crypto/EllipticCurveTest.kt deleted file mode 100644 index 10fbcc1..0000000 --- a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/crypto/EllipticCurveTest.kt +++ /dev/null @@ -1,156 +0,0 @@ -/* - * This file is part of GNU Taler - * (C) 2020 Taler Systems S.A. - * - * GNU Taler is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 3, or (at your option) any later version. - * - * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with - * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> - */ - -package net.taler.lib.wallet.crypto - -import net.taler.lib.wallet.Base32Crockford -import kotlin.random.Random -import kotlin.test.Test -import kotlin.test.assertEquals -import kotlin.test.assertFalse -import kotlin.test.assertTrue - -class EllipticCurveTest { - - private val crypto = CryptoFactory.getCrypto() - - @Test - fun testExchangeTvgEddsaKey() { - val pri = "9TM70AKDTS57AWY9JK2J4TMBTMW6K62WHHGZWYDG0VM5ABPZKD40" - val pub = "8GSJZ649T2PXMKZC01Y4ANNBE7MF14QVK9SQEC4E46ZHKCVG8AS0" - val pubBytes = crypto.eddsaGetPublic(Base32Crockford.decode(pri)) - assertEquals(pub, Base32Crockford.encode(pubBytes)) - - val pri2 = "C9C5X5JS2SWRTSX5AQBPFA4S2DFD6V9Q04XTTEZDQ5XSSQK2P39G" - val pub2 = "6WC3MPYM5XKPKRA2Z6SYB81CPFV3E7EC6S2GVE095X8XH63QTZCG" - val pub2Bytes = crypto.eddsaGetPublic(Base32Crockford.decode(pri2)) - assertEquals(pub2, Base32Crockford.encode(pub2Bytes)) - } - - @Test - fun testExchangeTvgEcdheKey() { - val pri = "X4T4N0M8PVQXQEBW2BA7049KFSM7J437NSDFC6GDNM3N5J9367A0" - val pub = "M997P494MS6A95G1P0QYWW2VNPSHSX5Q6JBY5B9YMNYWP0B50X3G" - val pubBytes = crypto.ecdheGetPublic(Base32Crockford.decode(pri)) - assertEquals(pub, Base32Crockford.encode(pubBytes)) - - val pri2 = "MB8ZSQFTVPX4V0MGT3BA1PQS12NJ7KH33DA8D22NCWTNA5BHH2YG" - val pub2 = "8T2CN1W8G3XZE9C9158A5ASS74117GK1XQ1XAX5SGBFDGHS8H5W0" - val pub2Bytes = crypto.ecdheGetPublic(Base32Crockford.decode(pri2)) - assertEquals(pub2, Base32Crockford.encode(pub2Bytes)) - } - - @Test - fun testCreateEddsaKeyPair() { - val pair1 = crypto.createEddsaKeyPair() - val pair2 = crypto.createEddsaKeyPair() - assertFalse(pair1.privateKey contentEquals pair2.privateKey) - assertFalse(pair1.publicKey contentEquals pair2.publicKey) - } - - @Test - fun testCreateEcdheKeyPair() { - val pair1 = crypto.createEcdheKeyPair() - val pair2 = crypto.createEcdheKeyPair() - assertFalse(pair1.privateKey contentEquals pair2.privateKey) - assertFalse(pair1.publicKey contentEquals pair2.publicKey) - } - - @Test - @ExperimentalStdlibApi - fun testEddsaSignAndVerify() { - val msg = "Hallo world!".encodeToByteArray() - val pri = "9TM70AKDTS57AWY9JK2J4TMBTMW6K62WHHGZWYDG0VM5ABPZKD40" - val expectedSig = - "Z6H76JXPJFP3JBGSF54XBF0BVXDJ0CJBK4YT9GVR1AT916ZD57KP53YZN5G67A4YN95WGMZKQW7744483P5JDF06B6S7TMK195QGP20" - val sig = crypto.eddsaSign(msg, Base32Crockford.decode(pri)) - assertEquals(expectedSig, Base32Crockford.encode(sig)) - - val pub = crypto.eddsaGetPublic(Base32Crockford.decode(pri)) - assertTrue(crypto.eddsaVerify(msg, sig, pub)) - - val wrongSig = Random.nextBytes(64) - assertFalse(crypto.eddsaVerify(msg, wrongSig, pub)) - - val wrongPub = Random.nextBytes(32) - assertFalse(crypto.eddsaVerify(msg, sig, wrongPub)) - - val wrongMsg = Random.nextBytes(16) - assertFalse(crypto.eddsaVerify(wrongMsg, sig, pub)) - - val pri2 = "T4NK2VVZZ1ZF6EBGEQHRK7KY67PCEVAZC5YHYH612XG5R6NJXSB0" - val pub2 = "2X3PSPT7D6TEM97R98C0DHZREFVAVA3XTH11D5A2Z2K7GBKQ7AEG" - val data2 = - "00000J00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - val expectedSig2 = - "RFC59ZWJB88TD03F4GTQD3RWKH3KKRVEY2T1VN7CFEF51SCZ4BX8HGHC708GW1SN7Y4XFEDE3A5PFZEJ7PR7V09YZXX10DM608T1W20" - val sig2 = crypto.eddsaSign(Base32Crockford.decode(data2), Base32Crockford.decode(pri2)) - assertEquals(expectedSig2, Base32Crockford.encode(sig2)) - assertTrue(crypto.eddsaVerify(Base32Crockford.decode(data2), sig2, Base32Crockford.decode(pub2))) - } - - @Test - fun testExchangeTvgEddsaEcdh() { - val ecdhePrivateKey = "4AFZWMSGTVCHZPQ0R81NWXDCK4N58G7SDBBE5KXE080Y50370JJG" - val ecdhePublicKey = "FXFN5GPAFTKVPWJDPVXQ87167S8T82T5ZV8CDYC0NH2AE14X0M30" - val ecdhePublicKeyBytes = crypto.ecdheGetPublic(Base32Crockford.decode(ecdhePrivateKey)) - assertEquals(ecdhePublicKey, Base32Crockford.encode(ecdhePublicKeyBytes)) - - val eddsaPrivateKey = "1KG54M8T3X8BSFSZXCR3SQBSR7Y9P53NX61M864S7TEVMJ2XVPF0" - val eddsaPublicKey = "7BXWKG6N224C57RTDV8XEAHR108HG78NMA995BE8QAT5GC1S7E80" - val eddsaPublicKeyBytes = crypto.eddsaGetPublic(Base32Crockford.decode(eddsaPrivateKey)) - assertEquals(eddsaPublicKey, Base32Crockford.encode(eddsaPublicKeyBytes)) - - val keyMaterial = - "PKZ42Z56SVK2796HG1QYBRJ6ZQM2T9QGA3JA4AAZ8G7CWK9FPX175Q9JE5P0ZAX3HWWPHAQV4DPCK10R9X3SAXHRV0WF06BHEC2ZTKR" - val keyMaterial1Bytes = crypto.keyExchangeEddsaEcdhe( - Base32Crockford.decode(eddsaPrivateKey), - Base32Crockford.decode(ecdhePublicKey) - ) - assertEquals(keyMaterial, Base32Crockford.encode(keyMaterial1Bytes)) - - val keyMaterial2Bytes = crypto.keyExchangeEcdheEddsa( - Base32Crockford.decode(ecdhePrivateKey), - Base32Crockford.decode(eddsaPublicKey) - ) - assertEquals(keyMaterial, Base32Crockford.encode(keyMaterial2Bytes)) - - val ecdhePrivateKey2 = "3AMRJ1KC87VWX9MVQMW8MB9YVX5DMS6P5V2SYZNCZ44XVMSDVEFG" - val ecdhePublicKey2 = "CFFVCRFTNP7701KZC7187BC42MGSVCMBWK38F23E7T9VVK9D41Q0" - val ecdhePublicKeyBytes2 = crypto.ecdheGetPublic(Base32Crockford.decode(ecdhePrivateKey2)) - assertEquals(ecdhePublicKey2, Base32Crockford.encode(ecdhePublicKeyBytes2)) - - val eddsaPrivateKey2 = "8AZTVPCXNCVBKJVQ6XS7Z38KB9JB38WJ7Z80F9FTCX1WHZACTXJ0" - val eddsaPublicKey2 = "T3F1VYAVZX3DVCNJTB3BNQTRZGXN446QP2VD847CB6N5V75RT2B0" - val eddsaPublicKeyBytes2 = crypto.eddsaGetPublic(Base32Crockford.decode(eddsaPrivateKey2)) - assertEquals(eddsaPublicKey2, Base32Crockford.encode(eddsaPublicKeyBytes2)) - - val keyMaterial2 = - "FPQSHC6MWWJGEPXXVF76Q8C4PBJFE59RSGRGFQ3Z6ESR67HMG7FAK6JTCQ4ZKHSVNNCF53DX8FY55EA2193N2A6KD510AEV5TBVZRJR" - val keyMaterial1Bytes2 = crypto.keyExchangeEddsaEcdhe( - Base32Crockford.decode(eddsaPrivateKey2), - Base32Crockford.decode(ecdhePublicKey2) - ) - assertEquals(keyMaterial2, Base32Crockford.encode(keyMaterial1Bytes2)) - - val keyMaterial2Bytes2 = crypto.keyExchangeEcdheEddsa( - Base32Crockford.decode(ecdhePrivateKey2), - Base32Crockford.decode(eddsaPublicKey2) - ) - assertEquals(keyMaterial2, Base32Crockford.encode(keyMaterial2Bytes2)) - } - -} |