問題タブ [seckeyref]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
378 参照

objective-c - AnyObject からのキャスト エラーですか? SecKeyRef に? スウィフトで

Swift ベースの PKI 実装の一部として、SecKeyWrapper.m を Swift に移植しました。

キーチェーン アクセス メソッドの両方 (Objective-C と Swift) は、Swift 実装の一部を除いて正常に動作しています。

ピアから公開鍵を base64 形式で受け取ります。これは NSData に変換され、次を使用してキーチェーンに保存されます。

ピア公開鍵をキーチェーンに正常に保存したら、それを SecKeyRef として取得する必要があります。

問題は、SecItemCopyMatching が AnyObject 型のオブジェクトを返すことです。SecKeyRef (またはエイリアスである SecKey) にキャストすることはできません

私が見つけた回避策は、peerKeyRef を NSObject としてキャストすることですか? 次に、Objective-C を使用して、次のように SecKey にブリッジします。

これを行う Objetive-C コードは次のとおりです。

この回避策を使用した SecKey へのキャストは正常に機能し (警告やエラーは発生せず)、期待どおりの結果が得られます。

AnyObject をキャストする Swift コードには何が欠けていると思いますか? SecKeyRef に?

Xcode 7.3.1 と Swift 2.2 で作業しています

Rgds....

0 投票する
1 に答える
1999 参照

objective-c - iOS10 での CFRelease クラッシュ

以下は、iOS 9 まで正常に動作していた私のコードです。

この方法は、iOS 9.x まで正常に機能していましたが、今日、XCode を 8 に更新し、iOS 10 デバイスで実行しました。アプリケーションが
CFRelease(publicKey)でクラッシュしています。

以下はクラッシュする前のコンソールからのログです。

Objective-C クラス情報を読み込めませんでした。これにより、利用可能な型情報の品質が大幅に低下します

ここに画像の説明を入力

問題を正確に取得できませんでした。

Zombie を有効にすると、クラッシュが再現されます。以下はコンソールからのログです。

*** -[Not A Type release]: 割り当て解除されたインスタンス 0x170225880 に送信されたメッセージ

前もって感謝します。

問題を取得しました。内部メソッド encodedData = [self encryptData:dataToEncrypt withKeyRef:publicKey]; があります。

SecKeyRef オブジェクトが解放されている場所。

しかし、これがiOS9までどのように機能したのだろうか???????

0 投票する
1 に答える
286 参照

swift - Swift 2 の NSData から SecKeyRef へ

RSACryptor.swift で生成された公開鍵と秘密鍵のペアがあります。公開鍵を base64 文字列に変換してサーバーに保存できます。

他の iOS デバイスで公開鍵を取得し、それを使用してメッセージを暗号化したいと考えています。

base64 キーを NSData に変換できます

しかし、それを に変換する方法が見つからないSecKeyRefので、簡単に使用できます。

私が見つけた回答はObjectiv-Cにあり、時代遅れでした。

ご協力いただきありがとうございます !

0 投票する
0 に答える
252 参照

ios - RSA 公開鍵の生成 - iOS でキー サイズの文字数が異なる

アプリケーションの要件に従って、サイズ 512 の RSA 公開鍵を作成する必要があります。同じために以下のコードを使用しています。

Android でも .net でも同じ機能を利用できます。他のすべてのプラットフォームで文字列の長さを数えると、スペースありで 181 文字、スペースなしで 174 文字です。

しかし、iOS では、スペースありで 153 文字、スペースなしで 146 文字しか取得できません。

コードに問題はありますか???? または、iOS の RSA の長さが異なりますか?

助けてください。前もって感謝します。

0 投票する
0 に答える
497 参照

objective-c - 外部ライブラリを使用しない iOS および OSx での署名の検証 (-9809 OSStatus エラー)

SecKeyCreateWithData を使用して公開鍵を作成します。キーは、ヘッダーを削除した後、Pem から作成されます。

を使用して署名を検証しようとしました

  1. SecKeyRawVerify が -9809 エラーを返す (iOS)
  2. SecKeyVerifySignature が -67808 "RSA 署名の検証に失敗しました。一致しません" を返します (iOS)
  3. SecTransformExecute は false を返します。(OSx)

SHA256 および Unicode エンコーディングを使用してメッセージに署名します (C# RSACryptoProvider)。

公開鍵を作成するためのコード:

認証コード iOS:

検証コード OSx:

私は立ち往生しており、どんな助けもいただければ幸いです。