| Preface | p. 1 |
| About This Book | p. 1 |
| The Audience of This Book | p. 2 |
| No Need to Read the Whole Book | p. 2 |
| About the Authors | p. 8 |
| Acknowledgements | p. 9 |
| Smart Card Introduction and Overview | p. 11 |
| What Makes the Smart Card "Smart"? | p. 13 |
| What is a Smart Card? | p. 13 |
| The Benefits of Smart Cards | p. 15 |
| Smart Card Hardware | p. 16 |
| Memory Cards and Microprocessor Cards | p. 16 |
| Contactless Cards | p. 17 |
| The Computer on the Smart Card | p. 17 |
| Mechanical Contacts | p. 19 |
| The Size of a Smart Card | p. 20 |
| Hardware Security | p. 21 |
| The Manufacturing Process | p. 21 |
| Introduction to Smart Card Software | p. 23 |
| Smart Card Application Development Process | p. 23 |
| Communication with the Card | p. 24 |
| APDUs | p. 24 |
| T=0 and T=1 | p. 26 |
| TLV Structures | p. 27 |
| Smart Card Operating Systems | p. 28 |
| File System Smart Cards | p. 28 |
| Java Card | p. 31 |
| Multos | p. 32 |
| Smart Card for Windows | p. 33 |
| Smart Cards and e-business | p. 35 |
| Electronic Purses | p. 37 |
| GeldKarte | p. 39 |
| Mondex | p. 40 |
| Proton | p. 40 |
| Visa Cash | p. 41 |
| Common Electronic Purse Specification | p. 42 |
| Authentication and Secure Access | p. 43 |
| Workstation Access | p. 44 |
| Network- and Server-Login | p. 44 |
| Secure Communication | p. 45 |
| Digital Signatures | p. 46 |
| Other Uses of Smart Cards in e-business | p. 47 |
| Electronic Ticketing | p. 47 |
| Loyalty Programs | p. 48 |
| Growth Expected | p. 48 |
| Cryptography | p. 49 |
| Cryptographic Algorithms | p. 49 |
| Symmetric Cryptographic Algorithms | p. 50 |
| Public-Key Algorithms | p. 53 |
| Hybrid Algorithms | p. 56 |
| Smart Card Cryptographic Protocols | p. 57 |
| External Authentication | p. 57 |
| Internal Authentication | p. 58 |
| Secure Messaging | p. 59 |
| TLS and Smart Cards | p. 64 |
| Smart Card Readers and Terminals | p. 67 |
| Smart Card Readers | p. 67 |
| Smart Card Terminals | p. 69 |
| Biometrie Identification | p. 70 |
| Smart Card Standards and Industry Initiatives | p. 71 |
| ISO Standards | p. 71 |
| EMV ICC Specifications for Payment Systems | p. 73 |
| PC/SC | p. 75 |
| Visa Open Platform | p. 78 |
| OpenCard Framework | p. 79 |
| Introduction to OpenCard | p. 81 |
| The History of the OpenCard Framework | p. 81 |
| The OpenCard Consortium | p. 82 |
| The Objectives of the OpenCard Framework | p. 83 |
| The Advantages of Using OCF | p. 84 |
| The OCF Architecture | p. 85 |
| A Note on Notation | p. 85 |
| Architecture Overview | p. 87 |
| The Utility Classes | p. 93 |
| The OpenCard Core Definitions | p. 93 |
| The Core Utility Classes | p. 94 |
| Hex String Processing | p. 94 |
| The Configuration Provider | p. 95 |
| The Tracer | p. 96 |
| System Access | p. 99 |
| The Optional Utility Classes | p. 101 |
| The Loader Classes | p. 101 |
| The PassThruCardService | p. 103 |
| The Tag and TLV Classes | p. 105 |
| The Terminal Layer | p. 107 |
| Terminal Layer Core Components | p. 108 |
| Terminal Registry and Event Mechanism | p. 109 |
| Device Abstractions | p. 110 |
| The Terminal Layer Exceptions | p. 113 |
| PIN / Password Support | p. 114 |
| Terminal Layer Optional Components | p. 117 |
| The opencard.opt.terminal Package | p. 118 |
| The opencard.opt.terminal.protocol Package | p. 118 |
| Tracing in the Terminal Layer | p. 121 |
| Communicating with the Card Reader | p. 121 |
| The Java Communications API | p. 122 |
| The Implementation | p. 123 |
| Using the T=1 Protocol Support | p. 124 |
| Implementing the CardTerminal | p. 126 |
| Implementing the CardTerminalFactory | p. 134 |
| The Service Layer | p. 137 |
| The CardService Layer Core Components | p. 139 |
| The Application Access Classes | p. 140 |
| The Card Access Classes | p. 144 |
| The CardService Support Classes | p. 148 |
| The CHV Support Classes | p. 153 |
| The CardService Exceptions | p. 155 |
| The CardService Optional Components | p. 156 |
| Standard CardService Interfaces | p. 158 |
| The ISO File System CardService | p. 159 |
| The Signature CardService | p. 162 |
| The Application Management CardService | p. 163 |
| The OCF Security Concept | p. 165 |
| OpenCard Security Overview | p. 166 |
| OpenCard Security Classes | p. 168 |
| The Smart Card Key Classes | p. 170 |
| CardService Interface Classes | p. 172 |
| Credentials | p. 175 |
| Running OCF in Browsers | p. 176 |
| Browser Security Models | p. 176 |
| Invocation of Privileged Methods | p. 177 |
| Security Implications | p. 179 |
| Smart Card Application Development Using OCF | p. 181 |
| Using OCF | p. 183 |
| Preparing Your System | p. 183 |
| Configuring OCF on Your System | p. 184 |
| Setting the OCF Configuration Properties | p. 184 |
| The First Simple Application | p. 185 |
| Starting OCF and Shutting it Down Again | p. 186 |
| Obtaining a SmartCard Object via waitForCard(...) | p. 187 |
| Obtaining a CardService Object | p. 188 |
| Using this Sample Program with Other Cards | p. 190 |
| Smart Card Access of a Digital Signature Application | p. 190 |
| Attributes | p. 191 |
| Constructor | p. 192 |
| cardlnserted() | p. 192 |
| allocateServices(SmartCard, Slot) | p. 194 |
| cardRemoved() | p. 195 |
| signatureCardPresent() | p. 196 |
| getCardHolderData() | p. 196 |
| propagateAnEarlierException() | p. 198 |
| setCardHolderData(String) | p. 198 |
| sign(int, byte[]) | p. 199 |
| close() | p. 200 |
| Class SignatureCardException | p. 200 |
| The Complete Sample Source Code | p. 201 |
| OCF and e-business | p. 203 |
| Internet Stock Brokerage | p. 203 |
| Security Considerations | p. 203 |
| Secure Stock Brokerage Architecture | p. 204 |
| Protocols | p. 205 |
| Distributed Payment Systems | p. 206 |
| Card-to-Card Payment Schemes | p. 207 |
| Card-to-Card Payments via Internet | p. 209 |
| Architecture Overview | p. 214 |
| Implementation | p. 216 |
| Java Card and OCF | p. 221 |
| Developing a Card Applet | p. 221 |
| Inside the Java Card | p. 222 |
| The Java Card Framework | p. 222 |
| Lifetimes of On-card Programs and Objects | p. 223 |
| A Sample Java Card Applet | p. 224 |
| Using OCF to Work with Card Applets | p. 230 |
| Card Applet Proxies | p. 231 |
| Controlling Our Sample Card Applet through OCF | p. 233 |
| Card and Application Management | p. 245 |
| Introduction | p. 245 |
| Card Management Systems | p. 246 |
| Application Management Systems | p. 247 |
| Key Management Systems | p. 247 |
| Using OCF for Card and Application Management | p. 248 |
| Example | p. 248 |
| Security | p. 249 |
| Architecture and Technology | p. 251 |
| Post-Issuance Application Download | p. 252 |
| Post-Issuance Application Personalization | p. 254 |
| OCF for Embedded Devices | p. 257 |
| Device Profiles | p. 257 |
| OCF for Embedded Devices | p. 259 |
| Differences between OCF and OCF for Embedded Devices | p. 260 |
| Footprint Statistics | p. 262 |
| Appendixes | p. 263 |
| The Card | p. 265 |
| The IBM Multi Function Card | p. 265 |
| The File Structure on the Card | p. 266 |
| Accessing the Card | p. 272 |
| Useful Web Sites | p. 273 |
| Bibliography | p. 277 |
| Glossary | p. 281 |
| Index | p. 285 |
| Table of Contents provided by Publisher. All Rights Reserved. |