Core Public Key functionality depends on Ristretto element from curve25519.
So if you operate with it on low level, and has a Ristretto in your hands, instantiate object using one of this two methods:
val publicKeyRistretto: RistrettoElementval publicKeyCompressedRistretto: CompressedRistrettoval publicKey: PublicKey=PublicKey(publicKeyRistretto)val publicKeyFromCompressed: PublicKey= PublicKey.fromCompressed(publicKeyCompressedRistretto)// publicKey == publicKeyFromCompressed, // if publicKeyCompressedRistretto is a compressed form of publicKeyRistretto
To get a compressed version of Public Key's Ristretto use this, however we only use this for signing and verifying inside our library:
val publicKey: PublicKeyval publicKeyCompressedRistretto: CompressedRistretto= publicKey.asCompressed()
But more likely, you will operate with byte arrays.
So you can either instantiate Public Key or convert it to Byte Array using this:
val publicKeyByteArray: ByteArray// should be 32 bytesval publicKey: PublicKey= PublicKey.fromByteArray(publicKeyByteArray)val backToByteArray: ByteArray= publicKey.toByteArray()// publicKeyByteArray == backToByteArray
Verifying signatures
Same as for Secret Key you can verify it using transcript, or using simple method: