588 } |
590 } |
589 } |
591 } |
590 __ASSERT_ALWAYS(result != NULL, User::Panic(KUnifiedKeyStore, EArrayAccessOutOfBounds)); |
592 __ASSERT_ALWAYS(result != NULL, User::Panic(KUnifiedKeyStore, EArrayAccessOutOfBounds)); |
591 return *result; |
593 return *result; |
592 } |
594 } |
|
595 |
|
596 #ifdef SYMBIAN_AUTH_SERVER |
|
597 |
|
598 EXPORT_C void CUnifiedKeyStore::CreateKey( TInt aKeyStoreIndex, TKeyUsagePKCS15 aUsage,TUint aSize, |
|
599 const TDesC& aLabel, CCTKeyInfo::EKeyAlgorithm aAlgorithm, |
|
600 TInt aAccessType, TTime aStartDate, TTime aEndDate, |
|
601 const TDesC& aAuthenticationString, TInt aFreshness, |
|
602 CCTKeyInfo*& aKeyInfoOut, TRequestStatus& aStatus) |
|
603 { |
|
604 |
|
605 StartAsyncOperation(ECreateKey, aStatus); |
|
606 TRAPD(err, PrepareToCreateKeyL(aKeyStoreIndex, aUsage, aSize, aLabel, aAlgorithm, aAccessType, |
|
607 aStartDate, aEndDate, aStatus)); |
|
608 if (KErrNone != err) |
|
609 { |
|
610 Complete(err); |
|
611 return; |
|
612 } |
|
613 |
|
614 iKeyInfoOut = &aKeyInfoOut; |
|
615 aKeyInfoOut = NULL; |
|
616 iKeyStoreManager->CreateKey(aAuthenticationString, aFreshness, iKeyInfo, iStatus); |
|
617 SetActive(); |
|
618 |
|
619 } |
|
620 |
|
621 |
|
622 EXPORT_C void CUnifiedKeyStore::ImportKey( TInt aKeyStoreIndex, const TDesC8& aKeyData, |
|
623 TKeyUsagePKCS15 aUsage, const TDesC& aLabel, |
|
624 TInt aAccessType, TTime aStartDate, TTime aEndDate, |
|
625 const TDesC& aAuthenticationString, TInt aFreshness, |
|
626 CCTKeyInfo*& aKeyInfoOut, TRequestStatus& aStatus) |
|
627 { |
|
628 TBool isEncrypted = TASN1DecPKCS8::IsEncryptedPKCS8Data(aKeyData); |
|
629 StartAsyncOperation(isEncrypted ? EImportKeyEncrypted : EImportKey, aStatus); |
|
630 |
|
631 ASSERT(!iKeyData); |
|
632 iKeyData = aKeyData.Alloc(); |
|
633 if (!iKeyData) // OOM or some other catastrophe |
|
634 { |
|
635 Complete(KErrNoMemory); |
|
636 return; |
|
637 } |
|
638 |
|
639 TRAPD(err, PrepareToCreateKeyL(aKeyStoreIndex, aUsage, 0, aLabel, CCTKeyInfo::EInvalidAlgorithm, aAccessType, |
|
640 aStartDate, aEndDate, aStatus)); |
|
641 if (KErrNone != err) |
|
642 { |
|
643 Complete(err); |
|
644 return; |
|
645 } |
|
646 |
|
647 iKeyInfoOut = &aKeyInfoOut; |
|
648 aKeyInfoOut = NULL; |
|
649 |
|
650 if (isEncrypted) |
|
651 { |
|
652 iKeyStoreManager->ImportEncryptedKey(*iKeyData, aAuthenticationString, aFreshness, iKeyInfo, iStatus); |
|
653 } |
|
654 else |
|
655 { |
|
656 iKeyStoreManager->ImportKey(*iKeyData, aAuthenticationString, aFreshness, iKeyInfo, iStatus); |
|
657 } |
|
658 SetActive(); |
|
659 } |
|
660 |
|
661 EXPORT_C void CUnifiedKeyStore::SetAuthenticationPolicy( const TCTTokenObjectHandle aHandle, |
|
662 const TDesC& aAuthenticationString, |
|
663 TInt aFreshness, |
|
664 TRequestStatus& aStatus) |
|
665 { |
|
666 StartAsyncOperation(ESetAuthenticationPolicy, aStatus); |
|
667 |
|
668 ASSERT(!iKeyStoreManager); |
|
669 iKeyStoreManager = FindKeyStoreManager(aHandle); |
|
670 if (!iKeyStoreManager) |
|
671 { |
|
672 Complete(KErrNotFound); |
|
673 return; |
|
674 } |
|
675 |
|
676 iKeyStoreManager->SetAuthenticationPolicy(aHandle, aAuthenticationString, aFreshness, iStatus); |
|
677 SetActive(); |
|
678 |
|
679 } |
|
680 |
|
681 EXPORT_C void CUnifiedKeyStore::GetAuthenticationPolicy( const TCTTokenObjectHandle aHandle, |
|
682 HBufC*& aAuthenticationString, |
|
683 TInt& aFreshness, |
|
684 TRequestStatus& aStatus) |
|
685 { |
|
686 StartAsyncOperation(EGetAuthenticationPolicy, aStatus); |
|
687 |
|
688 ASSERT(!iKeyStoreManager); |
|
689 iKeyStoreManager = FindKeyStoreManager(aHandle); |
|
690 if (!iKeyStoreManager) |
|
691 { |
|
692 Complete(KErrNotFound); |
|
693 return; |
|
694 } |
|
695 |
|
696 iKeyStoreManager->GetAuthenticationPolicy(aHandle, aAuthenticationString, aFreshness, iStatus); |
|
697 SetActive(); |
|
698 |
|
699 } |
|
700 |
|
701 #endif // SYMBIAN_AUTH_SERVER |
593 |
702 |
594 CUnifiedKeyStore::CUnifiedKeyStore(RFs& aFs) |
703 CUnifiedKeyStore::CUnifiedKeyStore(RFs& aFs) |
595 : CActive(EPriorityNormal), iFs(aFs), iState(EIdle) |
704 : CActive(EPriorityNormal), iFs(aFs), iState(EIdle) |
596 {// Currently defaults to always try for key store manager interface |
705 {// Currently defaults to always try for key store manager interface |
597 // This may change (add parameter to NewL for required interface) |
706 // This may change (add parameter to NewL for required interface) |