#
# PKCS15 profile for the isoApplet JavaCard Applet.
# 	- init driver: pkcs15-isoApplet.c
# 	- card driver: card-isoApplet.c
#

cardinfo {
	label          ="JavaCard isoApplet";
	manufacturer   = "unknown";
	min-pin-length = 4;
	max-pin-length = 16;
	pin-pad-char   = 0x00;
}

pkcs15 {
	# Method to calculate ID of the crypto objects
	#	mozilla: SHA1(modulus) for RSA
	#	rfc2459: SHA1(SequenceASN1 of public key components as ASN1 integers)
	#	native: 'E' + number_of_present_objects_of_the_same_type
	# default value: 'native'
	pkcs15-id-style = native;
}

option default {
	macros {
		unusedspace-size = 128;
		odf-size   = 256;
		aodf-size  = 256;
		cdf-size   = 512;
		prkdf-size = 512;
		pukdf-size = 512;
		dodf-size  = 256;
	}
}

PIN so-pin {
	attempts   = 3;
	max-length = 16;
	min-length = 4; 
	reference  = 1;
	flags = case-sensitive, needs-padding, initialized;
}

PIN so-puk {
	attempts   = 3;
	max-length = 16;
	min-length = 16;
	reference  = 2;
	flags = unblockingPin, unblock-disabled, case-sensitive, change-disabled, initialized;
}

filesystem {
	DF MF {
		path = 3F00;
		type = DF;

		# This is the DIR file
		EF DIR {
			type    = EF;
			file-id = 2F00;
			size    = 128;
			acl     = *=NONE;
		}

		# Here comes the application DF
		DF PKCS15-AppDF {
			type    = DF;
			file-id = 5015;
			aid     = A0:00:00:00:63:50:4B:43:53:2D:31:35;
			acl     = *=NONE, DELETE=$PIN;
			size    = 5000;
		
			EF PKCS15-ODF {
				file-id = 5031;
				size    = $odf-size;
				ACL     = *=NONE;
			}

			EF PKCS15-TokenInfo {
				file-id = 5032;
				ACL     = *=NONE;
			}

			EF PKCS15-UnusedSpace {
				file-id = 5033;
				size    = $unusedspace-size;
				ACL     = *=NONE;
			}

			EF PKCS15-AODF {
				file-id = 4401;
				size    = $aodf-size;
				ACL     = *=$PIN, READ=NONE;
			}

			EF PKCS15-PrKDF {
				file-id = 4402;
				size    = $prkdf-size;
				acl     = *=$PIN, READ=NONE;
			}

			EF PKCS15-PuKDF {
				file-id = 4403;
				size    = $pukdf-size;
				acl     = *=$PIN, READ=NONE;
			}

			EF PKCS15-CDF {
				file-id = 4404;
				size    = $cdf-size;
				acl     = *=$PIN, READ=NONE;
			}

			EF PKCS15-DODF {
				file-id = 4405;
				size    = $dodf-size;
				ACL     = *=$PIN, READ=NONE;
			}

			template key-domain {

				BSO private-key {
					ACL = *=$PIN, READ=NEVER;
				}

				# EF extractable-key {
				#   file-id = 3100;
				#   acl = *=NEVER, READ=$PIN, UPDATE=$PIN,
				#         ERASE=$PIN;
				# }

				EF data {
					file-id = 3200;
					acl     = *=NEVER, UPDATE=$PIN, READ=NONE,
					          DELETE-SELF=$PIN, ERASE=$PIN;
				}

				EF privdata {
					file-id = 3500;
					acl     = *=NEVER, UPDATE=$PIN, READ=$PIN,
					          DELETE-SELF=$PIN, ERASE=$PIN;
				}

				EF public-key {
					file-id = 3300;
					acl     = *=NEVER, UPDATE=$PIN, READ=NONE,
					          DELETE-SELF=$PIN, ERASE=$PIN;
				}

				EF certificate {
					file-id = 3400;
					acl     = *=NEVER, UPDATE=$PIN, READ=NONE,
					          DELETE-SELF=$PIN, ERASE=$PIN;
				}
			}
		}
	}
}
