📄 pkiapplet.jca
字号:
ifnonnull L2;
L1: sconst_0;
invokestatic 26; // javacard/framework/CardRuntimeException.throwIt(S)V
L2: aload_0;
bspush 10;
sconst_0;
invokestatic 27; // javacardx/crypto/Cipher.getInstance(BZ)Ljavacardx/crypto/Cipher;
putfield_a 13; // reference com/sun/satsa/pkiapplet/PKIApplet.cipher
getstatic_b 29; // boolean com/sun/satsa/pkiapplet/PKIApplet.supportKeyGeneration
ifeq L4;
L3: aload_0;
sconst_1;
sconst_0;
invokestatic 30; // javacard/security/MessageDigest.getInstance(BZ)Ljavacard/security/MessageDigest;
putfield_a 14; // reference com/sun/satsa/pkiapplet/PKIApplet.digest
L4: aload_0;
invokevirtual 32; // javacard/framework/Applet.register()V
return;
}
.method public static install([BSB)V 0 {
.stack 2;
.locals 0;
L0: new 33; // com/sun/satsa/pkiapplet/PKIApplet
dup;
invokespecial 34; // com/sun/satsa/pkiapplet/PKIApplet.<init>()V
pop;
return;
}
.method public select()Z 6 {
.stack 2;
.locals 0;
L0: getstatic_a 25; // reference com/sun/satsa/pkiapplet/Data.PINs
ifnull L2;
L1: aload_0;
invokevirtual 35; // com/sun/satsa/pkiapplet/PKIApplet.init()V
L2: aload_0;
getfield_a_this 15; // reference com/sun/satsa/pkiapplet/PKIApplet.base
putfield_a 16; // reference com/sun/satsa/pkiapplet/PKIApplet.current
aload_0;
sconst_0;
putfield_b 17; // boolean com/sun/satsa/pkiapplet/PKIApplet.isSERestored
sconst_1;
sreturn;
}
.method init()V 128 {
.stack 6;
.locals 3;
L0: getstatic_a 25; // reference com/sun/satsa/pkiapplet/Data.PINs
invokestatic 39; // com/sun/satsa/pkiapplet/Parser.init([B)V
invokestatic 28; // com/sun/satsa/pkiapplet/Parser.getByte()B
sstore_1;
aload_0;
sload_1;
getstatic_s 40; // short com/sun/satsa/pkiapplet/Data.freePINSlots
sadd;
newarray 11;
putfield_a 18; // reference com/sun/satsa/pkiapplet/PKIApplet.PIN_REFs
aload_0;
sload_1;
getstatic_s 40; // short com/sun/satsa/pkiapplet/Data.freePINSlots
sadd;
anewarray 42; // javacard/framework/OwnerPIN
putfield_a 9; // reference com/sun/satsa/pkiapplet/PKIApplet.PINs
sconst_0;
sstore_2;
goto L2;
L1: getfield_a_this 18; // reference com/sun/satsa/pkiapplet/PKIApplet.PIN_REFs
sload_2;
invokestatic 28; // com/sun/satsa/pkiapplet/Parser.getByte()B
bastore;
invokestatic 28; // com/sun/satsa/pkiapplet/Parser.getByte()B
sstore_3;
getfield_a_this 9; // reference com/sun/satsa/pkiapplet/PKIApplet.PINs
sload_2;
new 42; // javacard/framework/OwnerPIN
dup;
sconst_3;
bspush 8;
invokespecial 52; // javacard/framework/OwnerPIN.<init>(BB)V
aastore;
getfield_a_this 9; // reference com/sun/satsa/pkiapplet/PKIApplet.PINs
sload_2;
aaload;
getstatic_a 25; // reference com/sun/satsa/pkiapplet/Data.PINs
getstatic_s 49; // short com/sun/satsa/pkiapplet/Parser.offset
sload_3;
invokevirtual 53; // javacard/framework/OwnerPIN.update([BSB)V
sload_3;
invokestatic 83; // com/sun/satsa/pkiapplet/Parser.skip(S)V
sinc 2 1;
L2: sload_2;
sload_1;
if_scmplt L1;
L3: getstatic_a 45; // reference com/sun/satsa/pkiapplet/Data.PrivateKeys
invokestatic 39; // com/sun/satsa/pkiapplet/Parser.init([B)V
invokestatic 28; // com/sun/satsa/pkiapplet/Parser.getByte()B
sstore_1;
aload_0;
sload_1;
getstatic_s 43; // short com/sun/satsa/pkiapplet/Data.freeKeySlots
sadd;
anewarray 44; // com/sun/satsa/pkiapplet/PKIApplet$PrivateKey
putfield_a 19; // reference com/sun/satsa/pkiapplet/PKIApplet.keys
sconst_0;
sstore_3;
goto L5;
L4: getfield_a_this 19; // reference com/sun/satsa/pkiapplet/PKIApplet.keys
sload_3;
new 44; // com/sun/satsa/pkiapplet/PKIApplet$PrivateKey
dup;
aload_0;
invokespecial 54; // com/sun/satsa/pkiapplet/PKIApplet$PrivateKey.<init>(Lcom/sun/satsa/pkiapplet/PKIApplet;)V
aastore;
sinc 3 1;
L5: sload_3;
sload_1;
if_scmplt L4;
L6: getstatic_a 46; // reference com/sun/satsa/pkiapplet/Data.Files
invokestatic 39; // com/sun/satsa/pkiapplet/Parser.init([B)V
aload_0;
aload_0;
aconst_null;
invokevirtual 47; // com/sun/satsa/pkiapplet/PKIApplet.readFile(Lcom/sun/satsa/pkiapplet/DFile;)Lcom/sun/satsa/pkiapplet/File;
checkcast 0 48; // T_CLASSORINTERFACE com/sun/satsa/pkiapplet/DFile
putfield_a 20; // reference com/sun/satsa/pkiapplet/PKIApplet.top
getfield_a_this 15; // reference com/sun/satsa/pkiapplet/PKIApplet.base
ifnonnull L8;
L7: sspush -28671;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L8: aconst_null;
putstatic_a 25; // reference com/sun/satsa/pkiapplet/Data.PINs
aconst_null;
putstatic_a 45; // reference com/sun/satsa/pkiapplet/Data.PrivateKeys
invokestatic 51; // javacard/framework/JCSystem.requestObjectDeletion()V
getstatic_s 49; // short com/sun/satsa/pkiapplet/Parser.offset
getstatic_a 46; // reference com/sun/satsa/pkiapplet/Data.Files
arraylength;
if_scmpeq L10;
L9: sspush -28671;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L10: return;
}
.method readFile(Lcom/sun/satsa/pkiapplet/DFile;)Lcom/sun/satsa/pkiapplet/File; 129 {
.stack 8;
.locals 6;
L0: invokestatic 41; // com/sun/satsa/pkiapplet/Parser.getShort()S
sstore_2;
invokestatic 28; // com/sun/satsa/pkiapplet/Parser.getByte()B
sstore_3;
invokestatic 41; // com/sun/satsa/pkiapplet/Parser.getShort()S
sstore 4;
sload_3;
sconst_1;
sand;
ifne L5;
L1: sload_3;
bspush 64;
sand;
ifne L3;
L2: new 55; // com/sun/satsa/pkiapplet/EFile
dup;
aload_1;
sload_2;
sload_3;
getstatic_s 49; // short com/sun/satsa/pkiapplet/Parser.offset
sload 4;
getstatic_a 46; // reference com/sun/satsa/pkiapplet/Data.Files
invokespecial 56; // com/sun/satsa/pkiapplet/EFile.<init>(Lcom/sun/satsa/pkiapplet/DFile;SSSS[B)V
astore 5;
sload 4;
invokestatic 83; // com/sun/satsa/pkiapplet/Parser.skip(S)V
goto L4;
L3: sload_3;
bspush -65;
sand;
sstore_3;
sload 4;
newarray 11;
astore 6;
invokestatic 41; // com/sun/satsa/pkiapplet/Parser.getShort()S
sstore 7;
getstatic_a 46; // reference com/sun/satsa/pkiapplet/Data.Files
getstatic_s 49; // short com/sun/satsa/pkiapplet/Parser.offset
aload 6;
sconst_0;
sload 7;
invokestatic 57; // javacard/framework/Util.arrayCopyNonAtomic([BS[BSS)S
pop;
new 55; // com/sun/satsa/pkiapplet/EFile
dup;
aload_1;
sload_2;
sload_3;
sconst_0;
sload 4;
aload 6;
invokespecial 56; // com/sun/satsa/pkiapplet/EFile.<init>(Lcom/sun/satsa/pkiapplet/DFile;SSSS[B)V
astore 5;
sload 7;
invokestatic 83; // com/sun/satsa/pkiapplet/Parser.skip(S)V
L4: aload 5;
areturn;
L5: new 48; // com/sun/satsa/pkiapplet/DFile
dup;
aload_1;
sload_2;
sload_3;
invokespecial 58; // com/sun/satsa/pkiapplet/DFile.<init>(Lcom/sun/satsa/pkiapplet/DFile;SS)V
astore 5;
sload 4;
anewarray 59; // com/sun/satsa/pkiapplet/File
astore 6;
sconst_0;
sstore 7;
goto L7;
L6: aload 6;
sload 7;
aload_0;
aload 5;
invokevirtual 47; // com/sun/satsa/pkiapplet/PKIApplet.readFile(Lcom/sun/satsa/pkiapplet/DFile;)Lcom/sun/satsa/pkiapplet/File;
aastore;
sinc 7 1;
L7: sload 7;
sload 4;
if_scmplt L6;
L8: aload 5;
aload 6;
putfield_a 6; // reference com/sun/satsa/pkiapplet/DFile.files
sload_3;
bspush 9;
if_scmpne L10;
L9: aload_0;
aload 5;
putfield_a 15; // reference com/sun/satsa/pkiapplet/PKIApplet.base
L10: aload 5;
areturn;
}
.method public process(Ljavacard/framework/APDU;)V 7 {
.stack 2;
.locals 3;
.descriptor Ljavacard/framework/APDU; 1.10;
L0: aload_1;
invokevirtual 60; // javacard/framework/APDU.getBuffer()[B
astore_2;
aload_2;
sconst_0;
baload;
sspush 240;
sand;
s2b;
sstore_3;
aload_2;
sconst_1;
baload;
sstore 4;
sload_3;
ifne L4;
L1: sload 4;
bspush -92;
if_scmpne L4;
L2: aload_2;
sconst_2;
baload;
sconst_4;
if_scmpne L4;
L3: return;
L4: sload_3;
bspush -128;
if_scmpeq L6;
L5: sspush 28160;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L6: sload 4;
slookupswitch L15 7 -92 L7 -80 L8 -68 L13 -42 L9 32 L10 34 L11 42 L12;
L7: aload_0;
aload_1;
invokevirtual 61; // com/sun/satsa/pkiapplet/PKIApplet.selectFile(Ljavacard/framework/APDU;)V
return;
L8: aload_0;
aload_1;
invokevirtual 62; // com/sun/satsa/pkiapplet/PKIApplet.read(Ljavacard/framework/APDU;)V
return;
L9: aload_0;
aload_1;
invokevirtual 63; // com/sun/satsa/pkiapplet/PKIApplet.update(Ljavacard/framework/APDU;)V
return;
L10: aload_0;
aload_1;
invokevirtual 64; // com/sun/satsa/pkiapplet/PKIApplet.verify(Ljavacard/framework/APDU;)V
return;
L11: aload_0;
aload_1;
invokevirtual 65; // com/sun/satsa/pkiapplet/PKIApplet.manageSE(Ljavacard/framework/APDU;)V
return;
L12: aload_0;
aload_1;
invokevirtual 66; // com/sun/satsa/pkiapplet/PKIApplet.sign(Ljavacard/framework/APDU;)V
return;
L13: getstatic_b 29; // boolean com/sun/satsa/pkiapplet/PKIApplet.supportKeyGeneration
ifeq L15;
L14: aload_0;
aload_1;
invokevirtual 67; // com/sun/satsa/pkiapplet/PKIApplet.newKey(Ljavacard/framework/APDU;)V
return;
L15: sspush 27904;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
return;
}
.method selectFile(Ljavacard/framework/APDU;)V 130 {
.stack 3;
.locals 2;
.descriptor Ljavacard/framework/APDU; 1.10;
L0: aload_1;
invokevirtual 60; // javacard/framework/APDU.getBuffer()[B
astore_2;
aload_2;
sconst_2;
invokestatic 68; // javacard/framework/Util.getShort([BS)S
ifeq L2;
L1: sspush 27270;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L2: aload_0;
sconst_2;
invokespecial 69; // com/sun/satsa/pkiapplet/PKIApplet.checkDataSize(S)V
aload_0;
aload_2;
sconst_5;
invokestatic 68; // javacard/framework/Util.getShort([BS)S
invokevirtual 70; // com/sun/satsa/pkiapplet/PKIApplet.select(S)Lcom/sun/satsa/pkiapplet/File;
astore_3;
aload_3;
ifnonnull L4;
L3: sspush 27266;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -