iPhoneでcommoncrypto
ライブラリを使用してRSA鍵のペアを作成しています。公開鍵をサーバー(Python)に送信して使用できますそれは電話から送られた署名を確認するためです。私はこのように見える方法getPublicKeyBits()
を用いCommonCrypto例から正確なコードを使用していiPhoneで生成された公開鍵を公開する方法がわからない
:
' - (NSDataの)getPublicKeyBits { OSStatus sanityCheck =はnoErr。 NSData publicKeyBits = nil; NSData * publicTag = [[NSData alloc]] initWithBytes:publicKeyIdentifierの長さ:sizeof(publicKeyIdentifier)]; CFDataRef cfresult = NULL;
NSMutableDictionary * queryPublicKey = [[NSMutableDictionary alloc] init];
// Set the public key query dictionary.
[queryPublicKey setObject:(__bridge id)kSecClassKey forKey:(__bridge id)kSecClass];
[queryPublicKey setObject:publicTag forKey:(__bridge id)kSecAttrApplicationTag];
[queryPublicKey setObject:(__bridge id)kSecAttrKeyTypeRSA forKey:(__bridge id)kSecAttrKeyType];
[queryPublicKey setObject:[NSNumber numberWithBool:YES] forKey:(__bridge id)kSecReturnData];
// Get the key bits.
sanityCheck = SecItemCopyMatching((__bridge CFDictionaryRef)queryPublicKey, (CFTypeRef*)&cfresult);
if (sanityCheck != noErr)
{
publicKeyBits = nil;
}
else
{
publicKeyBits = (__bridge_transfer NSData *)cfresult;
}
return publicKeyBits;
} `
問題は、私は正確に、鍵が格納されているか、またはそれを渡す方法がわからないということです。私はgetPublicKeyBits()
を使ってNSData
構造体にしています。私はbase64
でそれをエンコードするライブラリをインポートしました。私はキーを取得しています(SHA1、SHA256に移動したいですが、それはこれを動作させることに二次的です)。base64
バージョンは、私がここで見つけた他のキーのように見え、RSAの問題を解決する他の人にも見えます。
私はM2Crypto
ライブラリをPythonで使用しようとしていましたが、私がエラー"RSA Error: No Start Line"
を取得していることを確認しようとしました。ここで私は、公開鍵を受け取るために使用しているコードです。
pubKey = request.form['publickey']
uid = uuid4().hex
while not unique(uid, User):
uid = uuid.uuid4().hex
user = User(uid, email, secret, pubKey)
そして、私は署名をチェックするために使用しているコード:
def validate(sessionKey, sig, pem):
bio = BIO.MemoryBuffer(pem.encode('ascii'))
rsa = RSA.load_pub_key_bio(bio)
pubkey = EVP.PKey()
pubkey.assign_rsa(rsa)
pubkey.reset_context(md='sha1')
pubkey.verify_init()
pubkey.verify_update(sessionKey)
return pubkey.verify_final(sig)
私は本当に私は何のよう困惑します間違っているが、私は近づいているように感じる。私の全方法があなたのやり方ではない場合、私は電話でRSA鍵を生成し、公開鍵をサーバに公開し、そのサーバ上の電話から署名を検証する他の方法を聞きたいです。
ありがとうございます!
公開鍵データの作成に使用するiOSコードも投稿できますか? – MrTJ
コードを更新した投稿 – brennen