سؤال

أحاول كتابة تطبيق صغير من شأنه أن يوقع عبر البريد الإلكتروني مع S / MIME.

من الواضح أنني أريد أن أجعل جرة صغيرة واحدة فقط الأشياء المطلوبة. من الواضح أن طريقة جافا للقيام بذلك تنطوي على وجود قلعة نطاط موقعة ضخمة.

السؤال هو: ما هي أسهل طريقة للحصول على S / MIME دون لمس JCE وبعد أن تشكو من "مصادقة" مقدمي "مقدمي"؟ ربما يوجد تطبيق S / MIME الذي لا يعتمد على JCE؟ ربما من الممكن استخدام نطاط القلعة S / MIME باستخدام API خفيفة الوزن دون لمس JCE؟ ربما هناك أي طريقة أخرى؟

من الواضح بالنسبة لي أن لا شيء يمكن أن يمنع خوارزميات تشفير مفتوحة من جافا من العمل من العمل بغض النظر عما إذا كانت صن يوافق، لذلك ليس مسألة الاحتمال النظري، بل: ما هي الطريقة الأقل مؤلمة؟

بالطبع، يمكن أن أذهب دائما قبيحا في وقت مبكر من قبل الاستيلاء على قلعة نطاط نقية جافا JCE تنفيذ، وإعادة تسمية حزمها إلى Java.Security1، وإجراء أي تغييرات أريد - ولكن بهذه الطريقة تبدو مؤلمة للغاية الآن.

تحديث مشكلتي الحالية مع استخدام Bouncy Castle مباشرة: أحاول تحميل مفاتيح من Keystore، والتي تنطوي على استخدام SecretkyFactory، والتي بدورها ترفض بناء قلعة نطاط.

هل كانت مفيدة؟

المحلول 2

انها واضحة جدا لتوقيع الرسائل دون استخدام jce. كانت المشكلة الحقيقية قراءة مفاتيح PKCS # 12.

فعلت هذا: * نسخ jdkpkcs12keystore فئة أكثر. * في كل مكان في ذلك، استبدال الأمان. getinstance () مع bcprovider.getService (). NewInstance () (الذي يعود SPI-S) * في تلك SPI-S (في مصادر BC) قدمت الأساليب المطلوبة العامة بدلا من المحمية.

يبدو وكأنه اختراق، ولكن يبدو أنه يعمل بالفعل.

نصائح أخرى

مكتوب BC S / MIME عبر حزمة CMS، لذلك فإن السؤال تنتقل حقا لتعديل حزمة CMS بحيث تتم كل التشفير باستخدام فئات الوزن الخفيفة.

تم القيام بشيء مشابه بالفعل، أكثر أو أقل بنجاح، إصدار .NET من قلعة نطاط. نحن نحاول (من المقرر أن تكون عملية بطيئة) لإعادة تكوين نسخة جافا حتى يمكن أن تعمل أشياء CMS مع jce أو خفيفة الوزن. نفس القضية تؤثر على أجزاء أخرى من API BC، مثل PKCS # 12 Keystore مدمجة في موفر JCE، تتم كتابة حزمة OpenPGP إلى JCE، إلخ.

مشكلتك ربما أبسط من الحالة العامة رغم ذلك. من المفترض أنك تحتاج فقط إلى CMSSignedDatagenerator ودعم الفصول الدراسية. ربما لا تحتاج إلى كل الاختلافات التي لا تعد ولا تحصى من AddSigner أو توليدها. إذا قررت فقط على خوارزميات Digest / Signature في المقدمة، فستكون جميع أشياء المزود سهلة الاستبدال بالمكالمات المضغوطة إلى تطبيقات محددة خفيفة الوزن.

بدلا من لوحة المفاتيح، ربما يمكنك الابتعاد عن تخزين مفتاح خاص واحد فقط في ملف PKCS # 8 (PEM المشفر ربما). وبالمثل للشهادة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top