
GOBORTIVEPGP هو تطبيق بروتوكول OPERPGP لنظام التشغيل iOS و MACOS. OpenPGP هو المعيار الأكثر استخدامًا للتشفير عبر البريد الإلكتروني. يتم تعريفه بواسطة مجموعة عمل OpenPGP الخاصة بفرقة عمل هندسة الإنترنت (IETF).
ها هي قصة منشور المدونة.
تريد المساعدة ، عظيم! المضي قدمًا وشوك ريبونا ، وقم بإجراء تغييراتك وأرسل لنا طلب سحب.
اهلا وسهلا بك للمساهمة. انظر المساهمة
الرجاء إنشاء طلب سحب.
يبقى الهدف PGP تحت ترخيص مزدوج:
مجاني للاستخدام غير التجاري ، الذي يغطيه متغير ترخيص BSD. هذا يعني أنه يجب عليك ذكر Marcin Krzyżanowski كمؤلف أصلي لهذا الرمز وإعادة إنتاج نص الترخيص داخل تطبيقك.
ترخيص الاستخدام التجاري للاستخدام في المنتجات التجارية. يرجى الأخذ في الاعتبار أن بعض المنتجات المجانية تظل منتجات تجارية. الرجاء الاتصال بي عبر البريد الإلكتروني للحصول على التفاصيل.
لست متأكدا ما تختار؟ تحقق من الأسئلة الشائعة
dependencies: [
.package(url: "https://github.com/krzyzanowskim/ObjectivePGP.git", .upToNextMinor(from: "0.99.4"))
]
pod 'ObjectivePGP'
يأتي GOSTIVEPGP مع الأطر لأحدث الإصدار ، يمكنك النسخ والتضمين في مشروعك:
الهدف-C
# import < ObjectivePGP/ObjectivePGP.h >سريع
import ObjectivePGP NSArray <PGPKey *> *keys = [ObjectivePGP readKeysFromPath: @" /path/to/key.asc " error: nil ]; let keys = try ObjectivePGP . readKeys ( fromPath : " /path/to/key.asc " ) Keyring هو تخزين (في الذاكرة أو على القرص) يحتفظ بجميع أنواع مفاتيح PGP.
PGPKeyring *keyring = ObjectivePGP.defaultKeyring;
PGPKeyring *keyring = [[PGPKeyring alloc ] init ];
NSArray <PGPKey *> *allKeys = keyring.keys;
[keyring importKeys: @[key]];
[keyring deleteKeys: @[key]];
[keyring importKey: @" 979E4B03DFFE30C6 " fromPath: @" /path/to/secring.gpg " ];
PGPKey *key = [keyring findKeyWithIdentifier: @" 979E4B03DFFE30C6 " ];
NSArray <PGPKey *> keys = [pgp findKeysForUserID: @" Name <[email protected]> " ]; let keyring = ObjectivePGP . defaultKeyring
let keyring = Keyring ( )
let allKeys = keyring . keys
keyring . import ( keys : [ key ] )
keyring . delete ( keys : [ key ] )
keyring . import ( keyIdentifier : " 979E4B03DFFE30C6 " , fromPath : " /path/to/secring.gpg " )
if let key = keyring . findKey ( " 979E4B03DFFE30C6 " ) {
// key found in keyring
}
keyring . findKeys ( " Name <[email protected]> " ) . forEach ( key ) {
// process key
} // Write keyring to file
[[keyring export: error] writeToURL: [ NSURL fileURLWithString: @" keyring.gpg " ]];
// Public keys data
NSData *publicKeys = [keyring exportKeysOfType: PGPKeyTypePublic error: nil ];// Write keyring to file
try keyring . export ( ) . write ( to : URL ( fileURLWithPath : " keyring.gpg " ) )
// Public keys (Data)
let publicKeys = keyring . exportKeys ( of : . public ) قم بتوقيع بيانات مع مفتاح:
NSData *signature = [ObjectivePGP sign: fileContent detached: YES usingKeys: @[key] passphraseForKey: nil error: nil ];
[ObjectivePGP verify: fileContent withSignature: signature usingKeys: @[key] passphraseForKey: nil error: nil ]; let signature = try ObjectivePGP . sign ( encryptedBin , detached : true , using : [ key1 ] )
try ObjectivePGP . verify ( encryptedBin , withSignature : signature , using : [ key1 ] ) NSData *encrypted = [ObjectivePGP encrypt :fileContent addSignature: YES usingKeys: @[key] passphraseForKey: nil error: nil ];
[ObjectivePGP decrypt: encrypted andVerifySignature: YES usingKeys: @[key] passphraseForKey: nil error: nil ]; let encrypted = try ObjectivePGP . encrypt ( fileContent ) , addSignature : true , using : [ key1 , key2 ] )
let decrypted = try ObjectivePGP . decrypt ( encrypted , andVerifySignature : true , using : [ key1 ] ) PGPKeyGenerator *generator = [[PGPKeyGenerator alloc ] init ];
PGPKey *key = [generator generateFor: @" Marcin <[email protected]> " passphrase: nil ];
NSData *publicKeyData = [key export: PGPKeyTypePublic error: nil ];
NSData *secretKeyData = [key export: PGPKeyTypeSecret error: nil ]; let key = KeyGenerator ( ) . generate ( for : " [email protected] " , passphrase : " password " )
let publicKey = try key . export ( keyType : . public )
let secretKey = try key . export ( keyType : . secret ) ASCII Armor هو محول ترميز ثنائي إلى نص. يتضمن ASCII Armor غلاف الرسائل المشفرة في ASCII بحيث يمكن إرسالها بتنسيق مراسلة قياسي مثل البريد الإلكتروني.
مثال:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: For more info see https://www.objectivepgp.org
[...]
-----END PGP PUBLIC KEY BLOCK-----
يمكن استخدام فئة PGPArmor لتحويل التنسيق الثنائي إلى تنسيق ASCII
NSString *armoredKey = [PGPArmor armoredData: encrypted as: PGPArmorPublicKey]; let armoredKey = Armor . armored ( Data ( ) , as : . publicKey ) عند التحويل يدويًا ، من المهم استخدام قيمة PGPArmorType الصحيحة التي تحدد الرأس. قد يكون جزءًا صعبًا ، لذا فإليك ورقة الغش:
| اكتب البيانات | pgparmortype | مثال |
|---|---|---|
| مشفرة | PGPArmorMessage | Armor.armored(ObjectivePGP.encrypt(...), as: .message) |
| فك تشفير | PGPArmorMessage | Armor.armored(ObjectivePGP.decrypt(...), as: .message) |
| المفتاح العام | PGPArmorTypePublic | Armor.armored(key.export(), as: .publicKey) |
| المفتاح السري | PGPArmorTypeSecret | Armor.armored(key.export(), as: .secretKey) |
لأي نتيجة للتشفير ، يكون النوع هو PGPArmorMessage
انظر Changelog
القيود المعروفة:
حتى الآن ، خضعت قاعدة كود GOOSEPGP لمراجعة أمنية كاملة من CURE53.
يستخدم هذا المنتج البرامج التي تم تطويرها بواسطة مشروع OpenSSL للاستخدام في مجموعة أدوات OpenSSL. (http://www.openssl.org/)
مارسين كرزيانوفسكي