Initial commit 🚀
This commit is contained in:
commit
fd58a8d32f
235 files changed
+19775
No files matched your search
@@ -0,0 +1,52 @@
|
||||
import { Surface, Section, Container, Stack, Button, TextLink, Text } from 'ciphercell-homepage';
|
||||
|
||||
export const Primary = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={5} align="start">
|
||||
<Button href="/contact">Talk to us</Button>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const WithSecondary = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={4} align="start">
|
||||
<Button href="/cipherverifier">Explore CipherVerifier</Button>
|
||||
<TextLink href="/method">Explore the method</TextLink>
|
||||
<Text size="small" muted>A second action is a link, never a second button.</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const Small = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={5} align="start">
|
||||
<Button size="small">Copy the report</Button>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const OnNight = () => (
|
||||
<Surface tone="night">
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={4} align="start">
|
||||
<Button href="/contact">Talk to us</Button>
|
||||
<Text size="small" muted>On a night surface the button inverts itself.</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,37 @@
|
||||
import { Surface, Section, Container, Grid, Col, Stack, Heading, Text } from 'ciphercell-homepage';
|
||||
|
||||
export const Offset = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Grid>
|
||||
<Col span={8}>
|
||||
<Heading>Four stages. One method.</Heading>
|
||||
</Col>
|
||||
<Col span={5} start={8}>
|
||||
<Text measure>
|
||||
Threat analysis, engineering, verification and monitoring run alongside your development.
|
||||
</Text>
|
||||
</Col>
|
||||
</Grid>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const FullWidth = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Grid>
|
||||
<Col>
|
||||
<Stack gap={4}>
|
||||
<Heading level={3}>A block across all twelve columns.</Heading>
|
||||
<Text muted>Twelve is the default, so span may be left out.</Text>
|
||||
</Stack>
|
||||
</Col>
|
||||
</Grid>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,17 @@
|
||||
import { Surface, Section, Container, Stack, Heading, Text, Rule } from 'ciphercell-homepage';
|
||||
|
||||
export const Default = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={5}>
|
||||
<Heading level={3}>Talk to us.</Heading>
|
||||
<Text measure muted>
|
||||
The page margins and the maximum page width both come from the Container.
|
||||
</Text>
|
||||
<Rule />
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,26 @@
|
||||
import { Surface, Section, Container, Stack, Display, Text } from 'ciphercell-homepage';
|
||||
|
||||
export const Hero = () => (
|
||||
<Surface tone="night">
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Display>
|
||||
Security for the software<br />everything else runs on.
|
||||
</Display>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const OnPaper = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={5}>
|
||||
<Display as="p">CipherVerifier.<br />Every finding, verified.</Display>
|
||||
<Text muted>Set as a paragraph, because the page heading is elsewhere.</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,17 @@
|
||||
import { Surface, Section, Container, Stack, Eyebrow, Heading, Text } from 'ciphercell-homepage';
|
||||
|
||||
export const AboveHeadline = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={3}>
|
||||
<Eyebrow>Insights</Eyebrow>
|
||||
<Heading>What a verification report owes you.</Heading>
|
||||
<Text measure muted>
|
||||
The eyebrow names the section. It is sentence case, and never set in all caps.
|
||||
</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,53 @@
|
||||
import { Surface, Section, Container, Grid, Col, Stack, Heading, Text, TextLink } from 'ciphercell-homepage';
|
||||
|
||||
export const Asymmetric = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Grid>
|
||||
<Col span={7}>
|
||||
<Heading>Security is built in,<br />not bolted on.</Heading>
|
||||
</Col>
|
||||
<Col span={4} start={9}>
|
||||
<Stack gap={5} align="start">
|
||||
<Text measure>
|
||||
We model real adversaries and build zero trust into the architecture rather than
|
||||
around it.
|
||||
</Text>
|
||||
<TextLink href="/about">About CipherCell</TextLink>
|
||||
</Stack>
|
||||
</Col>
|
||||
</Grid>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const Thirds = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Grid>
|
||||
<Col span={4}>
|
||||
<Stack gap={3}>
|
||||
<Heading level={3}>Private 5G</Heading>
|
||||
<Text size="small" muted>Open interfaces, many vendors.</Text>
|
||||
</Stack>
|
||||
</Col>
|
||||
<Col span={4}>
|
||||
<Stack gap={3}>
|
||||
<Heading level={3}>Critical networks</Heading>
|
||||
<Text size="small" muted>Where a breach stops production.</Text>
|
||||
</Stack>
|
||||
</Col>
|
||||
<Col span={4}>
|
||||
<Stack gap={3}>
|
||||
<Heading level={3}>Cloud-native</Heading>
|
||||
<Text size="small" muted>Security that runs as code.</Text>
|
||||
</Stack>
|
||||
</Col>
|
||||
</Grid>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,35 @@
|
||||
import { Surface, Section, Container, Stack, Heading, Text } from 'ciphercell-homepage';
|
||||
|
||||
export const SectionHeadline = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Heading>Verifiable, not asserted.</Heading>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const Levels = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={6}>
|
||||
<Heading>Four stages. One method.</Heading>
|
||||
<Stack gap={3}>
|
||||
<Heading level={3}>Threat analysis</Heading>
|
||||
<Text measure muted>
|
||||
Automated analysis of real attack paths, running inside your pipeline.
|
||||
</Text>
|
||||
</Stack>
|
||||
<Stack gap={3}>
|
||||
<Heading level={3}>Verification</Heading>
|
||||
<Text measure muted>
|
||||
Independent review of code and security measures, hardening and testing.
|
||||
</Text>
|
||||
</Stack>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,23 @@
|
||||
import { Surface, Section, Container, Prose } from 'ciphercell-homepage';
|
||||
|
||||
export const Insight = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Prose>
|
||||
<h2>What a verification report owes you</h2>
|
||||
<p>
|
||||
A finding without its reasoning is an opinion. Every verdict in a CipherVerifier report
|
||||
carries the file, the line and the argument that produced it.
|
||||
</p>
|
||||
<ul>
|
||||
<li>The analyser that raised it</li>
|
||||
<li>The verdict, and how certain it is</li>
|
||||
<li>The fix we would ship</li>
|
||||
</ul>
|
||||
<blockquote>Verifiable, not asserted.</blockquote>
|
||||
</Prose>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,26 @@
|
||||
import { Surface, Section, Container, Stack, Rule, Heading, Text } from 'ciphercell-homepage';
|
||||
|
||||
export const BetweenItems = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={5}>
|
||||
<Stack gap={3}>
|
||||
<Heading level={3}>Threat analysis</Heading>
|
||||
<Text size="small" muted>Threat model, attack paths, CI/CD integration.</Text>
|
||||
</Stack>
|
||||
<Rule />
|
||||
<Stack gap={3}>
|
||||
<Heading level={3}>Engineering</Heading>
|
||||
<Text size="small" muted>Zero trust, key management, secure APIs.</Text>
|
||||
</Stack>
|
||||
<Rule />
|
||||
<Stack gap={3}>
|
||||
<Heading level={3}>Verification</Heading>
|
||||
<Text size="small" muted>Independent review, hardening, testing.</Text>
|
||||
</Stack>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,57 @@
|
||||
import { Surface, Section, Container, Stack, Heading, Text } from 'ciphercell-homepage';
|
||||
|
||||
export const Default = () => (
|
||||
<Surface>
|
||||
<Section>
|
||||
<Container>
|
||||
<Stack gap={5}>
|
||||
<Heading>Who we work with</Heading>
|
||||
<Text measure muted>Operators, integrators and the people who run critical networks.</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const Tight = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={4}>
|
||||
<Heading level={3}>In numbers.</Heading>
|
||||
<Text measure muted>A subordinate band carries less air than a full section.</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const Intro = () => (
|
||||
<Surface>
|
||||
<Section spacing="intro">
|
||||
<Container>
|
||||
<Stack gap={5}>
|
||||
<Heading>Insights</Heading>
|
||||
<Text measure muted>
|
||||
Notes on software security in private 5G, critical networks and the systems that run them.
|
||||
</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const Night = () => (
|
||||
<Surface>
|
||||
<Section tone="night">
|
||||
<Container>
|
||||
<Stack gap={5}>
|
||||
<Heading>Where we come from.</Heading>
|
||||
<Text measure muted>
|
||||
CipherCell grew out of Open RAN security research at the University of Passau.
|
||||
</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,45 @@
|
||||
import { Surface, Section, Container, Stack, Heading, Text, Button } from 'ciphercell-homepage';
|
||||
|
||||
export const Default = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={5}>
|
||||
<Heading>Four stages. One method.</Heading>
|
||||
<Text measure>
|
||||
Threat analysis, engineering, verification and monitoring, applied to your software as
|
||||
one continuous method rather than four separate projects.
|
||||
</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const Tight = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={2}>
|
||||
<Text size="small" muted>Threat analysis</Text>
|
||||
<Text size="small">Threat model</Text>
|
||||
<Text size="small">Attack paths</Text>
|
||||
<Text size="small">CI/CD integration</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const AlignStart = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={5} align="start">
|
||||
<Text measure muted>A button should keep its natural width.</Text>
|
||||
<Button href="/contact">Talk to us</Button>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,32 @@
|
||||
import { Surface, Section, Container, Stack, Heading, Text, Button } from 'ciphercell-homepage';
|
||||
|
||||
export const Paper = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={5}>
|
||||
<Heading>Security is built in,<br />not bolted on.</Heading>
|
||||
<Text measure>
|
||||
Infrastructure is software now. Every interface between components is an attack surface.
|
||||
</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const Night = () => (
|
||||
<Surface tone="night">
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={5} align="start">
|
||||
<Heading>Four stages.<br />One method.</Heading>
|
||||
<Text measure muted>
|
||||
Threat analysis, engineering, verification and monitoring, applied as one method.
|
||||
</Text>
|
||||
<Button href="/cipherverifier">Explore CipherVerifier</Button>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,41 @@
|
||||
import { Surface, Section, Container, Stack, Text } from 'ciphercell-homepage';
|
||||
|
||||
export const Measured = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Text measure>
|
||||
Infrastructure is software now. Private 5G networks, industrial control systems and cloud
|
||||
platforms are assembled from the code and components of many vendors. Every interface
|
||||
between them is an attack surface, and off-the-shelf tools were not built for that.
|
||||
</Text>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const Muted = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Text measure muted>
|
||||
CipherCell is a security engineering company for software. From the first threat model to
|
||||
the running system.
|
||||
</Text>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const Small = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={3}>
|
||||
<Text size="small">Threat model, attack paths, CI/CD integration.</Text>
|
||||
<Text size="small" muted>Passau, Innstr. 43</Text>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
@@ -0,0 +1,26 @@
|
||||
import { Surface, Section, Container, Stack, TextLink, Text } from 'ciphercell-homepage';
|
||||
|
||||
export const Standalone = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Stack gap={5} align="start">
|
||||
<TextLink href="/method">Explore the method</TextLink>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
|
||||
export const InSentence = () => (
|
||||
<Surface>
|
||||
<Section spacing="tight">
|
||||
<Container>
|
||||
<Text measure>
|
||||
Every finding is verified twice. The pipeline is described in{' '}
|
||||
<TextLink href="/cipherverifier">the CipherVerifier notes</TextLink>.
|
||||
</Text>
|
||||
</Container>
|
||||
</Section>
|
||||
</Surface>
|
||||
);
|
||||
Reference in new issue
Block a user