Building High Assurance Secure Applications Using Security Patterns For Capability-Based Platforms