Closed YisusJesusA closed 1 month ago
Hey @YisusJesusA 👋
Is this what you're looking for?
let base64PublicKey = "AjUh33uUJI/98NN/c4pHksw5Mraxbiefcc3eglE4Oybn" // Your BASE64 Public Key
let publicKeyData = Data(base64Encoded: base64PublicKey)!
// Convert to secp256k1 public key
let publicKey = try! secp256k1.KeyAgreement.PublicKey(dataRepresentation: publicKeyData)
// Your private key
let privateKey = try! secp256k1.KeyAgreement.PrivateKey()
// Perform Key Agreement
let sharedSecret = try! privateKey.sharedSecretFromKeyAgreement(with: publicKey)
// Get the shared secret as data
let sharedKeyData = Data(sharedSecret.bytes)
print("Shared Key: \(sharedKeyData.base64EncodedString())")
I am trying to do the same but my public key in base 64 is larger and getting this error.
This is my publickey public = "BP8CBxIFebe2xjpvI7R4d0c28v7uJRqIkQAnyNh5By8t/AMAlSw+eJzeNQt1cF2saaCVydbXZzkhv6bufIAAUSc="
this publickey string is like the one Im generating with this methods:
let publicKey = try! secp256k1.KeyAgreement.PrivateKey().publicKey let b64Key = String(publicKey.rawRepresentation.base64EncodedString())
but since im receiving base64 publickey from server I not able to use those methods
This is my publickey public = "BP8CBxIFebe2xjpvI7R4d0c28v7uJRqIkQAnyNh5By8t/AMAlSw+eJzeNQt1cF2saaCVydbXZzkhv6bufIAAUSc="
This is an uncompressed public key and therefore needs to be specified.
let base64PublicKey = "BP8CBxIFebe2xjpvI7R4d0c28v7uJRqIkQAnyNh5By8t/AMAlSw+eJzeNQt1cF2saaCVydbXZzkhv6bufIAAUSc="
let publicKeyData = Data(base64Encoded: base64PublicKey)!
// Create an uncompressed public key
let publicKey = try! secp256k1.KeyAgreement.PublicKey(
dataRepresentation: publicKeyData,
format: .uncompressed
)
Hello, am receiving a public key in base 64 format, and I am using the Elliptic Curve Diffie Hellman Key Agreement. But how can I obtain de shared key with this type of public key. Is it possible?