📄 pkiapplet.jca
字号:
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L3: aload_0;
sconst_1;
putfield_b 17; // boolean com/sun/satsa/pkiapplet/PKIApplet.isSERestored
aload_0;
sconst_0;
putfield_b 21; // boolean com/sun/satsa/pkiapplet/PKIApplet.isKeyFileSet
aload_0;
sconst_m1;
putfield_s 22; // short com/sun/satsa/pkiapplet/PKIApplet.keyNum
return;
L4: getfield_b_this 17; // boolean com/sun/satsa/pkiapplet/PKIApplet.isSERestored
ifeq L6;
L5: aload_2;
sconst_2;
invokestatic 68; // javacard/framework/Util.getShort([BS)S
sspush 16822;
if_scmpeq L7;
L6: sspush 26112;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L7: getfield_a_this 16; // reference com/sun/satsa/pkiapplet/PKIApplet.current
astore_3;
aload_1;
invokevirtual 78; // javacard/framework/APDU.setIncomingAndReceive()S
sstore 4;
sconst_5;
sstore 5;
sload 4;
sload 5;
sadd;
sstore 4;
L8: goto_w L25;
L9: aload_2;
sload 5;
sinc 5 1;
baload;
sstore 6;
aload_2;
sload 5;
sinc 5 1;
baload;
sstore 7;
sload 7;
ifle L11;
L10: sload 7;
bspush 32;
if_scmple L12;
L11: sspush 26112;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L12: sload 6;
bspush -124;
if_scmpne L21;
L13: sload 7;
sconst_1;
if_scmpeq L15;
L14: sspush 26112;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L15: sconst_0;
sstore 8;
goto L19;
L16: aload_2;
sload 5;
baload;
getfield_a_this 19; // reference com/sun/satsa/pkiapplet/PKIApplet.keys
sload 8;
aaload;
getfield_s 8; // short com/sun/satsa/pkiapplet/PKIApplet$PrivateKey.id
if_scmpne L18;
L17: aload_0;
sload 8;
putfield_s 22; // short com/sun/satsa/pkiapplet/PKIApplet.keyNum
goto L20;
L18: sinc 8 1;
L19: sload 8;
s2i;
getfield_a_this 19; // reference com/sun/satsa/pkiapplet/PKIApplet.keys
arraylength;
s2i;
getstatic_s 43; // short com/sun/satsa/pkiapplet/Data.freeKeySlots
s2i;
isub;
icmp;
iflt L16;
L20: goto L24;
L21: sload 6;
bspush -127;
if_scmpne L23;
L22: aload_0;
aload_2;
sload 5;
sload 7;
invokevirtual 85; // com/sun/satsa/pkiapplet/PKIApplet.getFile([BSS)Lcom/sun/satsa/pkiapplet/File;
astore_3;
goto L24;
L23: sspush 27264;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L24: sload 5;
sload 7;
sadd;
sstore 5;
L25: sload 5;
sload 4;
if_scmplt_w L9;
L26: goto L28;
L27: astore 6;
aload_0;
sconst_m1;
putfield_s 22; // short com/sun/satsa/pkiapplet/PKIApplet.keyNum
L28: getfield_s_this 22; // short com/sun/satsa/pkiapplet/PKIApplet.keyNum
sconst_m1;
if_scmpeq L31;
L29: aload_3;
ifnull L31;
L30: aload_3;
getfield_s 2; // short com/sun/satsa/pkiapplet/File.type
sconst_4;
if_scmpeq L32;
L31: sspush 26112;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L32: aload_3;
checkcast 0 55; // T_CLASSORINTERFACE com/sun/satsa/pkiapplet/EFile
astore 6;
aload_0;
aload 6;
getfield_a 5; // reference com/sun/satsa/pkiapplet/EFile.data
aload 6;
getfield_s 3; // short com/sun/satsa/pkiapplet/EFile.offset
baload;
getfield_a_this 19; // reference com/sun/satsa/pkiapplet/PKIApplet.keys
getfield_s_this 22; // short com/sun/satsa/pkiapplet/PKIApplet.keyNum
aaload;
getfield_s 8; // short com/sun/satsa/pkiapplet/PKIApplet$PrivateKey.id
if_scmpne L34;
L33: sconst_1;
goto L35;
L34: sconst_0;
L35: putfield_b 21; // boolean com/sun/satsa/pkiapplet/PKIApplet.isKeyFileSet
getfield_b_this 21; // boolean com/sun/satsa/pkiapplet/PKIApplet.isKeyFileSet
ifne L37;
L36: sspush 26112;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L37: return;
.exceptionTable {
// start_block end_block handler_block catch_type_index
L8 L26 L27 82;
}
}
.method newKey(Ljavacard/framework/APDU;)V 136 {
.stack 7;
.locals 11;
.descriptor Ljavacard/framework/APDU; 1.10;
L0: aload_1;
invokevirtual 78; // javacard/framework/APDU.setIncomingAndReceive()S
pop;
aload_1;
invokevirtual 60; // javacard/framework/APDU.getBuffer()[B
astore_2;
aload_2;
sconst_5;
baload;
sconst_1;
if_scmpne L2;
L1: sconst_1;
goto L3;
L2: sconst_0;
L3: sstore_3;
getstatic_s 43; // short com/sun/satsa/pkiapplet/Data.freeKeySlots
ifeq L6;
L4: sload_3;
ifeq L7;
L5: getstatic_s 40; // short com/sun/satsa/pkiapplet/Data.freePINSlots
ifne L7;
L6: sspush -28671;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L7: aload_2;
bspush 6;
invokestatic 68; // javacard/framework/Util.getShort([BS)S
sstore 4;
sload 4;
s2i;
aload_2;
arraylength;
s2i;
iconst_1;
isub;
bipush 8;
imul;
icmp;
ifle L9;
L8: sspush -28671;
invokestatic 50; // javacard/framework/ISOException.throwIt(S)V
L9: aload_2;
sconst_2;
baload;
sconst_1;
if_scmpne L11;
L10: aload_2;
sconst_0;
sspush 4660;
invokestatic 72; // javacard/framework/Util.setShort([BSS)S
pop;
aload_2;
sconst_2;
sspush 17185;
invokestatic 72; // javacard/framework/Util.setShort([BSS)S
pop;
aload_1;
sconst_0;
sconst_4;
invokevirtual 73; // javacard/framework/APDU.setOutgoingAndSend(SS)V
return;
L11: sconst_0;
sstore 5;
sload_3;
ifeq L13;
L12: getfield_a_this 9; // reference com/sun/satsa/pkiapplet/PKIApplet.PINs
arraylength;
getstatic_s 40; // short com/sun/satsa/pkiapplet/Data.freePINSlots
ssub;
sstore 5;
new 42; // javacard/framework/OwnerPIN
dup;
sconst_3;
bspush 8;
invokespecial 52; // javacard/framework/OwnerPIN.<init>(BB)V
astore 6;
aload 6;
aload_2;
bspush 8;
bspush 8;
invokevirtual 53; // javacard/framework/OwnerPIN.update([BSB)V
aload 6;
aload_2;
bspush 8;
bspush 8;
invokevirtual 81; // javacard/framework/OwnerPIN.check([BSB)Z
pop;
getfield_a_this 9; // reference com/sun/satsa/pkiapplet/PKIApplet.PINs
sload 5;
aload 6;
aastore;
getfield_a_this 18; // reference com/sun/satsa/pkiapplet/PKIApplet.PIN_REFs
sload 5;
getstatic_b 87; // byte com/sun/satsa/pkiapplet/Data.newPINRef
bastore;
aload_2;
bspush 16;
getstatic_a 46; // reference com/sun/satsa/pkiapplet/Data.Files
sspush 1169;
getstatic_s 88; // short com/sun/satsa/pkiapplet/Data.newPINOffset
sadd;
bspush 6;
sadd;
bspush 32;
invokestatic 89; // javacard/framework/Util.arrayCopy([BS[BSS)S
pop;
L13: invokestatic 51; // javacard/framework/JCSystem.requestObjectDeletion()V
new 90; // javacard/security/KeyPair
dup;
sconst_1;
sload 4;
invokespecial 91; // javacard/security/KeyPair.<init>(BS)V
astore 6;
aload 6;
invokevirtual 92; // javacard/security/KeyPair.genKeyPair()V
new 44; // com/sun/satsa/pkiapplet/PKIApplet$PrivateKey
dup;
aload_0;
getstatic_b 93; // byte com/sun/satsa/pkiapplet/Data.newKeyID
getfield_a_this 9; // reference com/sun/satsa/pkiapplet/PKIApplet.PINs
sload 5;
aaload;
sload_3;
aload 6;
invokevirtual 94; // javacard/security/KeyPair.getPrivate()Ljavacard/security/PrivateKey;
checkcast 0 37; // T_CLASSORINTERFACE javacard/security/RSAPrivateKey
invokespecial 95; // com/sun/satsa/pkiapplet/PKIApplet$PrivateKey.<init>(Lcom/sun/satsa/pkiapplet/PKIApplet;SLjavacard/framework/OwnerPIN;ZLjavacard/security/RSAPrivateKey;)V
astore 7;
aload 6;
invokevirtual 96; // javacard/security/KeyPair.getPublic()Ljavacard/security/PublicKey;
checkcast 0 97; // T_CLASSORINTERFACE javacard/security/RSAPublicKey
astore 8;
getfield_a_this 15; // reference com/sun/satsa/pkiapplet/PKIApplet.base
getstatic_s 98; // short com/sun/satsa/pkiapplet/Data.newFileID
invokevirtual 74; // com/sun/satsa/pkiapplet/DFile.getFile(S)Lcom/sun/satsa/pkiapplet/File;
checkcast 0 55; // T_CLASSORINTERFACE com/sun/satsa/pkiapplet/EFile
astore 9;
aload 9;
aload 8;
aload_2;
invokestatic 99; // com/sun/satsa/pkiapplet/PKIApplet.encodePublicKey(Ljavacard/security/RSAPublicKey;[B)[B
putfield_a 5; // reference com/sun/satsa/pkiapplet/EFile.data
aload 9;
sconst_0;
putfield_s 3; // short com/sun/satsa/pkiapplet/EFile.offset
aload 9;
aload 9;
getfield_a 5; // reference com/sun/satsa/pkiapplet/EFile.data
arraylength;
putfield_s 4; // short com/sun/satsa/pkiapplet/EFile.length
aload_0;
aload 8;
aload_2;
invokevirtual 100; // com/sun/satsa/pkiapplet/PKIApplet.getKeyHash(Ljavacard/security/RSAPublicKey;[B)[B
astore 10;
getstatic_a 46; // reference com/sun/satsa/pkiapplet/Data.Files
astore 11;
sspush 2845;
getstatic_s 101; // short com/sun/satsa/pkiapplet/Data.newPubKeyOffset
sadd;
sstore 12;
aload 10;
sconst_0;
aload 11;
sload 12;
bspush 8;
sadd;
bspush 20;
invokestatic 89; // javacard/framework/Util.arrayCopy([BS[BSS)S
pop;
aload 11;
sload 12;
bspush 47;
sadd;
sload 4;
invokestatic 72; // javacard/framework/Util.setShort([BSS)S
pop;
sspush 2090;
getstatic_s 102; // short com/sun/satsa/pkiapplet/Data.newPrivKeyOffset
sadd;
sstore 12;
aload 11;
sload 12;
bspush 44;
sadd;
sload_3;
ifeq L15;
L14: getstatic_b 103; // byte com/sun/satsa/pkiapplet/Data.newPINID
goto L16;
L15: sconst_2;
L16: bast
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -