diff --git a/app/src/main/java/io/legado/app/help/crypto/AsymmetricCrypto.kt b/app/src/main/java/io/legado/app/help/crypto/AsymmetricCrypto.kt index a7b36a7ec..47c70b8cd 100644 --- a/app/src/main/java/io/legado/app/help/crypto/AsymmetricCrypto.kt +++ b/app/src/main/java/io/legado/app/help/crypto/AsymmetricCrypto.kt @@ -8,32 +8,35 @@ import java.io.InputStream class AsymmetricCrypto(algorithm: String) : HutoolAsymmetricCrypto(algorithm) { fun setPrivateKey(key: ByteArray): AsymmetricCrypto { - return setPrivateKey( + setPrivateKey( KeyUtil.generatePrivateKey(this.algorithm, key) ) + return this } fun setPrivateKey(key: String): AsymmetricCrypto = setPrivateKey(key.encodeToByteArray()) fun setPublicKey(key: ByteArray): AsymmetricCrypto { - return setPublicKey( + setPublicKey( KeyUtil.generatePublicKey(this.algorithm, key) ) + return this } fun setPublicKey(key: String): AsymmetricCrypto = setPublicKey(key.encodeToByteArray()) - private fun getKeyType(): KeyType { + private fun getKeyType(keyType: Int): KeyType { return when { - this.publicKey != null -> KeyType.PublicKey - this.privateKey != null -> KeyType.PrivateKey + keyType == 1 -> KeyType.PublicKey + keyType == 2 -> KeyType.PrivateKey else -> KeyType.SecretKey } } private fun cryptoDelegate( data: Any, + keyType: Int, func: (Any, KeyType) -> T ): T { - val keyType = getKeyType() + val keyType = getKeyType(keyType) return when { data is ByteArray -> func.invoke(data, keyType) data is String -> func.invoke(data, keyType) @@ -42,11 +45,11 @@ class AsymmetricCrypto(algorithm: String) : HutoolAsymmetricCrypto(algorithm) { } } - fun decrypt(data: Any): ByteArray? = cryptoDelegate(data, decrypt) - fun decryptStr(data: Any): String? = cryptoDelegate(data, decryptStr) + fun decrypt(data: Any, keyType: Int): ByteArray? = cryptoDelegate(data, keyType, decrypt) + fun decryptStr(data: Any, keyType: Int): String? = cryptoDelegate(data, keyType, decryptStr) - fun encrypt(data: Any): ByteArray? = cryptoDelegate(data, encrypt) - fun encryptHex(data: Any): String? = cryptoDelegate(data, encryptHex) - fun encryptBase64(data: Any): String? =cryptoDelegate(data, encryptBase64) + fun encrypt(data: Any, keyType: Int): ByteArray? = cryptoDelegate(data, keyType, encrypt) + fun encryptHex(data: Any, keyType: Int): String? = cryptoDelegate(data, keyType, encryptHex) + fun encryptBase64(data: Any, keyType: Int): String? =cryptoDelegate(data, keyType, encryptBase64) } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/help/crypto/README.md b/app/src/main/java/io/legado/app/help/crypto/README.md index 13c6380fd..24c898741 100644 --- a/app/src/main/java/io/legado/app/help/crypto/README.md +++ b/app/src/main/java/io/legado/app/help/crypto/README.md @@ -7,7 +7,6 @@ fun setPublicKey(key: String): T fun setPrivateKey(key: ByteArray): T fun setPrivateKey(key: String): T -//自动从公钥开始尝试 fun decrypt(data: Any): ByteArray? fun decryptStr(data: Any): String? diff --git a/app/src/main/java/io/legado/app/help/crypto/Sign.kt b/app/src/main/java/io/legado/app/help/crypto/Sign.kt index e63ee4456..8a52b75fb 100644 --- a/app/src/main/java/io/legado/app/help/crypto/Sign.kt +++ b/app/src/main/java/io/legado/app/help/crypto/Sign.kt @@ -6,16 +6,18 @@ import cn.hutool.crypto.KeyUtil class Sign(algorithm: String): HutoolSign(algorithm) { fun setPrivateKey(key: ByteArray): Sign { - return setPrivateKey( + setPrivateKey( KeyUtil.generatePrivateKey(this.algorithm, key) ) + return this } fun setPrivateKey(key: String): Sign = setPrivateKey(key.encodeToByteArray()) fun setPublicKey(key: ByteArray): Sign { - return setPublicKey( + setPublicKey( KeyUtil.generatePublicKey(this.algorithm, key) ) + return this } fun setPublicKey(key: String): Sign = setPublicKey(key.encodeToByteArray())