{"_id":"56d1f33d00a2a70b00b365e4","category":{"_id":"56d1f33900a2a70b00b36591","__v":1,"version":"56d1f33700a2a70b00b3658e","pages":["56d1f33d00a2a70b00b365e3","56d1f33d00a2a70b00b365e4","56d1f33d00a2a70b00b365e5","56d1f33d00a2a70b00b365e6","56d1f33d00a2a70b00b365e7"],"project":"5526c95cf69851170038b48f","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-12-04T20:08:13.640Z","from_sync":false,"order":1,"slug":"security-profiles","title":"Security Profiles"},"__v":0,"project":"5526c95cf69851170038b48f","user":"5526d4bb4a7ac121004c605c","parentDoc":null,"version":{"_id":"56d1f33700a2a70b00b3658e","project":"5526c95cf69851170038b48f","__v":2,"createdAt":"2016-02-27T19:04:23.946Z","releaseDate":"2016-02-27T19:04:23.946Z","categories":["56d1f33900a2a70b00b3658f","56d1f33900a2a70b00b36590","56d1f33900a2a70b00b36591","56d1f33900a2a70b00b36592","56d1f33900a2a70b00b36593","56d1f33900a2a70b00b36594","56d1f33900a2a70b00b36595","56d1f33900a2a70b00b36596","56d1f33900a2a70b00b36597","56d1f33900a2a70b00b36598","56d1f33900a2a70b00b36599","56d1f33900a2a70b00b3659a","571f9497ada30c34003b7cee"],"is_deprecated":false,"is_hidden":false,"is_beta":true,"is_stable":true,"codename":"beta","version_clean":"2.0.0-beta","version":"2.0.0-beta"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-12-04T20:10:47.985Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":1,"body":"This section guides you through obtaining a **development** certificate. Some steps may be different for **production** certificates.\n[block:callout]\n{\n  \"type\": \"danger\",\n  \"title\": \"Apple Developer Account Required\",\n  \"body\": \"Before we begin, please realize an Apple Developer account (**Individual** or **Organization**) is required in order to use the **Certificates, Identifiers & Profiles** section of the Apple Developer website. You can read more about Apple Developer membership plans [on Apple's website](https://developer.apple.com/support/compare-memberships/).\"\n}\n[/block]\n## Generating a SSL Certificate\n\nFirst, we're going to need to generate a certificate signing request file. This is used to authenticate the creation of an SSL certificate. The certificate signing request can be created on Mac OSX by using Keychain Access and on other platforms by using OpenSSL.\n\n### Generate certificate request using Keychain Access\n\n* Launch the **Keychain Access** application on your Mac. It will likely be in the **Applications/Utilities** folder.\n* Navigate to **Keychain Access** > **Certificate Assistant** > **Request a Certificate From a Certificate Authority**\n* Enter your name and email address. Leave the **CA Email** blank.\n* Select **Saved to disk** and hit **continue**. This will download your\n`.certSigningRequest` file.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/yqMiQz4WTpGKYoE0tAjU_Screen%20Shot%202015-10-05%20at%2012.47.10%20PM.png\",\n        \"Screen Shot 2015-10-05 at 12.47.10 PM.png\",\n        \"1456\",\n        \"1096\",\n        \"#a54f29\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n### Generate certificate signing request using OpenSSL\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"For Windows, [download OpenSSL](https://www.openssl.org/community/binaries.html) (choose a pre-compiled self-installer) and install.\\n\\nOpen up command prompt (making sure to run as administrator) and change directories to the bin folder within the OpenSSL installation.\\n\\n`cd C:\\\\OpenSSL-Win64\\\\bin`\",\n  \"title\": \"Extra Steps for Windows\"\n}\n[/block]\nGenerate a private RSA key file. Keep this file handy!\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"openssl genrsa -out keyname.key 2048\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\nNow create the certificate signing request file, filling out the interactive form and making sure everything is accurate.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"openssl req -new -key keyname.key -out CertificateSigningRequest.certSigningRequest\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\nYou now have a certificate signing request file `CertificateSigningRequest.certSigningRequest` that you can upload to the Apple Developer website.\n\n### Register your App ID\n\niOS applications installed on your development devices require a custom iOS App ID (not to be confused with your Ionic App ID). For this example, you may use an ID that you have already created, or create a new one. We'll describe how to create a new one below.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Note\",\n  \"body\": \"As a convention, iOS App IDs are represented as a reversed address (for example `com.ionicframework.MyIonicApp`).\"\n}\n[/block]\n* Go to the [Apple Developer Center](https://developer.apple.com/membercenter/index.action).\n* Select **Certificates, Identifiers, & Profiles**:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/atSEHVDiRV2tjIigbO84_Screen%20Shot%202015-10-05%20at%2012.57.11%20PM.png\",\n        \"Screen Shot 2015-10-05 at 12.57.11 PM.png\",\n        \"2070\",\n        \"1604\",\n        \"#b03b3b\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* Select **Identifiers** under the iOS Apps section.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/SpfFUSAR6aWkWv8BEG0A_Screen%20Shot%202015-10-07%20at%2011.15.18%20AM.png\",\n        \"Screen Shot 2015-10-07 at 11.15.18 AM.png\",\n        \"2190\",\n        \"1492\",\n        \"#31617a\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* Here, you're going to see a list of your iOS App IDs. Hit the **+** button in the top-right corner to register a new one.\n* Choose a name for your new App ID.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/wGlt46S3ih0XCgdfGQAh_Screen%20Shot%202015-10-07%20at%2011.25.44%20AM.png\",\n        \"Screen Shot 2015-10-07 at 11.25.44 AM.png\",\n        \"2190\",\n        \"1492\",\n        \"#4bad87\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* Choose an App ID Prefix (in most cases, the default will be just fine).\n* For App ID Suffix, you need to select Explicit App ID and enter your iOS app's bundle ID. **This string should match the ID you've specified in your Ionic project's `config.xml` file.**\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/iSFW0DnTUKWW9UzbvGcp_Screen%20Shot%202015-10-07%20at%2011.24.55%20AM.png\",\n        \"Screen Shot 2015-10-07 at 11.24.55 AM.png\",\n        \"2190\",\n        \"1492\",\n        \"#48ab8c\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* Be sure to enable any **App Services** that your app may need, such as **Push Notifications**.\n* Hit **Continue**, make sure that all information was entered correctly, and then **Submit** on the confirmation page.\n\n### Create a certificate\n\nNow, we're going to use that `.certSigningRequest` file you generated earlier to get a certificate from Apple.\n\n* Click **Development** under **Certificates**.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/T0mpQKsWRniSsq3ZPn6s_Screen%20Shot%202015-10-07%20at%2012.37.54%20PM.png\",\n        \"Screen Shot 2015-10-07 at 12.37.54 PM.png\",\n        \"2190\",\n        \"1492\",\n        \"#f40f0d\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* Hit the **+** button in the top-right corner to create a new one.\n* Select the **iOS App Development** certificate type.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/08TR2wZT1CTGudV8vjl3_Screen%20Shot%202015-10-07%20at%2012.45.32%20PM.png\",\n        \"Screen Shot 2015-10-07 at 12.45.32 PM.png\",\n        \"2190\",\n        \"1492\",\n        \"#cd2c2b\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* At the third step, upload your `.certSigningRequest` file that you generated earlier.\n* Click **Generate**, and then **Download** your certificate. It should be a `.cer` file.\n\n### Create the p12 Certificate using Keychain Access\n\n* Open **Keychain Access** again.\n* Make sure your **login** keychain is visible. If it is not, then right click under **Keychains** and select **Add Keychain...**.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/2vA6Ry3JSAywl2D6foPA_Screen%20Shot%202015-10-07%20at%2012.53.19%20PM.png\",\n        \"Screen Shot 2015-10-07 at 12.53.19 PM.png\",\n        \"1978\",\n        \"1334\",\n        \"#1f4c7c\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* Then select the `login.keychain` file, which should exist in your home folder under `Library/Keychains/login.keychain`.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/H8zxfmITRWyUXVWostNX_Screen%20Shot%202015-10-07%20at%2012.51.11%20PM.png\",\n        \"Screen Shot 2015-10-07 at 12.51.11 PM.png\",\n        \"2076\",\n        \"1334\",\n        \"#304564\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* Click the **+** button at the bottom after selecting the **login** keychain and locate your downloaded `.cer` file.\n* After the certificate is imported into your keychain, we need to export it in a different format. Right click on your certificate and select **Export \"...\" ...**.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/TtjkNRBFTiiTPqCmaJaG_Screen%20Shot%202015-10-07%20at%201.00.49%20PM.png\",\n        \"Screen Shot 2015-10-07 at 1.00.49 PM.png\",\n        \"1978\",\n        \"1334\",\n        \"#283b57\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* Make sure **Personal Information Exchange (.p12)** is selected for **File Format**, and then hit **Save.**\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/VB6bxMUJT4y3Dk24DhAO_Screen%20Shot%202015-10-07%20at%201.07.10%20PM.png\",\n        \"Screen Shot 2015-10-07 at 1.07.10 PM.png\",\n        \"1978\",\n        \"1334\",\n        \"#2e4b6b\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* You will be prompted to enter a password, which will be used to protect the exported certificate. Give it something you can remember!\n\n### Create the p12 Certificate using OpenSSL\n\nDownload your iOS certificate to the same directory as your private RSA key. We'll need it to create the `Certificate.p12` file.\n\nFirst, we need to change the format of the iOS certificate to PEM.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"openssl x509 -inform DER -outform PEM -in ios_development.cer -out ios_development.cer.pem\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\nNow that the iOS certificate is in the proper format, we can create the `Certificate.p12` file.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"openssl pkcs12 -export -inkey keyname.key -in ios_development.cer.pem -out Certificate.p12\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\nYou will be prompted to enter a password, which will be used to protect the exported certificate. Give it something you can remember!\n\n## Create a provisioning profile\n\nA provisioning profile authenticates your device to run the app that you're developing. Whether you're using an existing App ID or have created a new one, you're going to need to regenerate and install a Provisioning Profile. In this tutorial, we're going to create a new profile.\n\n* Select **Development** under **Provisioning Profiles**.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/M8AKp5lQ9yKoLIoKla5A_Screen%20Shot%202015-10-07%20at%201.11.43%20PM.png\",\n        \"Screen Shot 2015-10-07 at 1.11.43 PM.png\",\n        \"2190\",\n        \"1492\",\n        \"#364e5c\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* Select the **+** in the top-right of the screen to create a new iOS Provisioning Profile.\n* Select **iOS App Development** as your profile type, then select **Continue**.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/KwYdg9RpyVKQgeWiKz8g_Screen%20Shot%202015-10-07%20at%201.13.33%20PM.png\",\n        \"Screen Shot 2015-10-07 at 1.13.33 PM.png\",\n        \"2190\",\n        \"1492\",\n        \"#d82221\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n* Select the App ID you registered previously, then select **Continue**.\n* Select the iOS development certificate you created previously, then select **Continue**.\n* You will now be asked which devices will be included in your provisioning profile. Select all of your development devices, then hit **Continue**.\n* Choose a descriptive name for the profile, then hit **Generate**.\n* Download the profile from the next screen with the **Download** button.\n[block:callout]\n{\n  \"type\": \"success\",\n  \"body\": \"Congratulations! You now have a certificate file and a provisioning profile, which are used to attach iOS credentials to a security profile.\",\n  \"title\": \"Success!\"\n}\n[/block]","excerpt":"","slug":"ios-build-profiles","type":"basic","title":"iOS Build Profiles"}

iOS Build Profiles


This section guides you through obtaining a **development** certificate. Some steps may be different for **production** certificates. [block:callout] { "type": "danger", "title": "Apple Developer Account Required", "body": "Before we begin, please realize an Apple Developer account (**Individual** or **Organization**) is required in order to use the **Certificates, Identifiers & Profiles** section of the Apple Developer website. You can read more about Apple Developer membership plans [on Apple's website](https://developer.apple.com/support/compare-memberships/)." } [/block] ## Generating a SSL Certificate First, we're going to need to generate a certificate signing request file. This is used to authenticate the creation of an SSL certificate. The certificate signing request can be created on Mac OSX by using Keychain Access and on other platforms by using OpenSSL. ### Generate certificate request using Keychain Access * Launch the **Keychain Access** application on your Mac. It will likely be in the **Applications/Utilities** folder. * Navigate to **Keychain Access** > **Certificate Assistant** > **Request a Certificate From a Certificate Authority** * Enter your name and email address. Leave the **CA Email** blank. * Select **Saved to disk** and hit **continue**. This will download your `.certSigningRequest` file. [block:image] { "images": [ { "image": [ "https://files.readme.io/yqMiQz4WTpGKYoE0tAjU_Screen%20Shot%202015-10-05%20at%2012.47.10%20PM.png", "Screen Shot 2015-10-05 at 12.47.10 PM.png", "1456", "1096", "#a54f29", "" ] } ] } [/block] ### Generate certificate signing request using OpenSSL [block:callout] { "type": "info", "body": "For Windows, [download OpenSSL](https://www.openssl.org/community/binaries.html) (choose a pre-compiled self-installer) and install.\n\nOpen up command prompt (making sure to run as administrator) and change directories to the bin folder within the OpenSSL installation.\n\n`cd C:\\OpenSSL-Win64\\bin`", "title": "Extra Steps for Windows" } [/block] Generate a private RSA key file. Keep this file handy! [block:code] { "codes": [ { "code": "openssl genrsa -out keyname.key 2048", "language": "shell" } ] } [/block] Now create the certificate signing request file, filling out the interactive form and making sure everything is accurate. [block:code] { "codes": [ { "code": "openssl req -new -key keyname.key -out CertificateSigningRequest.certSigningRequest", "language": "shell" } ] } [/block] You now have a certificate signing request file `CertificateSigningRequest.certSigningRequest` that you can upload to the Apple Developer website. ### Register your App ID iOS applications installed on your development devices require a custom iOS App ID (not to be confused with your Ionic App ID). For this example, you may use an ID that you have already created, or create a new one. We'll describe how to create a new one below. [block:callout] { "type": "info", "title": "Note", "body": "As a convention, iOS App IDs are represented as a reversed address (for example `com.ionicframework.MyIonicApp`)." } [/block] * Go to the [Apple Developer Center](https://developer.apple.com/membercenter/index.action). * Select **Certificates, Identifiers, & Profiles**: [block:image] { "images": [ { "image": [ "https://files.readme.io/atSEHVDiRV2tjIigbO84_Screen%20Shot%202015-10-05%20at%2012.57.11%20PM.png", "Screen Shot 2015-10-05 at 12.57.11 PM.png", "2070", "1604", "#b03b3b", "" ] } ] } [/block] * Select **Identifiers** under the iOS Apps section. [block:image] { "images": [ { "image": [ "https://files.readme.io/SpfFUSAR6aWkWv8BEG0A_Screen%20Shot%202015-10-07%20at%2011.15.18%20AM.png", "Screen Shot 2015-10-07 at 11.15.18 AM.png", "2190", "1492", "#31617a", "" ] } ] } [/block] * Here, you're going to see a list of your iOS App IDs. Hit the **+** button in the top-right corner to register a new one. * Choose a name for your new App ID. [block:image] { "images": [ { "image": [ "https://files.readme.io/wGlt46S3ih0XCgdfGQAh_Screen%20Shot%202015-10-07%20at%2011.25.44%20AM.png", "Screen Shot 2015-10-07 at 11.25.44 AM.png", "2190", "1492", "#4bad87", "" ] } ] } [/block] * Choose an App ID Prefix (in most cases, the default will be just fine). * For App ID Suffix, you need to select Explicit App ID and enter your iOS app's bundle ID. **This string should match the ID you've specified in your Ionic project's `config.xml` file.** [block:image] { "images": [ { "image": [ "https://files.readme.io/iSFW0DnTUKWW9UzbvGcp_Screen%20Shot%202015-10-07%20at%2011.24.55%20AM.png", "Screen Shot 2015-10-07 at 11.24.55 AM.png", "2190", "1492", "#48ab8c", "" ] } ] } [/block] * Be sure to enable any **App Services** that your app may need, such as **Push Notifications**. * Hit **Continue**, make sure that all information was entered correctly, and then **Submit** on the confirmation page. ### Create a certificate Now, we're going to use that `.certSigningRequest` file you generated earlier to get a certificate from Apple. * Click **Development** under **Certificates**. [block:image] { "images": [ { "image": [ "https://files.readme.io/T0mpQKsWRniSsq3ZPn6s_Screen%20Shot%202015-10-07%20at%2012.37.54%20PM.png", "Screen Shot 2015-10-07 at 12.37.54 PM.png", "2190", "1492", "#f40f0d", "" ] } ] } [/block] * Hit the **+** button in the top-right corner to create a new one. * Select the **iOS App Development** certificate type. [block:image] { "images": [ { "image": [ "https://files.readme.io/08TR2wZT1CTGudV8vjl3_Screen%20Shot%202015-10-07%20at%2012.45.32%20PM.png", "Screen Shot 2015-10-07 at 12.45.32 PM.png", "2190", "1492", "#cd2c2b", "" ] } ] } [/block] * At the third step, upload your `.certSigningRequest` file that you generated earlier. * Click **Generate**, and then **Download** your certificate. It should be a `.cer` file. ### Create the p12 Certificate using Keychain Access * Open **Keychain Access** again. * Make sure your **login** keychain is visible. If it is not, then right click under **Keychains** and select **Add Keychain...**. [block:image] { "images": [ { "image": [ "https://files.readme.io/2vA6Ry3JSAywl2D6foPA_Screen%20Shot%202015-10-07%20at%2012.53.19%20PM.png", "Screen Shot 2015-10-07 at 12.53.19 PM.png", "1978", "1334", "#1f4c7c", "" ] } ] } [/block] * Then select the `login.keychain` file, which should exist in your home folder under `Library/Keychains/login.keychain`. [block:image] { "images": [ { "image": [ "https://files.readme.io/H8zxfmITRWyUXVWostNX_Screen%20Shot%202015-10-07%20at%2012.51.11%20PM.png", "Screen Shot 2015-10-07 at 12.51.11 PM.png", "2076", "1334", "#304564", "" ] } ] } [/block] * Click the **+** button at the bottom after selecting the **login** keychain and locate your downloaded `.cer` file. * After the certificate is imported into your keychain, we need to export it in a different format. Right click on your certificate and select **Export "..." ...**. [block:image] { "images": [ { "image": [ "https://files.readme.io/TtjkNRBFTiiTPqCmaJaG_Screen%20Shot%202015-10-07%20at%201.00.49%20PM.png", "Screen Shot 2015-10-07 at 1.00.49 PM.png", "1978", "1334", "#283b57", "" ] } ] } [/block] * Make sure **Personal Information Exchange (.p12)** is selected for **File Format**, and then hit **Save.** [block:image] { "images": [ { "image": [ "https://files.readme.io/VB6bxMUJT4y3Dk24DhAO_Screen%20Shot%202015-10-07%20at%201.07.10%20PM.png", "Screen Shot 2015-10-07 at 1.07.10 PM.png", "1978", "1334", "#2e4b6b", "" ] } ] } [/block] * You will be prompted to enter a password, which will be used to protect the exported certificate. Give it something you can remember! ### Create the p12 Certificate using OpenSSL Download your iOS certificate to the same directory as your private RSA key. We'll need it to create the `Certificate.p12` file. First, we need to change the format of the iOS certificate to PEM. [block:code] { "codes": [ { "code": "openssl x509 -inform DER -outform PEM -in ios_development.cer -out ios_development.cer.pem", "language": "shell" } ] } [/block] Now that the iOS certificate is in the proper format, we can create the `Certificate.p12` file. [block:code] { "codes": [ { "code": "openssl pkcs12 -export -inkey keyname.key -in ios_development.cer.pem -out Certificate.p12", "language": "shell" } ] } [/block] You will be prompted to enter a password, which will be used to protect the exported certificate. Give it something you can remember! ## Create a provisioning profile A provisioning profile authenticates your device to run the app that you're developing. Whether you're using an existing App ID or have created a new one, you're going to need to regenerate and install a Provisioning Profile. In this tutorial, we're going to create a new profile. * Select **Development** under **Provisioning Profiles**. [block:image] { "images": [ { "image": [ "https://files.readme.io/M8AKp5lQ9yKoLIoKla5A_Screen%20Shot%202015-10-07%20at%201.11.43%20PM.png", "Screen Shot 2015-10-07 at 1.11.43 PM.png", "2190", "1492", "#364e5c", "" ] } ] } [/block] * Select the **+** in the top-right of the screen to create a new iOS Provisioning Profile. * Select **iOS App Development** as your profile type, then select **Continue**. [block:image] { "images": [ { "image": [ "https://files.readme.io/KwYdg9RpyVKQgeWiKz8g_Screen%20Shot%202015-10-07%20at%201.13.33%20PM.png", "Screen Shot 2015-10-07 at 1.13.33 PM.png", "2190", "1492", "#d82221", "" ] } ] } [/block] * Select the App ID you registered previously, then select **Continue**. * Select the iOS development certificate you created previously, then select **Continue**. * You will now be asked which devices will be included in your provisioning profile. Select all of your development devices, then hit **Continue**. * Choose a descriptive name for the profile, then hit **Generate**. * Download the profile from the next screen with the **Download** button. [block:callout] { "type": "success", "body": "Congratulations! You now have a certificate file and a provisioning profile, which are used to attach iOS credentials to a security profile.", "title": "Success!" } [/block]