Comments (7)
Hello, @csjones ,thank you for your reply, CryptoKit
has a constructor to create a PrivateKey from a pem private key, but it only supports iOS 14 or above. I think it would be great if secp256k1.swift
could support importing pem to create a PrivateKey.
CryptoKit
example:
if #available(iOS 14.0, *) {
let prikey = """
-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgeeKPvGwZ92ghbN4+
bReH21oDBQnD1f0/HOs8usdsdSDuouioi77DSY9sdsa9dya89d8s/aDrJxITXeXo
/QFWM+SKDJLdfsfw4A546Jsdf/ipgevqznDVKTDJxoOK6DliXS20GQjZZ9T6xx3D
ZqoY65zp
-----END PRIVATE KEY-----
"""
let message = "Test signature message".data(using: .utf8)!
let privateKey = try? P256.Signing.PrivateKey(pemRepresentation: prikey)
guard let signature = try? privateKey?.signature(for: message) else { return }
let signDataBase64String = signature.derRepresentation.base64EncodedString()
print("CryptoKit: \(signDataBase64String)")
let publicKey = privateKey?.publicKey
let isValidSignature = publicKey?.isValidSignature(signature, for: message)
print("CryptoKit: \(isValidSignature)")
}
from secp256k1.swift.
Hey @Kejiasir 👋
Importing a pem private key isn't supported yet. Do you have a specific use case? I can investigate your use case, check out how Apple supports pem, and see about bringing the feature into this package.
from secp256k1.swift.
Hey @Kejiasir - want to double check, are you sure you need seccp256k1? I ask because CryptoKit
uses seccp256r1 and it wouldn't matter what iOS version this package supports.
from secp256k1.swift.
Hey @csjones Yes, I need to use the ecdsa signature algorithm to generate signatures in versions below iOS14. Since I need to create a PrivateKey by importing a pem key, so far, I have not found a more suitable third-party library to achieve it.
from secp256k1.swift.
Hey @Kejiasir how are you generating these pem keys?
from secp256k1.swift.
Hey @csjones This is Apple's official document, and I followed this guideline. Generate keys for in-app purchases
from secp256k1.swift.
Hey @Kejiasir I think this package isn't what you need based on those Apple instructions and none of the documentation mentions secp256k1. Are you aware of this Swift package? It has support prior to iOS 13.
I am still planning to add PEM key support but I don't have a good test case for basing the implementation on.
from secp256k1.swift.
Related Issues (20)
- nvm I need the podspec for this, i'm so sorry... HOT 2
- Contructing a PublicKey with rawRepresentation fails with incorrect size HOT 3
- value of type `secp256k1_surjectionproof` has no member `data` HOT 13
- Differenct signature result with other libraries HOT 2
- Do you have any examples of how you would sign a taproot input using this library? HOT 1
- Did library already support sign a taproot input? HOT 4
- Taproot address format HOT 9
- Cannot install package via SPM when importing it from another package HOT 3
- Is it possible to generate an invalid PrivateKey when no secret it passed? HOT 9
- How to use secp256k1_ec_pubkey_combine HOT 10
- Test/Example for `sharedSecretFromKeyAgreement` with `handler`? HOT 8
- xcodebuild fails for 0.13.0 HOT 1
- secp256k1/ECDH.swift:180:20 Value of type 'UnsafeMutablePointer<UInt8>' has no member 'update' HOT 1
- #include "./secp256k1.h" Report an error './secp256k1.h' file not found HOT 6
- Is there really a random k injected when calculating an ECDSA signature ? HOT 2
- Recovery of pubic key when manually building signature HOT 11
- Please use semver for release tags HOT 1
- Add support for VisionOS HOT 4
- BitcoinSign Transaction HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from secp256k1.swift.