Product Life

Good day,
This is a general question and I wasn't sure where to post it.
I have the following products :
PXI-8431,8 CHANNEL,RS-485 SERIAL
PXI-8421,SERIAL,RS-485,8 PORT
MODULE ASSEMBLY,NI PXI-2569
SCB-68 Noise Rejecting, Shielded I/O Connector Block
NI PXI-8186 P4 2.2 GHz Controller with Windows XP
NI PXI-6259 (32 Analog Inputs, 48 Digital I/O, 4 Analog Outputs)
SCC-68 I/O Connector with 4 SCC Module Slots
NI PXI-2569 100 Channel Form A Relay Module
CHASSIS ASSEMBLY, PXI-1042
My question is for how many years NI is planning to make these products.
Regards

Duplicate Post
Please continue this disscussion at this link.
Regards
Krista S.
Applications Engineering
National Instruments

Similar Messages

  • Product life cycle management in sap

    Hi,
    is there any prescribed material for product life cycle management (PLM) IN SAP? can anyone refer  any institute name and where it is for learning SAP-PLM?

    Dear heeru
    Go through the links
    [Life cycle profile|http://help.sap.com/saphelp_46c/helpdata/en/08/2b2c8c50c711d3b478006094b9d648/frameset.htm]
    [Configuration Definition|http://help.sap.com/saphelp_46c/helpdata/en/74/7b601ac80811d3b4bc006094b9d648/frameset.htm]
    Thanks
    G. Lakshmipathi

  • News products life cycle

    Hi,
    Can anyone tell me if there is a way or a tool on the Cisco website, to know the life cycle of a product? (end of maintenance, and of support, end of sale, end of life...)
    This concerns news products, not formers for which information is of course on the Cisco website
    best regards

    Neha,
    Yes, you can use the same Forecast profile for Lifecycle Planning which you use for Statistical Forecasting.
    In the Master Forecast Profile, Make sure you Activate the " Lifecycle Planning Active" indicator.
    Other required procedures being:
    Creating Like Profile
    Assigning the Like profile to Products/Characteristics in the Assignments section/table.
    Let me know if you have any questions,
    Hari Vomkarey

  • OnPlus Product Life Cycle Info Unavailable This Evening

    This evening (10/18)  from 22:00 CDT until tomorrow(10/19)  at 02:00 CDT new life cycle data will not be available .  During this planned downtime new scans run from the OnPlus Scanner will not receive life cycle information, warranty status, contract information, PSIRTs, EOL notices etc, until after service is restored later in the evening. We appreciate your patience and apologize for any inconvenience that this may cause.
    Randall Jones

    Apparently this is reported as a bug.

  • Interfacing of matrix one product life management solutions  with R/3

    Hi Frnds ..
    We have to make interface with Matrix one PLM solutions with R/3 to transfer Material Master and BOM .
    Here we don't have middleware (XI etc). Is there any way to make interface by using BAPI .. (Url  http://www.matrixone.com/matrixonesolutions/index.html)
    Please urjent ...
    Advance Thanks
    Jagadeshwar.G

    Q.) Can we interface R/3 with E Matrix One PLM system by using BAPI. E Matrix one PLM system is developed on java ?
    A.) YES..MatrixOne website mentions that integration with ERP products like SAP, Orcale is possible.
    Q.) What are the interfacing steps?
    A.) If your comapny has bought the product I'm sure you would have received some documentation on interfacing MatrixOne with SAP.
    ~Kiran

  • Estimating product life

    I have several test stations that primarily have the following types of hardware:
    PCI 16 series E DAQ Boards
    SCXI 1000 & 1001 Chassis
    SCXI 1102 Input modules
    SCXI 1163 HV
    SCXI 1162 HV
    SCXI 1120 Input modules
    SCXI 1125 Input modules
    Some of these products are over seven years old now.
    My question is this. Is there a good method of estimating failure rates for these products? I know this is a loaded question as application of the product will be a large factor in determining the mean failure rate. However, I still must budget for replacement or repair of these items. I appreciate any suggestion you might have on how to estimate this.
    Thanks.
    Randall

    Hello Randall,
    Thank you for posting to the NI discussion forums.  I believe what you are
    looking for is the mean time before failure (MTBF) for the devices you listed.
    National Instruments does not publish this information.  Please create a
    service request at www.ni.com/support for further information.
    Regards,
    Jesse O.
    Applications Engineering
    National Instruments
    Jesse O. | National Instruments R&D

  • Product Life Cycle Management

    Dear All
              Is    PLCM module is suitable for design engineering professionals.
    Regards
    Karthik

    You can try this....
    In the first page when user click the update button you can get that value and set this to request level like given below,
    public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processFormRequest(pageContext, webBean);
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    if(pageContext.getParameter("Update")!=null) {
    //Get the value of required field and set that in parameter
    pageContext.putParameter("LogItem",pageContext.getParameter("longItemID"));
    In other page you can get that value through getParameter method in FormRequest Method
    public void processRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processRequest(pageContext, webBean);
    String longItemDesc = pageContext.getParameter("LogItem");
    OAMessageStyledTextBean bean = (OAMessageStyledTextBean)webBean.findIndexedChildRecursive("BeanName");
    bean.setText(pageContext,longItemDesc);
    - Anuj

  • Configuration product lifecycle in sap

    Hi,
    Could you pls help me to get a configuration document for product life cycle in SAP?
    Thanks,
    Vijesh

    Hi,
    I would recommend you have a look at the (cross-plant) material status and its related Customizing. This should help you with your product life-cycle status management:
    http://help.sap.com/erp2005_ehp_07/helpdata/en/ff/515dd249d811d182b80000e829fbfe/content.htm?frameset=/en/ff/515c2049d811d182b80000e829fbfe/frameset.htm&current_toc=/en/ff/516a6749d811d182b80000e829fbfe/plain.htm&node_id=42
    On top of that, you could leverage SAP PLM Web UI Status and Action Management for managing the status changes:
    http://help.sap.com/erp2005_ehp_07/helpdata/en/f9/8ceb3db76a401bac4c456d718d0f46/frameset.htm
    For additional governance, Engineering Change Management might be applied.
    Regards, Ulf.

  • Vulnerabilities and Life Cycle

    What vulnerability drove the creation of Adobe Shockwave v12.0.3.133? What is the product life cycle/support for versions 12, 11 and 10?

    Hi Tim,
              For Life cycle you need to maintain Manual proportional factor for the particular characteristic combination till the product gets maturity statues (100%).
    Running proportional factor using shipment history takes to old products /Location. What i can suggest you is
    .1.Run proportional factor using shipment history to APODPDANT and copy proportional factor to another key figure where you can call adjustment proportional factor key figure, maintain proportional percentage to life cycle products / location to the new key figure and assign to forecast key figure to generate forecast .

  • Availity Check for Customers and materials with useful life

    Hello All,
    Can anyone help me, about this issue . What i need to do to procedure to check availability for material and customers ?
    I have a problem , all material have a expired date ( i work in a drink company) , and for this all products have a date limit for delivery (period of useful product life) , but this date it can be changed for each customer.
    We have customer with one moth and another customer with differents (period of useful product life), and a priority for each customer.
    Well when i check availability of material i need to have a control of this period of useful product life, in order to assign confirmed quantity for each customer.
    Thanks
    Sebas

    Yes products use batch funcionality and i have a new table for customer / product with useful product life.
    For exemple :
    Product XXX with 365 days for Total Shelf Life .
    Have two customers with differents % of Total Shelf Life, customer AAA 33% and customer BBB 50%.
    Result:
    Customer AAA for product XXX need 120 days for availity Check
    Customer BBB for product XXX need 183 days for availity Check
    Where i could introduce search strategy for each customer ?
    Do you know user exit i need to change for availity check , in order to introduce my new table.
    Thanks a lot, for your help.
    Sebas

  • Re: Satellite L650 PSK1JA: cannot play 2nd Life due to old GPU driver

    Hi,
    i have a windows 7, Toshiba Satellite L650 PSK1JA-0K4017, video card is ATI mobility Radeon HD5650 and Im unable to use second life ( everything in the worlds is a pink colour) and its unusable because i need an updated display driver
    I have tried the AMD website and am unable to install their drivers as they say they are not compatible and i need to obtain my driver from the manufacturer (toshiba)
    Trouble is that Toshiba display driver is very outdated 15/03/2010
    When are they ever going to update this particular driver and if not does anyone know of a workaround for this issue.
    Why is the driver so old.?? If i cant fix this issue i'll be purchasing a new laptop and it definitely wont be a Toshiba again. Useless if they never update their drivers.

    I think you have to understand that the L650 is a 2010 / early 2011 model - support would have been offered through the product life cycle and for some time afterwards. Most vendors will issue updated drivers where it solves a problem NOT just because to component manufacturer has "tweaked" it and made it version 2.1.1.1.1 rather than 2.1.1.1.0 ie "why fix something that isnt broken" which can make new issues
    In saying that i have updated AMD drivers using the AMD reference drivers many times on Toshiba's where the Official Toshiba driver is outdated and have not had an issue, even if there was one you just boot into safe made and reinstall teh original driver - either the one the one the unit shipped with in the TOSAPINS folder or download the last Official update from Toshiba prior to trying the AMD sources driver.
    Or sometimes you can download the latest AMD Catalyst Control software from Toshiba - just choose a newer model ie L50D - this gives you the option of either unpacking the driver to a Temp location where you can manually install OR automatic install - automatic install may check the model and fail so you may need to manually install as per previous post.
    just bear in mind Toshiba has one of the best reliability scores in the industry - choosing another brand due to 3+ year old unit not having Official current drivers is totally your decision, and buying a brand that is more likely to have a major fault within 3 years is a choice you are welcome to make - from my eperience the choice is easy :)

  • Powerbook battery jumps remaining life VERY quickly

    I recently got a powerbook from a friend, and noticed some pretty wierd stuff going on with the battery. first, when I completly charge it, it will stay at about 98% charged for maybe 45 minutes saying there is 70 minutes remaining the entire time, never higher than that. then it will suddenly drop to 4% every time and give me about 7 minutes remaining. then I will charge it and it will go from 4% all the way up to 9% normally before it jumps back to 98%. I was looking through the posts on this forum and did not see anything like this, nor did I know what to search for, so I don't know where to start. any help would be greatly appreciated.
    Thanks

    Apple talks about a properly-maintained Powerbook or iBook battery being designed to retain 80% of its original charge capacity after 300 charge-discharge cycles (see the lower right sidebar on this page). The meaning of "properly maintained" is not explicitly spelled out anywhere that I know of, though one can infer some of it from the other contents of that article. A battery that has ever been exposed to intense heat (e.g., left in a closed car in the summer sun) is likely to be permanently damaged, and I wouldn't expect it to behave as intended thereafter. When buying a used computer (or battery), one has no way of knowing what abuses it may have suffered in the past.
    It's one of the hallmarks of a damaged or defective battery, or even just a well-maintained battery approaching the end of a long and productive life, to become unable to report plausible or accurate information about itself: its current charge level, its charge capacity, or the estimated running time remaining on a charge. All of these readouts, whether displayed in Apple System Profiler, through a third-party utility, or on the menu bar, can become wildly inaccurate, and it's very commonplace for the OS's weak-battery warnings to disappear, so that the Powerbook simply goes to sleep without any advance notice. When these things happen, replace the battery, no matter how many or few charge cycles it reports. If the battery is still new enough to be under a warranty, by all means appeal to the manufacturer, but I suspect the circumstances would have to be unusually clear-cut for such a claim to succeed.

  • InDesign CS5.5 crashes when trying to open or create files on Yosemite

    Hi,
    I've just recently migrated to a new iMac running Yosemite. Photoshop CS5.1, Illustrator 5.1 and Bridge 5.1 are working fine but I'm having major issues with InDesign CS5.5. Every time I try to open an existing file or create a new one the programme freezes and I have to force quit.
    I've trawled the forums and have done everything mentioned including uninstalling/reinstalling, removing temporary cache files and preferences, removing Data Store, deleting the Adobe font list, and removing the SING component.
    I ran Activity Monitor and have uploaded the details to Sample of InDesign - Pastebin.com and the Crash Report to http://pastebin.com/KdEEWadj
    Please help, I'm getting desperate!
    Thanks,
    Dan

    CS5.x is not compatible to Yosemite. It may or may not run, if it does never without problems.
    Adobe applications should never be installed via migration. It is always making problems in the long run. If you have done so, deinstall them immediately, run Adobe's Creative Cloud Cleaner Tool (available on Adobe's Website) and install any application from it original installer.
    I recommend to upgrade to a CC subscription. CS6 might also work, but it is now very old and 2 to 3 versions after CS6 have been released. If you get a new system upgrade it is NOT guaranteed that it will work as CS6 is now at the end if not out of its product life cycle.

  • Why doesnt Adobe just UPDATE Flash Professional? Arent they reinventing the wheel?

    Congratulations on getting to open beta with Flash Catalyst!
    I know its late in the game to mention something like this but why didnt Abobe just update Flash Professional?
    It seems that the arguments for flash Catalyst center around the following:
    1) smooth workflow between Photoshop & Illustrator, especially because of the same layer view
    2) No coding required to create components out of artwork
    3) Can create FXG  and FXPs to be used in Flash Builder
    4) Can create multi screen aplications
    1) 2) and 3) could all be solved by adding a new types of symbols to Flash Professional's 3 currently available symbols(MovieClip, Button, Graphic)
    1) could be solved by adding a new Sprite symbol.
    Flash Professional needs to be updated to keep up with and match the structure of AS3 anyway.
    Sprites were added in AS3 and now wireframe components are being added to the code structure, why not just at that on the design side as well?
    Sprites are essentially MovieClips with out a timeline.
    So if you created a new Sprite symbol and opened it up in the timeline, you would only see one frame with folders and layers.
    A Sprite symbol is essentially organized the in layers and folders and would just like a photoshop file.
    And if you really want it to look like a Photoshop layout, then you just move the timeline view over to the right.
    This would solve problem 1.  Designers could import their artwork into Flash Professional as a Sprite and it would be a seemless experience.
    Obviously I'm not saying that a bitmap is a sprite. But I am saying that layers of bitmaps and could be organized inside of a Sprite. And the designer could turn any of the assets into a Button, MovieClip, Graphic, Sprite, and hopefully other Classes and WireframeComponents available in Flash.
    2)&3) could be solved by adding a new Symbols for the new Wireframe Components. The Button symbol already has a template with 4 states. Why not update Flash Professional to visually represent more Classes and Component Classes, instead of just the MovieClip Class and the Button Class. Even better, maybe there could be a way to make a template for creating our own wireframe components. Just assign a base class for the wireframe class and a base template, and the introspection view will display accordingly.
    States of the component would be listed out at the top instead of frames,  just like the Button Symbol used to be.  Different layers could be designated for specific graphical parts of the component. The designer would be free to add their own layers if necessary.
    In previous versions of Flash, everything was a movieclip and everthing had a timeline. Thats not the case anymore. The timeline is for intropecting MovieClips, but this view could be different when intropsecting different types of symbols such as Sprites, Buttons, Wireframe Components, and even Custom Wireframe Components(extensible).
    These new Symbols and also Sprites could export to FXG very easily.
    The multi screen applications in 4) look pretty similar to the Slide Presentation Template. Why not just make a new MultiScreen App Template and youre done. these MultiScreenApp Templates could exporte Screens to FXG or export the whole Template to a FXP.
    I applaud the work done on the new wireframe components and FXG. Great Job!
    But, just cant understand why you cant update Flash Professional with new types of Symbols(Sprites, new Buttons and wireframe Component Classes) and a new MultiScreen App Template.
    Flash Professional needs to keep up with AS3 and also needs to export FXG and FXP.
    Why doesnt Adobe focus on on this rather than create a new Tool? These features need to be added to Flash Professional anyway.
    Isnt there more of a disadvantage to having 2  tools for designers that do the same thing?
    I'm sure this issue has been debated before. Can anyone point to me links that have the arguments for creating a separate tool instead of updating?
    Has anyone ever suggested that Flash Professional should keep up with AS3?
    Has anyone ever suggested making Sprites a new symbol in Flash Professional so that it could be more seamless with Photoshop?
    Has anyone ever suggested make Wireframe components in Flash Professional like the Button Symbol in Flash Professional?
    Has anyone ever suggested updating Flash Professional so that it would export FXG and FXP?
    What is your opinion on this?
    -thomasglyn

    @Ross
    Thanks for your explanation. I appreciate your feedback.
    I'm glad we agree that ideally there should be 2 main tools, one for designers(Flash Professional) and one for programming(Flash Builder).
    You had mentioned "But, that assumes this is possible.  As it currently stands it is not" and the reason being "Catalyst, and Builder both use a completely different framework from Professional. The component architecture is drastically different, not to mention the entire backend of the software.".
    You could also argue that, the reasons to make a separate flex component creation tool like Flash Catalyst assumes that updating Flash Professional CS4 is NOT possible. But is the statement about the framework being entirely different really true?
    Well, that depends on what you mean by the term "framework".
    Framework can refer to 3 things in this case.
    1) the component framework
    2) the code framework(AS3)
    3) the flex framework (mxml, fxg)
    If you are refering to #1 then you're right, because Adobe hasnt updated the flash component framework in Flash Professional from Flex3 Halo components to Flex4 Spark components.
    Flash components have gone through many iterations, and the switch from AS2 to AS3 was probably more profound than the new wireless component structure(Spark). And now that we have AS3, isnt the only difficulty creating a intuitive UI in Flash Professional, and adding export features?
    If you are refering to #2 then I think you're incorrect, because Flash Professional has been updated to AS3 and Flex4 Spark components use AS3. I would totally agree with you, if CS4 did not go through all of the trouble updating to AS3.
    If you are refering to #3 then you're right, because Flash Professional doesnt export mxml, fxg, or fxp, but with a little creativity, it would probably be possible to allow such an export. Adding FXG/FXP export features could be solved by creating a new type of project file.  Adobe did this for AS2, AS3, flash lite, etc. Why cant they just make a new AS3/FXG file that only allows you to build fxg/fxp exportable assets.
    Why cant Adobe make a Sprite class the default document class for AS3/FXG projects and when some adds a movie clip asset, export movie clips as swfs or swcs?
    So to be honest, after opening up Flash Catalyst again and looking at it again, I almost get the feeling that its just a Flash Component creation tool with a Photoshop UI, for the new AS3/Flex 4 components(Spark components) that Adobe just refuses to add to CS4.  CS4 uses AS3 and Spark components use AS3.  CS4 needs to be a visual design tool for all the classes in AS3(as much as possible).
    Perhaps Adobe originally meant to name this product...
    ADOBE FLASH COMPONENTS
    Or maybe Adobe Flex Components(but thats no longer true, because Flex 4 will be Flash Builder).
    In regard to "reinventing the wheel". Flash components have been reinvented several times, and I totally agree with you that this is important to "reinvent" components to keep up with new techiques as2,as3,fxg.  You are right, this is a positive thing. However in this case, I am using "reinvent in a negative sense.
    So maybe I shouldnt say "reinvent the wheel", but "reinvent the car".
    Perhaps Adobe is trying to create a wheel for the upperclass RIA programmer Flex car, and isnt making it compatible common designer/programmer Flash car. And when they finished the wheel, and they decided just to make a Segway for the Designers and Flash people to ride, that uses this new wheel.
    You might argue that its more approachable for designers, and designers feel at home because the ui is similar. This is precisely why Adobe should hurry up and finish updating the ui of the Flash Professional IDE so that its ui is more compatable with Photoshop and Illustrator. The fact that Photoshop and Illustrator is the standard for designers are perhaps one of Adobe's greatest advantages.  They could make the designers happy if they just make a Sprite inspector view with layers like photoshop in Flash Professional, instead of using the old "everything
    is a movieclip" paridgim. Flash Professional has already upgraded to AS3 and in AS3 everything isnt a movieclip.  So it would be nice if they could make views for some of the new classes and wireframe components.
    This is the age old debate, update or start from scratch.  I guess I'm saying that I think the hard work of updating to AS3 has already been done, and its just plain wierd that Adobe decides to build a separte tool for components, when they use the same AS3 code base.
    Its just insanely exciting to just think about what could have been if Flash updated and brought on more Designers and at the same time linked in the Flex community. Thats what Flash has always been about! The meeting point between Designers and Programmers.
    To go this far and quit just because of components just leaves me blue.
    It seems that many projects stop at 80% complete and if the developers just spent the extra 20% on fine tuning things then they would have a very high quality product. In this case the remaining 20% is  components, ui, and export. I understand that there are probably many things I dont understand, especially when you through in marketing, and product life cycle.
    But I think Adobe could have done it, if they put as much effort into it as they did to make an entirely new product.
    Maybe we should make some noise before its too late.
    I'm still interested in seeing more links that show the logic behind the initial discussions of this debate when it was first decided.
    pls keep me posted.
    @nwfa & macsavers
    Yes, youre right. it does seem to be their plan.  I just hope they are just testing the waters.  Perhaps after they do the initial selling of Flash Compenents, then maybe they could offer a free update to CS4.
    As I mentioned above, the main reason designers feel at home is because of the UI of Flash Catalyst. UI's can be updated, and I believe Flash Professional can and should update itsui for the reasons I mentioned above.

  • Session key and MAC generation in SCP '02' i='15'

    Hi,
    I am trying send a PUT KEY command and it resolves to '6982' after a '9000' EXTERNAL AUTHENTICATE.
    I suspect that my encryption is causing the problem.(not really sure!)
    I compare my session keys to some that ppl had derived and posted on the forum and I don't really get what they did.
    I am trying to find out if I'm deriving the correct session keys or not?!?!
    e.g
    //Calculating session keys with
    //static key = '404142434445464748494a4b4c4d4e4f' (keyData)
    //sequence counter = '003b'
    //"0101" + sequenceCounter + "000000000000000000000000" for session CMAC key (data)
    //"0102" + sequenceCounter + "000000000000000000000000" for session RMAC key (data)
    //"0181" + sequenceCounter + "000000000000000000000000" for session DEK key (data)
    //"0182" + sequenceCounter + "000000000000000000000000" for session ENC key (data)
    //sessionCMAC is :3213860da8f8d9796794cbcec43ef7a23213860da8f8d979: with sequence counter:003b (result)
    //sessionRMAC is :042a687f6e0dd3f80eabf1e5d51ccefe042a687f6e0dd3f8: with sequence counter:003b (result)
    //sessionDEK is :1fe31370c22354e3b90d6b8ad5686d371fe31370c22354e3: with sequence counter:003b (result)
    //sessionENC is :94a47ad54ffbf423fe4a9d915befab5294a47ad54ffbf423: with sequence counter:003b (result)
    <code>
    if (keyData.length == 16) {
    byte[] temp = (byte[]) keyData.clone();
    keyData = new byte[24];
    System.arraycopy(temp, 0, keyData, 0, temp.length);
    System.arraycopy(temp, 0, keyData, 16, 8);
    DESedeKeySpec keySpec = new DESedeKeySpec(keyData);
    SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DESede");
    SecretKey key = secretKeyFactory.generateSecret(keySpec);
    IvParameterSpec iv = new IvParameterSpec(new byte[]{0, 0, 0, 0, 0, 0, 0, 0});
    Cipher desedeCBCCipher = Cipher.getInstance("DESede/CBC/NoPadding");
    desedeCBCCipher.init(Cipher.ENCRYPT_MODE, key, iv);
    byte[] result = desedeCBCCipher.doFinal(data);
    if (result .length == 16) {
    byte[] temp = (byte[]) result .clone();
    result = new byte[24];
    System.arraycopy(temp, 0, result , 0, temp.length);
    System.arraycopy(temp, 0, result , 16, 8);
    keySpec = new DESedeKeySpec(result);
    secretKeyFactory = SecretKeyFactory.getInstance("DESede");
    key = secretKeyFactory.generateSecret(keySpec);
    </code>
    I use the same encrytion to derive KeyCheckValue with
    newKey ='505152535455565758595a5b5c5d5e5f', data = '0000000000000000'
    and it results to : '6d377e' (of course the last 3 bytes)
    Even though my CMAC session key is different from others (e.g "RLopes" in "http://192.9.162.102/thread.jspa?threadID=5365173&tstart=363" and I have seen it in others too and its really odd to me that its slightly different if you take a close look you will get what i mean) i get the EXTERNAL AUTHENTICATION to work.
    If there is anyone who is 100% sure meaning he/she got other commands to work after EXTERNAL AUTHENTICATE using CMAC please help me verify the keys I got?
    Can he/she test with his code to see if he/she is getting the same session keys or check value?
    Thanks in advance
    Kamran

    Hi,
    Here is the Class and thanks for the tip, I've honestly tried these <code></code> but didn't work and I know it is indeed annoying without the tags :D
    I really hope it helps...
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    package terminalpcsc;
    import java.lang.Exception;
    import java.security.GeneralSecurityException;
    import java.security.Key;
    import java.security.SecureRandom;
    import java.util.List;
    import javax.crypto.*;
    import javax.crypto.spec.*;
    import javax.security.sasl.AuthenticationException;
    import javax.smartcardio.*;
    * @author Kamran
    * @param args the command line arguments
    public class Main {
        private static CardChannel channel;
        private static Card card;
        private static int CHALLENGE_LENGTH = 8;
        private static byte[] keyDiversification = new byte[10];
        private static byte[] keyInformation = new byte[2];
        private static byte[] sequenceCounter = new byte[2];
        private static byte[] cardChallenge = new byte[6];
        private static byte[] cardCryptogram = new byte[8];
        private static byte[] hostChallenge = new byte[8];
        private static byte[] hostCryptogram = new byte[8];
        private static String keyDiversificationHexString;
        private static String keyInformationHexString;
        private static String sequenceCounterHexString;
        private static String cardChallengeHexString;
        private static String cardCryptogramHexString;
        private static String hostChallengeHexString;
        private static String hostCryptogramHexString;
        private static byte[] sessionCMAC;
        private static byte[] sessionDEK;
        private static byte[] sessionENC;
        private static byte[] sessionRMAC;
        private static byte[] icvNextCommand;
        private static IvParameterSpec ivAllZeros = new IvParameterSpec(new byte[]{0, 0, 0, 0, 0, 0, 0, 0});
        private static byte[] staticKey = hexStringToByteArray("404142434445464748494a4b4c4d4e4f4041424344454647");
        private static byte[] newKey = hexStringToByteArray("505152535455565758595a5b5c5d5e5f");
        private static byte[] CMAC;
         * @param args the command line arguments
        public static void main(String[] args) throws Exception {
            initiateCardChannel();
            String apduString = generateSelectAPDU("a000000003535041");
            byte[] bufferC = hexStringToByteArray(apduString);
            CommandAPDU capdu = new CommandAPDU(bufferC);
            System.out.println("Sending APDU Select AID: " + byteArrayToHexString(bufferC));
            ResponseAPDU rapdu = channel.transmit(capdu);
            System.out.println("Sending Apdu: Done!");
            System.out.println("Waiting For Response...");
            byte[] bufferR = rapdu.getData();
            String responseData = byteArrayToHexString(rapdu.getBytes());
            System.out.println("Response: " + responseData);
            apduString = generateInitializeUpdateAPDU();
            bufferC = hexStringToByteArray(apduString);
            capdu = new CommandAPDU(bufferC);
            System.out.println("Sending APDU Initialize Update: " + byteArrayToHexString(bufferC));
            rapdu = channel.transmit(capdu);
            System.out.println("Sending Apdu: Done!");
            System.out.println("Waiting For Response...");
            bufferR = rapdu.getData();
            responseData = byteArrayToHexString(rapdu.getBytes());
            System.out.println("Response: " + responseData);
            // protocol 01
            //System.arraycopy(bufferR,0,keyDiversification,0,10);
            //System.arraycopy(bufferR,10,keyInformation,0,2);
            //System.arraycopy(bufferR,12,cardChallenge,0,8);
            //System.arraycopy(bufferR,20,cardCryptogram,0,8);
            // protocol 02
            System.arraycopy(bufferR, 0, keyDiversification, 0, 10);
            System.arraycopy(bufferR, 10, keyInformation, 0, 2);
            System.arraycopy(bufferR, 12, sequenceCounter, 0, 2);
            System.arraycopy(bufferR, 14, cardChallenge, 0, 6);
            System.arraycopy(bufferR, 20, cardCryptogram, 0, 8);
            keyDiversificationHexString = byteArrayToHexString(keyDiversification);
            keyInformationHexString = byteArrayToHexString(keyInformation);
            sequenceCounterHexString = byteArrayToHexString(sequenceCounter);
            cardChallengeHexString = byteArrayToHexString(cardChallenge);
            cardCryptogramHexString = byteArrayToHexString(cardCryptogram);
            System.out.println("keyDiversification: " + keyDiversificationHexString);
            System.out.println("keyInformation: " + keyInformationHexString);
            System.out.println("sequenceCounter: " + sequenceCounterHexString);
            System.out.println("cardChallenge: " + cardChallengeHexString);
            System.out.println("cardCryptogram: " + cardCryptogramHexString);
            System.out.println("Calculating Session Keys... encryption with CBC");
            //E.4.1 GP 2.1.1
            sessionCMAC = deriveEncryptionCBC(staticKey, hexStringToByteArray("0101" + sequenceCounterHexString + "000000000000000000000000"));
            System.out.println("sessionCMAC is :" + byteArrayToHexString(sessionCMAC) + ": with sequence counter:" + sequenceCounterHexString);
            sessionRMAC = deriveEncryptionCBC(staticKey, hexStringToByteArray("0102" + sequenceCounterHexString + "000000000000000000000000"));
            System.out.println("sessionRMAC is :" + byteArrayToHexString(sessionRMAC) + ": with sequence counter:" + sequenceCounterHexString);
            sessionDEK = deriveEncryptionCBC(staticKey, hexStringToByteArray("0181" + sequenceCounterHexString + "000000000000000000000000"));
            System.out.println("sessionDEK is :" + byteArrayToHexString(sessionDEK) + ": with sequence counter:" + sequenceCounterHexString);
            sessionENC = deriveEncryptionCBC(staticKey, hexStringToByteArray("0182" + sequenceCounterHexString + "000000000000000000000000"));
            System.out.println("sessionENC is :" + byteArrayToHexString(sessionENC) + ": with sequence counter:" + sequenceCounterHexString);
            System.out.println("Calculating and Verifying Card Cryptogram...");
            byte[] signature = cbcMACSignature(hexStringToByteArray(hostChallengeHexString + sequenceCounterHexString + cardChallengeHexString + "8000000000000000"), sessionENC);
            String signatureHexString = byteArrayToHexString(signature);
            if (signatureHexString.equalsIgnoreCase(cardCryptogramHexString)) {
                System.out.println("signature is :" + signatureHexString + "\ncardCryptogram is :" + cardCryptogramHexString + " \nCard cryptogram authenticated");
                apduString = generateExternalAuthenticateAPDU();
                bufferC = hexStringToByteArray(apduString);
                capdu = new CommandAPDU(bufferC);
                System.out.println("Sending APDU External Authenticate: " + byteArrayToHexString(bufferC));
                rapdu = channel.transmit(capdu);
                System.out.println("Sending Apdu: Done!");
                System.out.println("Waiting For Response...");
                bufferR = rapdu.getData();
                responseData = byteArrayToHexString(rapdu.getBytes());
                System.out.println("Response: " + responseData);
                apduString = generatePutKeyAPDU();
                bufferC = hexStringToByteArray(apduString);
                capdu = new CommandAPDU(bufferC);
                System.out.println("Sending APDU Put Key: " + byteArrayToHexString(bufferC));
                rapdu = channel.transmit(capdu);
                System.out.println("Sending Apdu: Done!");
                System.out.println("Waiting For Response...");
                bufferR = rapdu.getData();
                responseData = byteArrayToHexString(rapdu.getBytes());
                System.out.println("Response: " + responseData);
            } else {
                System.out.println("signature is :" + signatureHexString + "\ncardCryptogram is :" + cardCryptogramHexString + " \nCard cryptogram is not authenticated");
            releaseCardChannel();
        public static byte[] cbcMACSignature(byte[] data, byte[] sessionSENC) throws AuthenticationException {
            IvParameterSpec params =
                    new IvParameterSpec(new byte[]{0, 0, 0, 0, 0, 0, 0, 0});
            if (sessionSENC.length == 16) {
                byte[] temp = (byte[]) sessionSENC.clone();
                sessionSENC = new byte[24];
                System.arraycopy(temp, 0, sessionSENC, 0, temp.length);
                System.arraycopy(temp, 0, sessionSENC, 16, 8);
            byte[] temp = null;
            SecretKey secretKey = new SecretKeySpec(sessionSENC, "DESede");
            try {
                Cipher cbcDES = Cipher.getInstance("DESede/CBC/NoPadding");
                cbcDES.init(Cipher.ENCRYPT_MODE, secretKey, params);
                temp = cbcDES.doFinal(data);
            } catch (GeneralSecurityException e) {
                e.printStackTrace();
            byte[] signature = new byte[8];
            System.arraycopy(temp, temp.length - 8, signature, 0, signature.length);
            return signature;
        // generateInitialUpdateAPDU()
        //CLA '80'
        //INS '50' INITIALIZE UPDATE
        //P1 'xx' Key Version Number
        //P2 '00' Reference control parameter P2
        //Lc '08' Length of host challenge
        //Data 'xx xx…' Host challenge
        //Le '00'
        //RESPONSE TEMPLATE
        //Key diversification data 10 bytes
        //Key information 2 bytes
        //Card challenge 8 bytes
        //Card cryptogram 8 bytes
        public static String generateInitializeUpdateAPDU() throws Exception {
            hostChallenge = generateHostChallenge();
            hostChallengeHexString = byteArrayToHexString(hostChallenge);
            return "8050000008" + hostChallengeHexString + "00";
        //CLA '80' or '84'
        //INS 'D8' PUT KEY
        //P1 'xx' Reference control parameter P1 Key Version Number -- '00' is new key  range is '01' to '7F'
        //P2 'xx' Reference control parameter P2 Key Identifier     -- '00' to '7F'
        //Lc 'xx' Length of data field
        //Data 'xxxx..' Key data (and MAC if present)
        //Le '00'
        public static String generatePutKeyAPDU() throws Exception {
            String keyCheckValue = new String();
            //keyCheckValue = keyCheckValue.substring(keyCheckValue.length() - (3 * 2));
            keyCheckValue = byteArrayToHexString(deriveEncryptionECB(newKey, hexStringToByteArray("0000000000000000")));
            keyCheckValue = keyCheckValue.substring(keyCheckValue.length() - (3 * 2));
            System.out.println("keyCheckValue :" + keyCheckValue + " 3DES ECB, key is new key '505152535455565758595a5b5c5d5e5f5051525354555657', data is 8 zeroes");
            String encryptedNewKey = byteArrayToHexString(deriveEncryptionECB(sessionDEK, newKey));
            //System.out.println("sessionDEK.getEncoded() :" + sessionDEK.getEncoded() + " len is:" + sessionDEK.getEncoded().length);
            System.out.println("encryptedNewKey :" + encryptedNewKey);
            //testing newKey
            String dataField = "01" + "8010" + encryptedNewKey + "03" + keyCheckValue + "8010" + encryptedNewKey + "03" + keyCheckValue + "8010" + encryptedNewKey + "03" + keyCheckValue;
            // String dataField2 = "01" + "8010" + byteArrayToHexString(newKey) + "03" + keyCheckValue + "8010" + byteArrayToHexString(newKey) + "03" + keyCheckValue + "8010" + byteArrayToHexString(newKey) + "03" + keyCheckValue;
            System.out.println("datafield to calculate cmac :" + dataField);
            System.out.println("icv to calculate cmac is previous mac first 8 byte sessionCMAC in CBC single des :" + byteArrayToHexString(icvNextCommand));
            CMAC = generateCMac2((byte) 0x84, (byte) 0xD8, (byte) 0x00, (byte) 0x81, hexStringToByteArray(dataField), sessionCMAC, icvNextCommand);
            System.out.println("data field with des padding for encryption (encryption in CBC sessionENC) :" + desPadding(dataField));
            String dataField3 = byteArrayToHexString(deriveEncryptionCBC(sessionENC, hexStringToByteArray(desPadding(dataField))));
            System.out.println("data field after encryption :" + dataField3);
            Integer CMACLen = byteArrayToHexString(CMAC).length() / 2;
            System.out.println("CMACLen :" + CMACLen);
            Integer dataFieldLen = dataField3.length() / 2;
            System.out.println("dataFieldLen :" + dataFieldLen);
            Integer intLc = dataFieldLen + CMACLen;
            System.out.println("intLc :" + intLc);
            String hexLc = Integer.toString(intLc, 16);
            System.out.println("hexLc :" + hexLc);
            return "84D80081" + hexLc + dataField3 + byteArrayToHexString(CMAC) + "00";
        //generateExternalAuthenticateAPDU()
        //CLA '84'
        //INS '82' EXTERNAL AUTHENTICATE
        //P1 'xx' Security level  --'03' C-DECRYPTION and C-MAC.--'01' C-MAC.'00' No secure messaging expected.
        //P2 '00' Reference control parameter P2
        //Lc '10' Length of host cryptogram and MAC
        //Data 'xx xx…' Host cryptogram and MAC
        //Le Not present
        public static String generateExternalAuthenticateAPDU() throws Exception {
            System.out.println("Calculating and Verifying Host Cryptogram...");
            hostCryptogram = cbcMACSignature(hexStringToByteArray(sequenceCounterHexString + cardChallengeHexString + hostChallengeHexString + "8000000000000000"), sessionENC);
            hostCryptogramHexString = byteArrayToHexString(hostCryptogram);
            System.out.println("hostCryptogram is :" + hostCryptogramHexString);
            CMAC = generateCMac2((byte) 0x84, (byte) 0x82, (byte) 0x03, (byte) 0x00, hostCryptogram, sessionCMAC, new byte[]{0, 0, 0, 0, 0, 0, 0, 0});
            return "8482030010" + hostCryptogramHexString + byteArrayToHexString(CMAC);
        // generateSelectAPDU()
        //CLA '00' ISO/IEC 7816-4 command
        //INS 'A4' SELECT
        //P1 'xx' Reference control parameter P1 --'04' select by name
        //P2 'xx' Reference control parameter P2 --'00' First or only occurrence --'02' Next occurrence
        //Lc 'xx' Length of AID
        //Data 'xxxx..' AID of Application to be selected
        //Le '00'
        // RESPONSE TEMPLATE
        //'6F' File Control Information (FCI template) Mandatory
        //'84' Application / file AID Mandatory
        //'A5' Proprietary data Mandatory
        //'73' Security Domain Management Data (see Appendix F for detailed coding) Optional
        //'9F6E' Application production life cycle data Optional
        //'9F65' Maximum length of data field in command message Mandatory
        public static String generateSelectAPDU(String AID) throws Exception {
            String AIDlen = Integer.toString(AID.length() / 2, 16);
            if (AIDlen.length() == 1) {
                AIDlen = "0" + AIDlen;
            System.out.println("00A40400" + AIDlen + AID);
            return "00A40400" + AIDlen + AID;
        public static String byteArrayToHexString(byte[] b) throws Exception {
            String result = "";
            for (int i = 0; i < b.length; i++) {
                result +=
                        Integer.toString((b[i] & 0xff) + 0x100, 16).substring(1);
            return result;
        public static void initiateCardChannel() throws CardException {
            System.out.println("Connecting to Java Card...");
            TerminalFactory factory = TerminalFactory.getDefault();
            List<CardTerminal> terminals = factory.terminals().list();
            System.out.println("Terminals Detected: " + terminals);
            // get the first terminal
            System.out.println("Connecting to: " + terminals + "...");
            CardTerminal terminal = terminals.get(0);
            System.out.println("Connected to: " + terminals);
            // establish a connection with the card
            System.out.println("Connecting to Java Card...");
            card = terminal.connect("T=0");
            System.out.println("Connected to card: " + card);
            System.out.println("Obtaining Channel...");
            channel = card.getBasicChannel();
            System.out.println("Connecting to Channel: " + channel.getChannelNumber());
        public static void releaseCardChannel() throws CardException {
            System.out.println("Disconnection all...");
            card.disconnect(false);
            System.out.println("Disconnection Done");
            System.out.println("*END*");
        public static byte[] hexStringToByteArray(String s) {
            int len = s.length();
            byte[] data = new byte[len / 2];
            for (int i = 0; i < len; i += 2) {
                data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16));
            return data;
        //To generate the derivation data:
        public static byte[] deriveEncryptionCBC(byte[] keyData, byte[] data) throws GeneralSecurityException {
            //Key key = getSecretKey(keyData);
            if (keyData.length == 16) {
                byte[] temp = (byte[]) keyData.clone();
                keyData = new byte[24];
                System.arraycopy(temp, 0, keyData, 0, temp.length);
                System.arraycopy(temp, 0, keyData, 16, 8);
            SecretKey secretKey = new SecretKeySpec(keyData, "DESede");
            IvParameterSpec dps =
                    new IvParameterSpec(new byte[]{0, 0, 0, 0, 0, 0, 0, 0});
            String algorithm = "DESede/CBC/NoPadding";
            Cipher desedeCBCCipher = Cipher.getInstance(algorithm);
            desedeCBCCipher.init(Cipher.ENCRYPT_MODE, secretKey, dps);
            byte[] result = desedeCBCCipher.doFinal(data);
            //adjustParity(result);
            return result;
        public static byte[] deriveEncryptionECB(byte[] keyData, byte[] data) throws GeneralSecurityException {
            //Key key = getSecretKey(keyData);
            if (keyData.length == 16) {
                byte[] temp = (byte[]) keyData.clone();
                keyData = new byte[24];
                System.arraycopy(temp, 0, keyData, 0, temp.length);
                System.arraycopy(temp, 0, keyData, 16, 8);
            SecretKey secretKey = new SecretKeySpec(keyData, "DESede");
            String algorithm = "DESede/ECB/NoPadding";
            Cipher desedeCBCCipher = Cipher.getInstance(algorithm);
            desedeCBCCipher.init(Cipher.ENCRYPT_MODE, secretKey);
            byte[] result = desedeCBCCipher.doFinal(data);
            //adjustParity(result);
            return result;
         * Adjust a DES key to odd parity
         * @param key
         *            to be adjusted
        public static byte[] adjustParity(byte[] key) {
            for (int i = 0; i < key.length; i++) {
                int akku = (key[i] & 0xFF) | 1;
                for (int c = 7; c > 0; c--) {
                    akku = (akku & 1) ^ (akku >> 1);
                key[i] = (byte) ((key[i] & 0xFE) | akku);
            return key;
        public static byte[] generateCMac2(byte cla, byte ins, byte p1, byte p2, byte[] dataField, byte[] SMacSessionKey, byte[] icv) throws GeneralSecurityException, Exception {
            if (SMacSessionKey.length == 16) {
                byte[] temp = (byte[]) SMacSessionKey.clone();
                SMacSessionKey = new byte[24];
                System.arraycopy(temp, 0, SMacSessionKey, 0, temp.length);
                System.arraycopy(temp, 0, SMacSessionKey, 16, 8);
            byte[] cMac = new byte[8];
            byte[] padding = {(byte) 0x80, 0, 0, 0, 0, 0, 0, 0};
            int paddingRequired = 8 - (5 + dataField.length) % 8;
            byte[] data = new byte[5 + dataField.length + paddingRequired];
            //Build APDU
            data[0] = cla;
            data[1] = ins;
            data[2] = p1;
            data[3] = p2;
            data[4] = (byte) ((byte) dataField.length + (byte) 0x08);
            System.arraycopy(dataField, 0, data, 5, dataField.length);
            System.arraycopy(padding, 0, data, 5 + dataField.length, paddingRequired);
            System.out.println("data to calculate mac :" + byteArrayToHexString(data));
            System.out.println("icv to calculate mac :" + byteArrayToHexString(icv));
            Cipher cipher = Cipher.getInstance("DESede/CBC/NoPadding");
            Cipher singleDesCipher = Cipher.getInstance("DES/CBC/NoPadding", "SunJCE");
            SecretKeySpec desSingleKey = new SecretKeySpec(SMacSessionKey, 0, 8, "DES");
            SecretKey secretKey = new SecretKeySpec(SMacSessionKey, "DESede");
            //Calculate the first n - 1 block. For this case, n = 1
            IvParameterSpec ivSpec = new IvParameterSpec(icv);
            singleDesCipher.init(Cipher.ENCRYPT_MODE, desSingleKey, ivSpec);
            byte ivForLastBlock[] = singleDesCipher.doFinal(data, 0, 8);
            int blocks = data.length / 8;
            for (int i = 0; i < blocks - 1; i++) {
                singleDesCipher.init(Cipher.ENCRYPT_MODE, desSingleKey, ivSpec);
                byte[] block = singleDesCipher.doFinal(data, i * 8, 8);
                ivSpec = new IvParameterSpec(block);
            int offset = (blocks - 1) * 8;
            cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivSpec);
            cMac = cipher.doFinal(data, offset, 8);
            ivSpec = new IvParameterSpec(new byte[8]);
            singleDesCipher.init(Cipher.ENCRYPT_MODE, desSingleKey, ivSpec);
            icvNextCommand = singleDesCipher.doFinal(cMac);
            return cMac;
        public static byte[] generateHostChallenge() {
            byte[] hostChallenge = new byte[CHALLENGE_LENGTH];
            SecureRandom random = new SecureRandom();
            random.nextBytes(hostChallenge);
            return hostChallenge;
        public static String desPadding(String hexString) {
            System.out.println("String to pad before:" + hexString);
            hexString = hexString + "80";
            int hexStringLen = hexString.length() / 2;
            int padding = 8 - (hexStringLen % 8);
            for (int i = 0; i < padding; i++) {
                hexString = hexString + "00";
            System.out.println("String to pad after :" + hexString);
            return hexString;
    }Thanks in advance
    Kamran

Maybe you are looking for

  • ICal on Mac 10.7.4 not reliably syncing with iCloud

    The past couple of days I noticed a problem with syncing iCal on my Mac running 10.7.4 with iCloud. My iPad and iPhone sync with iCloud, and the Reminders sync across all devices without any issues. I also noticed that if I just try to double click o

  • Firewire to Thunderbolt conversion cable problem

    I got a new  iMac in November, I finally got back to coverting my videos and, of course, I bought the Firewire to Thunderbolt coversion cable.  Now, however, under my hardware, in the thunderbolt bus, it shows the conversion cable as attached, but I

  • MIC of type Date

    Hi All I would like to record the date of recording in the inspection lot against an MIC and then transfer this value to the lot. However i am not able to define MIC of type Date. Any ideas on this. Regards TOM

  • InfoCube Data Encryption

    Hi All, I am using HR Employee Specific Payroll Data 0PY_C02 for reporting on payroll data. The sensitivity of the data in this cube is tremendous.  First Question: Can data in an InfoCube be encrypted? Second Question: Method and Steps involved in i

  • "Backups" increasing every time I delete a file.

    Hey Guys I have seen similar topics covered in other areas, but nothing as specific as my problem from what I can see. I am moving all my movies and tv shows to my external off my 2010 MBA. With every file that I drag and drop to my external, trash,