< prev index next >

src/share/native/sun/security/smartcardio/pcsc.c

Print this page
@  rev 13663 : 8218780: Update MUSCLE PCSC-Lite header files
|  Summary: update the PCSC-lite header files to 1.8.24 release
~  Reviewed-by: coffeys


 162                 free(tab);
 163                 return NULL;
 164             }
 165             (*env)->SetObjectArrayElement(env, result, cnt, js);
 166             if ((*env)->ExceptionCheck(env)) {
 167                 free(tab);
 168                 return NULL;
 169             }
 170             (*env)->DeleteLocalRef(env, js);
 171         }
 172     }
 173     free(tab);
 174     return result;
 175 }
 176 
 177 JNIEXPORT jobjectArray JNICALL Java_sun_security_smartcardio_PCSC_SCardListReaders
 178     (JNIEnv *env, jclass thisClass, jlong jContext)
 179 {
 180     SCARDCONTEXT context = (SCARDCONTEXT)jContext;
 181     LONG rv;
 182     LPTSTR mszReaders = NULL;
 183     DWORD size = 0;
 184     jobjectArray result;
 185 
 186     dprintf1("-context: %x\n", context);
 187     rv = CALL_SCardListReaders(context, NULL, NULL, &size);
 188     if (handleRV(env, rv)) {
 189         return NULL;
 190     }
 191     dprintf1("-size: %d\n", size);
 192 
 193     if (size) {
 194         mszReaders = malloc(size);
 195         if (mszReaders == NULL) {
 196             throwOutOfMemoryError(env, NULL);
 197             return NULL;
 198         }
 199 
 200         rv = CALL_SCardListReaders(context, NULL, mszReaders, &size);
 201         if (handleRV(env, rv)) {
 202             free(mszReaders);
 203             return NULL;
 204         }
 205         dprintf1("-String: %s\n", mszReaders);
 206     }
 207 
 208     result = pcsc_multi2jstring(env, mszReaders);
 209     free(mszReaders);
 210     return result;
 211 }
 212 
 213 JNIEXPORT jlong JNICALL Java_sun_security_smartcardio_PCSC_SCardConnect
 214     (JNIEnv *env, jclass thisClass, jlong jContext, jstring jReaderName,
 215     jint jShareMode, jint jPreferredProtocols)
 216 {
 217     SCARDCONTEXT context = (SCARDCONTEXT)jContext;
 218     LONG rv;
 219     LPCTSTR readerName;
 220     SCARDHANDLE card = 0;
 221     DWORD proto = 0;
 222 
 223     readerName = (*env)->GetStringUTFChars(env, jReaderName, NULL);
 224     if (readerName == NULL) {
 225         return 0;
 226     }
 227     rv = CALL_SCardConnect(context, readerName, jShareMode, jPreferredProtocols, &card, &proto);
 228     (*env)->ReleaseStringUTFChars(env, jReaderName, readerName);
 229     dprintf1("-cardhandle: %x\n", card);
 230     dprintf1("-protocol: %d\n", proto);
 231     if (handleRV(env, rv)) {
 232         return 0;
 233     }
 234 
 235     return (jlong)card;
 236 }
 237 
 238 JNIEXPORT jbyteArray JNICALL Java_sun_security_smartcardio_PCSC_SCardTransmit
 239     (JNIEnv *env, jclass thisClass, jlong jCard, jint protocol,




 162                 free(tab);
 163                 return NULL;
 164             }
 165             (*env)->SetObjectArrayElement(env, result, cnt, js);
 166             if ((*env)->ExceptionCheck(env)) {
 167                 free(tab);
 168                 return NULL;
 169             }
 170             (*env)->DeleteLocalRef(env, js);
 171         }
 172     }
 173     free(tab);
 174     return result;
 175 }
 176 
 177 JNIEXPORT jobjectArray JNICALL Java_sun_security_smartcardio_PCSC_SCardListReaders
 178     (JNIEnv *env, jclass thisClass, jlong jContext)
 179 {
 180     SCARDCONTEXT context = (SCARDCONTEXT)jContext;
 181     LONG rv;
 182     LPSTR mszReaders = NULL;
 183     DWORD size = 0;
 184     jobjectArray result;
 185 
 186     dprintf1("-context: %x\n", context);
 187     rv = CALL_SCardListReaders(context, NULL, NULL, &size);
 188     if (handleRV(env, rv)) {
 189         return NULL;
 190     }
 191     dprintf1("-size: %d\n", size);
 192 
 193     if (size) {
 194         mszReaders = malloc(size);
 195         if (mszReaders == NULL) {
 196             throwOutOfMemoryError(env, NULL);
 197             return NULL;
 198         }
 199 
 200         rv = CALL_SCardListReaders(context, NULL, mszReaders, &size);
 201         if (handleRV(env, rv)) {
 202             free(mszReaders);
 203             return NULL;
 204         }
 205         dprintf1("-String: %s\n", mszReaders);
 206     }
 207 
 208     result = pcsc_multi2jstring(env, mszReaders);
 209     free(mszReaders);
 210     return result;
 211 }
 212 
 213 JNIEXPORT jlong JNICALL Java_sun_security_smartcardio_PCSC_SCardConnect
 214     (JNIEnv *env, jclass thisClass, jlong jContext, jstring jReaderName,
 215     jint jShareMode, jint jPreferredProtocols)
 216 {
 217     SCARDCONTEXT context = (SCARDCONTEXT)jContext;
 218     LONG rv;
 219     LPCSTR readerName;
 220     SCARDHANDLE card = 0;
 221     DWORD proto = 0;
 222 
 223     readerName = (*env)->GetStringUTFChars(env, jReaderName, NULL);
 224     if (readerName == NULL) {
 225         return 0;
 226     }
 227     rv = CALL_SCardConnect(context, readerName, jShareMode, jPreferredProtocols, &card, &proto);
 228     (*env)->ReleaseStringUTFChars(env, jReaderName, readerName);
 229     dprintf1("-cardhandle: %x\n", card);
 230     dprintf1("-protocol: %d\n", proto);
 231     if (handleRV(env, rv)) {
 232         return 0;
 233     }
 234 
 235     return (jlong)card;
 236 }
 237 
 238 JNIEXPORT jbyteArray JNICALL Java_sun_security_smartcardio_PCSC_SCardTransmit
 239     (JNIEnv *env, jclass thisClass, jlong jCard, jint protocol,


< prev index next >