XYOracleNetwork/sdk-core-kotlin

View on GitHub
core-android-library/src/main/kotlin/network/xyo/sdkcorekotlin/crypto/signing/rsa/XyoRsaPublicKey.kt

Summary

Maintainability
A
0 mins
Test Coverage
package network.xyo.sdkcorekotlin.crypto.signing.rsa

import network.xyo.sdkcorekotlin.schemas.XyoInterpret
import network.xyo.sdkcorekotlin.schemas.XyoSchemas
import network.xyo.sdkcorekotlin.crypto.signing.XyoPublicKey
import network.xyo.sdkcorekotlin.crypto.signing.rsa.XyoGeneralRsa.Companion.RSA_PUBLIC_EXPONENT
import network.xyo.sdkobjectmodelkotlin.structure.XyoObjectStructure
import java.math.BigInteger
import java.security.interfaces.RSAPublicKey

/**
 * An Xyo Encoded RSA Public key.
 */
class XyoRsaPublicKey(private val modulus : BigInteger) : RSAPublicKey, XyoPublicKey(byteArrayOf(), 0) {
    private val publicExponent : BigInteger = BigInteger(RSA_PUBLIC_EXPONENT)

    override fun getAlgorithm(): String {
        return "RSA"
    }

    override fun getEncoded(): ByteArray {
        return getModulus().toByteArray()
    }

    override fun getFormat(): String {
        return "XyoRsaPublicKey"
    }

    override fun getModulus(): BigInteger {
        return modulus
    }

    override fun getPublicExponent(): BigInteger {
        return publicExponent
    }

    override var allowedOffset: Int = 0

    override var item: ByteArray = byteArrayOf()
        get() = XyoObjectStructure.newInstance(XyoSchemas.RSA_PUBLIC_KEY, encoded).bytesCopy


    companion object : XyoInterpret {
        override fun getInstance(byteArray: ByteArray): XyoRsaPublicKey {
            val value = XyoObjectStructure(byteArray, 0).valueCopy
            return XyoRsaPublicKey(BigInteger(value))
        }
    }
}