Я делаю прототип клиента Hyperledger Sawtooth для iOS на Swift.
До этого я делал то же самое для Android на Java.В реализации Java это облегчает использование библиотеки SpongyCastle: функция генерации ключей выглядит следующим образом:
public static KeyPair getKeyPair() throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("ECDSA", "SC");
ECGenParameterSpec ecGenParameterSpec = new ECGenParameterSpec("secp256k1");
keyPairGenerator.initialize(ecGenParameterSpec, new SecureRandom());
return keyPairGenerator.generateKeyPair();
}
Мне нужно сделать то же самое в Swift:
Создать secp256k1
пара ключей и подписать массив байтов с ним .
и используйте это для подписи массива байтов:
Signature signature = Signature.getInstance("ECDSA", "SC");
signature.initSign(keyPair.getPrivate(), new SecureRandom());
signature.update(bytes);
byte[] signedBytes = signature.sign();
Я гуглил "secp256k1 swift" и нашел следующие библиотеки:
Все они являются привязками биткойн-ядраБиблиотека secp256k1 для Swift.
Можно ли сделать что-то вроде let kp = KeyPair("secp256k1")
, let signedBytes = kp.sign(bytes)
?Если да, то как, а если нет, то есть ли другие способы сделать это?