BouncyCastle kullanarak SHA1withECDSA algoritması tarafından imzalanmış kendinden imzalı sertifikam var. BC altında bunu kolayca doğrulayabilirim, ancak bunu JavaCard üzerinde yaptığımda her zaman yanlış gönderirim (NIST'den Curve secp192r1). Sertifika bekletme işareti düz (X9.62 olmayanlar herhangi bir TAG olmadan yalnızca r + s anlamına gelir).javacard
Bunu doğrulamak için kodum var (sabit olarak yerleştirilmiş değerler ile - tabii ki testler için).
bayt [] certdata = {...}
Signature signature = Signature.getInstance(Signature.ALG_ECDSA_SHA, false);
ECPublicKey ecpk = (ECPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_EC_FP_PUBLIC, KeyBuilder.LENGTH_EC_FP_192, true);
ecpk.setA(new byte[]{...}, (short)0, (short)0x0018);
ecpk.setB(new byte[]{...}, (short)0, (short)0x0018);
ecpk.setG(new byte[]{...}, (short)0, (short)0x0031);
//Point format: uncompressed tag(0x04), x, y
ecpk.setK((short)0x0001);
ecpk.setR(new byte[]{}, (short)0, (short)0x0018);
ecpk.setW(new byte[]{}, (short)0, (short)0x31);
ecpk.setFieldFP(new byte[]{}, (short)0, (short)0x0018);
signature.init(ecpk, Signature.MODE_VERIFY);
boolean result = signature.verify(certdata, (short)0, (short)certdata.length, signtab, (short)0, (short)signtab.length);
if(result) ISOException.throwIt((short)0x0001);
else ISOException.throwIt((short)0x0002);
}
'...' yerine açık görüş (192bits eğrisi büyük bir karmaşa yapabilir) için bayt.
Belgesi pastebin üzerinde TAGS açıklama ile: Yeni testler:
düzenlemek
Sevar herhangi bir yardım için
Teşekkür Bütün testler aynı veriler üzerinde yeniden (PublicKey, PrivateKey , İmzalanacak mesaj) işareti randomize edilir, böylece 2 işaret (signT - Terminal (BC) tarafından oluşturulan işaret kullanılır, signC - işaret üretir d) Chip tarafından
signT CHIP üzerinde doğrulanamaz, ancak Terminalde doğrulanabilir. signC
Çapraz İlişkisi
Çapraz İlişkisi iyi
-
çalışır
- & Terminali
yüzden API arasındaki çapraz kontrol CHIP doğrulandı
anahtar çifti iyi oluşturulur, çünkü PrivateKey ve PublicKey BC tarafından CHIP'ye gönderildiğinde CHIP'de üretilen ateşleme CHIP tarafından doğrulanabilir.
- keypair Sanırım artık kontrol etmelisiniz hiçbir fikrim yok iyi
üretti. Problem muhtemelen ECDSA adımında d = SHA1 (Mesaj) doldurma dizisi ile olabilir. Karmadan sonra dizi ile ilgili olanlar (karma, eğriden daha kısa ve kartın kopyalanmadan önce dizinin boyutunu bildirmesi gerekir)
yararlı olacağını umuyoruz? Yorumlar/cevaplar için geribildirim verdiyseniz hoş olurdu. –