+int gemtag_auth_e2(struct gemtag_handle *gh,unsigned char authmode,
+ int sector,unsigned char *key6) {
+
+ unsigned char buf[32];
+ unsigned int len,ret;
+
+ /* memory layout (sector/block) ? */
+
+ buf[0]=authmode;
+ buf[1]=0;
+ memcpy(buf+2,key6,6);
+ ret=gemtag_transceive(gh,GEMTAG_CMD_PCD_LOAD_KEY_E2,buf,8,buf,&len);
+ if(ret) return -LOAD_E2_FAILED;
+
+ buf[0]=authmode;
+ memcpy(buf+1,gh->serial,4);
+ buf[5]=0;
+ buf[6]=sector;
+ ret=gemtag_transceive(gh,GEMTAG_CMD_PICC_AUTH_E2,buf,7,buf,&len);
+ if(ret) return -AUTH_E2_FAILED;
+
+ return 0;
+
+}
+